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



Teraz jest 15 lip 2026, o 16:19


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 2 lis 2014, o 21:54 
Offline
Nowy

Dołączył(a): 08 cze 2014
Posty: 5
Pomógł: 0

Witam, czy istnieje możliwość zapisywania/odczytywania zmiennych ujemnych z pamięci EEPROM?

W definicji funkcji widnieją liczby typu unsigned.

/** \ingroup avr_eeprom
Write a byte \a __value to EEPROM address \a __p.
*/
void eeprom_write_byte (uint8_t *__p, uint8_t __value);



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2014, o 22:10 
Offline
Nowy

Dołączył(a): 08 cze 2014
Posty: 5
Pomógł: 0

Czyli jak np w tej sytuacji, gdy potrzebuje zapisać wartość ujemną do pamięci EEPROM?

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Ostatnio edytowano 2 lis 2014, o 22:31 przez rafal2692, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2014, o 22:12 
Offline
Moderator
Avatar użytkownika

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

A pomyśl sobie co to jest liczba ujemna i czym się różni od dodatniej hmmm?

czytałeś o kodzie uzupełnień do dwóch ?

mała podpowiedź:

1. co to jest wg ciebie za liczba

0b11111111

pomyśl chwilę dobrze i postaraj się odpowiedzieć na to NIBY proste pytanie tu uda mi się ciebie naprowadzić żebyś raz na zawsze to zrozumiał ;)

------------------------ [ Dodano po: 1 minucie ]

Cytuj:
Czyli jak np w tej sytuacji, gdy potrzebuje zapisać wartość ujemną do pamięci EEPROM?


No panie - teraz to powiedz mi czy ty wiesz co to są w ogóle TYPY w C ... bo tworzysz zmienną typu "int" a próbujesz zapisać funkcją _byte

wiesz co to int ? jaki ma rozmiar ?

_________________
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: 2 lis 2014, o 22:18 
Offline
Nowy

Dołączył(a): 08 cze 2014
Posty: 5
Pomógł: 0

Racja, int to mamy 2 bajty..

a liczba 11111111 to -1 w kodzie uzupełnienia do dwóch, prawda?

Pytanie jak to teraz powinienem zamieścić w kodzie?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2014, o 23:37 
Offline
Moderator
Avatar użytkownika

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

rafal2692 napisał(a):
a liczba 11111111 to -1 w kodzie uzupełnienia do dwóch, prawda?

No dokładnie -1 w kodzie U2 ale 255 jako liczba bez znaku .... czyli od czego zależy w takim razie jaka to liczba dla kompilatora ? i ciebie ?

od typu .... bo zawartość binarna jak widzisz może być IDENTYCZNA ;)

więc tak jak pisał kolega wyżej można się posłużyć rzutowaniem

(uint8_t)zmienna

wtedy mówisz kompilatorowi - te koleś, weź mi zapisz tę wartość binarną w zmienna - jako typ uint8_t, wtedy nie będzie krzyczał warningiem że mu się nie zgadza - bo ty rzutowaniem mówisz mu co chcesz świadomie zrobić

i tak samo przy odczycie użyjesz sobie rzutowania tylko w drugą stronę (int8_t)


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: 3 lis 2014, o 00:00 
Offline
Nowy

Dołączył(a): 08 cze 2014
Posty: 5
Pomógł: 0

Okej, to stało się jasne. Ale jeszcze jedno pytanie:

w funkcji eeprom_read_byte(&zmienna) przekazuje przecież adres do zmiennej? Rozumiem że rzutowaniu podaje to co funkcja zwraca, czyli powinienem tak zapisać:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
?



Ostatnio edytowano 3 lis 2014, o 00:46 przez rafal2692, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2014, o 00:41 
Offline
Moderator
Avatar użytkownika

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

Dokładnie tak, .... tylko w kilku miejscach nieźle zmasakrowałeś te typy ;) przyjrzyj się im

uint_8
uint_t

;)

_________________
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: 3 lis 2014, o 00:47 
Offline
Nowy

Dołączył(a): 08 cze 2014
Posty: 5
Pomógł: 0

już poprawiłem ;) Dziękuję serdecznie za pomoc, kawałek pracy inż do przodu ;)



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: 8 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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