a ja od siebie dodam, że poza oczywiście słusznymi uwagami kolegów wyżej, NAJWAŻNIEJSZE to nauczyć się jak TESTOWAĆ własny kod ....
bo jeśli piszesz, że masz x=3 a wyświetla ci się CAŁKIEM inna wartość z tej komórki tablicy to oznacza że robisz jakiegoś TRAGICZNEGO BABOLA ... i co ? a gdyby nie było forum to nie da się tego samemu sprawdzić ? No da się i to bardzo prosto albo chociaż zbliżyć się do problemu.
OCZYWIŚCIE ZAKŁADAM że ta twoja tablica TabPozytyw[] jest zdefiniowana w pamięci RAM ???? bo jeśli we FLASH - to robisz tego MEGA BABOLA o którym wyżej napisał kolega andrews - czyli nie stosujesz do odczytu pgm_read_byte()UWAGA!
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
i wywalasz na PORTB - i sprawdzasz czy się pokaże na PORTB binarnie liczba 17 .... No toż jeśli mi to zadziała to wiem, że bzdurnie myślałem, że źle tablice obsługuję, że coś nie rozumiem z tablicami - bo działa tak jak ma działać ... TAK czy NIE ?
Dzięki temu posunąłem się do przodu z rozwiązaniem zagadki bo wiem, że problem leży gdzie indziej w moim kodzie. TAK TAK wiem - to bardzo prosty i niektórzy powiedzą, że durny test - tymczasem niestety początkujące osoby NAWET takiego testu nie są w stanie wymyślić - więc go podpowiadam.
---------------------------------
ok ale co dalej ?
no to spójrzmy na ten kod z pierwszego postu
Cytuj:
uint8_t x = ram_cfg.poziom; // <----- tutaj przypisujesz wartość zmiennej x ze struktury ram_cfg.poziom .... załóżmy że była tam w ram_cfg.poziom wartość = 4
// no to teraz w tej sekcji - wartość ram_cfg.poziom zmieni ci załóżmy wartość na 6 bo załóżmy że STAN4_ON był wysoki
// pomijam już fakt, że tu powinny być wszędzie else po pierwszym IF'ie wg mnie
if(STAN0_ON)ram_cfg.poziom = 0;
if(STAN1_ON)ram_cfg.poziom = 1;
if(STAN2_ON)ram_cfg.poziom = 2;
if(STAN3_ON)ram_cfg.poziom = 3;
if(STAN4_ON)ram_cfg.poziom = 4;
if(STAN5_ON)ram_cfg.poziom = 5;
if(STAN6_ON)ram_cfg.poziom = 6;
if(STAN7_ON)ram_cfg.poziom = 7;
// <---- no i teraz czego się spodziewasz ??? jakiej wartości x ??? na pewno będzie to stara wartość jeszcze z przed tych IF'ów
PORTB = TabPozytyw[x];
lcd_locate(1,0);
lcd_int(x);
------------------------ [ Dodano po: 6 minutach ]a jeśli tablica TabPozytyw() - jest zdefiniowana we Flashu za pomocą PROGMEM to przecież MUSISZ pan to zrobić tak do PORTB
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
_________________
zapraszam na blog:
http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj
Kurs EAGLE ] [ mój kanał YT TV
www.youtube.com/mirekk36 ]