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



Teraz jest 22 maja 2026, o 09:52


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 25 kwi 2016, o 20:35 
Offline
Nowy

Dołączył(a): 10 wrz 2015
Posty: 14
Pomógł: 0

Witam.

Korzystając z wyświetlacza oled ssd1306 z bibliotekami Pana Mirka które są opisane w poradniku VIDEO oraz procesora atmega328p napotkałem się na następujący problem. Próbując wyświetlacz liczbę 32768, na wyświetlaczu pojawia się liczba -32768 czyli z zakresu int16_t.

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

następnie w funkcji głównej przypisuje na sztywno do tej zmiennej liczbę 32768
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W bibliotece funkcja za wyświetlanie liczby int32_t odpowiada funkcja:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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



A w pętli głównej liczba tą wyświetlam następująco:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Sprawdzałem czy funkcja itoa konwertuje na inny typy. kiedy zmieniłem w funkcji mk_ssd1306_put_long argument int32_t data na int8_t, to w tym przypadku na wyświetlaczu pojawiła się liczba z zakresu od -128 do 127.
Bardzo prosiłbym o jakieś sugestie jak mogę rozwiązać ten problem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 kwi 2016, o 20:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

itoa() zmień na ltoa() lub jak chcesz bez znaku to ultoa()


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 kwi 2016, o 20:58 
Offline
Nowy

Dołączył(a): 10 wrz 2015
Posty: 14
Pomógł: 0

Dziękuje bardzo za odpowiedz. Zmieniłem na ltoa() i wszystko pięknie działa.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 kwi 2016, o 09:24 
Offline
Użytkownik

Dołączył(a): 10 lip 2015
Posty: 334
Pomógł: 32

Wyświetliło ci z minusem, bo "przekręciłeś" liczbę. Typ int sięga maksymalnie do +32 767.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 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