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



Teraz jest 22 mar 2026, o 16:49


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 6 cze 2015, o 21:47 
Offline
Użytkownik

Dołączył(a): 16 sty 2012
Posty: 78
Pomógł: 1

Wydawało mi się że z grubsza kumam mechanizm wyświetlania informacji na LCD przy wykorzystaniu bibliotek z bluebooka, ale jednak dupa ze mnie .... :D
Potrzebuję wyświetlać na LCD wartości dziesiętne rzędu 50000000, trzeba więc zastosować 32 bitowe liczby binarne.
Zmodyfikowałem lekko bibliotekę lcd44780.c która wykorzystuje gotową funkcję z biblioteki stdlib.h i zastąpiłem itoa() przez utoa().
Kompilator kod skompilował ale niestety zonk jest ....
Po wgraniu do flasha okazuje się że max wartość jaka jest wyświetlana na LCD to odpowiednik dziesiętny wartości 0xFFFF czyli 65535.
Szczerze mówiąc nie bardzo mogę znaleźć punkt zaczepienia ... więc proszę o pomoc i wyjaśnienie czemu to nie działa jak powinno ...
Poniżej wstawiam fragmenty kodu które biorą udział w kompilacji ....

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 cze 2015, o 21:57 
Offline
Moderator
Avatar użytkownika

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

funkcję dobrze przerobiłeś - ale pewnie, coś źle kombinujesz z jej wywołaniem- czyli nie pokazałeś najważniejszego co robisz w kodzie - jak przekazujesz argument. No i pytanie - czy zmieniłeś też nagłówek funkcji w pliku *.h ?

_________________
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: 6 cze 2015, o 22:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Funkcja utoa() konwertuje liczbę 16-bitową bez znaku. Dla liczb 32-bitowych powinieneś użyć funkcji ltoa() lub ultoa()
topic7663.html#p86608


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 cze 2015, o 22:31 
Offline
Użytkownik

Dołączył(a): 16 sty 2012
Posty: 78
Pomógł: 1

mirekk36 napisał(a):
funkcję dobrze przerobiłeś - ale pewnie, coś źle kombinujesz z jej wywołaniem- czyli nie pokazałeś najważniejszego co robisz w kodzie - jak przekazujesz argument. No i pytanie - czy zmieniłeś też nagłówek funkcji w pliku *.h ?


aaaaa rzeczywiście ... :D nie podałem najważniejszego czyli jak odpalam lont :D
nic bardzo ambitnego bo tylko próby na razie robię żeby sobie utrwalić materiał i wyrobić nawyki :

uint32_t val = 0xFFFFFFFF ;
lcd_int(val);


w *.h oczywiście zmieniłem nagłówek bo pierwsze co, to kompilator skoczył mi do gardła :

void lcd_int(uint32_t val);


Konwersja jest robiona przez utoa a nie zmieniłem na razie nazwy funkcji i dalej jest lcd_int() ale to tylko kosmetyka więc tym się nie zajmujemy .....
natomiast serio nie wiem czemu nie działa to prawidłowo i reszta jest "obcięta" .....


Jak dobrze opanuję wyświetlanie będzie się łatwiej przebijać bo będę mógł sobie kontrolnie wyświetlać na LCD stany czy wartości tych komórek jakie mnie interesują a tak jeszcze trochę się krece w kółko ....

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

jacekk232 napisał(a):
Funkcja utoa() konwertuje liczbę 16-bitową bez znaku. Dla liczb 32-bitowych powinieneś użyć funkcji ltoa() lub ultoa()
topic7663.html#p86608



czekaj czekaj ,,,, teraz mnie zastrzeliłeś .... muszę zajrzeć .... może i masz rację .... chwila ......

------------------------ [ Dodano po: 9 minutach ]

jacekk232 napisał(a):
Funkcja utoa() konwertuje liczbę 16-bitową bez znaku. Dla liczb 32-bitowych powinieneś użyć funkcji ltoa() lub ultoa()
topic7663.html#p86608



Jacek jesteś wielki :D a ja dupa .... rzeczywiście źle wpisałem funkcję ... chociaż dobrze zadeklarowałem liczbę ....
WYŚWIETLANIE DZIAŁA OK ! Daję "pomógł" ....

teraz jeszcze muszę wykombinować jak to zrobić żeby liczba była wyrównywana do prawej krawędzi bo trochę głupio wygląda po lewej stronie ,,,,



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