Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 7 lut 2025, o 05:56


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 15 lut 2014, o 23:43 
Offline
Użytkownik

Dołączył(a): 22 sty 2014
Posty: 1806
Zbananowany użytkownik

Pomógł: 168

.



Ostatnio edytowano 1 mar 2019, o 14:14 przez Nefarious19, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lut 2014, o 00:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Witam
O ile dobrze to interpretuje to
za pomocą "!znak" sprawdzany jest koniec stringa (string kończy się znakiem '0')
a przez porównanie z "0xFF" sprawdzamy czy nie weszliśmy już poza obszar w
którym zapisane są dane w pamięci EEprom
(przy kasowaniu ww. pamięci jest ona zapisywana wartością 0xFF) czyli nie zapisane
przez nas komórki pamięci powinny mieć wartość 0xFF

Ja tak to rozumie ale możliwe że się mylę też się uczę :)


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lut 2014, o 08:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 24 cze 2012
Posty: 414
Lokalizacja: Oborniki
Pomógł: 5

W tym uint chodzi o to, ze odwolujesz sie do wskaznika zmiennej 8 bitowej. Zawile to wyglada, ale jest to jakby rzutowanie na 8bitowy wskaznik do zmiennej str w pamieci eeprom. Tak mi sie przynajmniej wydaje :)Nie bylo to na pewno opisane w ksiazce??

Wysłane z mojego GT-I9500 przy użyciu Tapatalka


Autor postu otrzymał pochwałę

_________________
Pozdrawiam:
Mikołaj



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lut 2014, o 10:21 
Online
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27354
Lokalizacja: Szczecin
Pomógł: 1042

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


Autor postu otrzymał pochwałę

_________________
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 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lut 2014, o 12:58 
Offline
Użytkownik

Dołączył(a): 22 sty 2014
Posty: 1806
Zbananowany użytkownik

Pomógł: 168

.



Ostatnio edytowano 1 mar 2019, o 14:14 przez Nefarious19, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lut 2014, o 13:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Nikt ci wybaczac nie musi bo nie ma czego. Przynajmniej i ja sie czegos nowego nauczylem o eepromach :)

Wysłane z telefonu


Autor postu otrzymał pochwałę

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO