Nefarious19 napisał(a):
znak=eeprom_read_byte( (uint8_t *)(str++) );
To jest jawne rzutowanie na typ wskaźnikowy uint8_t* , dlaczego zostało zastosowane ? No wystarczy sobie zajrzeć do nagłówka tej funkcji
Kod:
eeprom_read_byte (const uint8_t *__p)
i co widać ? jako argument MUSI być przekazany wskaźnik typu uint8_t, natomiast nasz wskaźnik str jest typu char. Żeby więc nie było warninga - robimy jawne rzutowanie i po zawodach.
Nefarious19 napisał(a):
if(!znak || znak==0xFF) break;
sam zauważyłeś że przy odczycie z innych pamięci sprawdza się tylko czy występuje ZERO, a tu jeszcze sprawdzamy czy jest znak 0xFF. Dlaczego ? .... ano dlatego że pewnie nie wiesz że akurat wykasowana pamięć EEPROM to wartości 0xFF a nie zera. Więc tak na wszelki wypadek dodałem sprawdzanie również 0xff . Dzięki temu gdyby jakiś string nie był zakończony zerem to i tak by się prawidłowo wyświetlił gdyby dalej za nim była pusta pamięć EEPROM. Pewnie że nie trzeba tego robić - ot taki przykład a przy okazji wyjaśnienie jak działa eeprom
_________________
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 ]