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



Teraz jest 13 lut 2025, o 09:33


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 21 paź 2013, o 01:22 
Offline
Nowy

Dołączył(a): 21 paź 2013
Posty: 3
Pomógł: 0

Witam. Jest to mój pierwszy post na Waszym forum także proszę o wyrozumiałość jeśli coś pokręciłem. Z góry zaznaczam, że moja przygoda z C dla AVR dopiero się zaczyna i to po przesiadce z Bascom-a. Ciężko "zaskoczyć" ;)

Mam kłopot z wyświetleniem aktualnej wartości TCNT0 na wyświetlaczu.
Przy próbie kompilacji otrzymuję komunikat:
"passing argument 1 of 'LCD_WriteText' makes pointer from integer without a cast"

Zmiana LCD_WriteText na LCD_WriteData powoduje iż powyższy błąd nie występuje ale oczywiście na wyświetlaczu pojawia się nie to czego oczekuję, a spodziewam się wartości licznika 0-255.
Z tego co pamiętam w Bascom-ie nie było z tym kłopotów dlatego proszę o wytłumaczenie (jak krowie na rowie) dlaczego tak się dzieje i jak temu zaradzić.

Kod programu:

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



Poza wyświetlaniem wartości licznika reszta działa tak jak chciałem. Proszę wybaczyć, jeśli w kodzie programu coś źle opisałem. Staram się na początku nauki wszystko opisywać. Mam nadzieję, że poprawnie.
Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 paź 2013, o 07:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 25 maja 2012
Posty: 296
Lokalizacja: Chebzie Dolne
Zbananowany użytkownik

Pomógł: 6

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


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

_________________
Inspekcja TV kanalizacji
Programowanie



Ostatnio edytowano 21 paź 2013, o 07:44 przez developer85, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 paź 2013, o 07:44 
Offline
Moderator
Avatar użytkownika

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

Nie wiem wprawdzie jakich bibliotek do LCD używasz ale chyba na pewno nie z bluebooka, to jednak widać że raczej nie opanowałeś jeszcze podstaw C bo próbujesz robić coś takiego:

LCD_WriteText(licznik);

podczas gdy licznik to u ciebie zmienna liczbowa i to jeszcze stosujesz typ unsigned char ....

Ta funkcja LCD_WriteText() z samej nazwy widać, że potrzebuje argumentu w postaci wskaźnika na łańcuch tekstowy a nie zmiennej liczbowej.

Musiałbyś zobaczyć czy w tej swojej bibliotece nie masz jakiejś funkcji typu: LCD_WriteInt() albo coś podobnego ...

Ale żeby wytłumaczyć ci jak to działa i dlaczego ? to hmmmm trzeba by dużo napisać o korzystaniu z tablic, powiedzieć o typach zmiennych w C, powiedzieć o wskaźnikach no i w ogóle opowiedzieć jak działają tego typu biblioteki ....

tymczasem widać, że raczej nie masz pod ręką bluebooka ? zgadza się ?

dlatego polecam ci zaczynać przygodę z C właśnie z tą książką

http://atnel.pl/mikrokontrolery-avr-jezyk-c.html

wtedy przesiadka z Bascoma będzie duuuuużo dużo łatwiejsza - zobaczysz ;)

------------------------ [ Dodano po: kilkunastu sekundach ]

o a do tego ... słusznie kolega wyżej zauważył - nie wiesz także o co chodzi w podziale projektu na pliki ..... *.c i *.h .... a wszystko to masz w książce.

_________________
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: 21 paź 2013, o 08:06 
Offline
Nowy

Dołączył(a): 21 paź 2013
Posty: 3
Pomógł: 0

Jeszcze raz proszę o wybaczenie ale to dopiero mój 4 dzień z C, także robię co mogę we własnym zakresie.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
ponieważ kompilator zgłaszał błędy kiedy próbowałem prawidłowo dołączyć plik nagłówkowy HD44780.h

"undefined reference to `LCD_Clear'
undefined reference to `LCD_Home'
undefined reference to `LCD_Initalize'
undefined reference to `LCD_WriteCommand'"

Bibliotekę pobrałem pierwszą lepszą jak to się mówi, którą widziałem w innych projektach, ale... Być może nie nadaje się do takich celów.
Starałem sam dojść do tego o co chodzi z tymi wskaźnikami o których mowa w błędzie ale chyba to za wysokie progi jeszcze dla mnie.
No nic... Póki co dziękuję za odpowiedzi.

P.S. Mirku o książce już myślałem ale skoro tak prosta (wydawało by się) sprawa jak wyświetlenie stanu licznika na LCD, jest tak skomplikowana to znowu zaczynam powątpiewać czy dobrze robię podchodząc do tego C.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 paź 2013, o 09:06 
Offline
Użytkownik

Dołączył(a): 19 gru 2012
Posty: 712
Lokalizacja: Opole
Pomógł: 23

Uwierz mi to jest proste jak korzystasz z dobrze napisanych i wytłumaczonych bibliotek. W twoim wypadku chyba trafiłeś na jakąś kiepską. z Czystym sumieniem polecam Mirkowe biblioteki dołączone do książki działają od strzała. Wszystkie projekty realizuje na tej bibliotece i nie ma żadnych problemów.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 paź 2013, o 09:48 
Offline
Moderator
Avatar użytkownika

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

zabex napisał(a):
Mirku o książce już myślałem ale skoro tak prosta (wydawało by się) sprawa jak wyświetlenie stanu licznika na LCD, jest tak skomplikowana to znowu zaczynam powątpiewać czy dobrze robię podchodząc do tego C


No ale zobacz sam sobie troszkę zaprzeczasz - bo skąd możesz wiedzieć i oceniać czy to jest proste czy nie - jeśli nie znasz w ząb podstaw języka C, a zabierasz się za jego naukę od tyłu ... no bo jak to inaczej nazwać ?

po prostu ty na razie próbujesz działać na zasadzie porównań Bascoma do C. Czyli znalazłeś jakąś tam bibliotekę do LCD (nie ważne czy dobra czy zła - myślę nawet że dobra) tylko, że nie potrafisz się nią na tą chwilę kompletnie posłużyć tak od strony C .... bo wydaje się tobie że to powinno działać co najmniej podobnie jak w bascomie czyli

LCD "ala i as"

albo

LCD zmienna

zgadza się ?

Bascom sam za ciebie zadba o typy i powoduje że człowiek się nieco rozleniwia i nawet nie zaczyna nauki Bascoma od poznania typów jakie tam są .... a też powinien....

Tymczasem jeśli w C zaczyna się uczyć człowiek po kolei i jak się należy - to okazuje się że C jest nawet prostszy niż Bascom z taką książką. To nie jest moja opinia tylko wielu już czytelników ...

Ty oczywiście możesz uważać inaczej ....

ale obecne twoje podejście to troszkę tak jakbyś się chciał nauczyć języka chińskiego poprzez napisanie napisanie od razu wypracowania w tym języku ale bez poznania jego podstaw, znaków itp .... uważasz że tak można ?

_________________
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: 21 paź 2013, o 13:24 
Offline
Nowy

Dołączył(a): 21 paź 2013
Posty: 3
Pomógł: 0

Zgadzam się w 100%, że takie podejście nie jest zbyt rozsądne ale uwierz mi, że dla kompletnego laika jak ja przeczytanie dziesiątków poradników jak zaczynać, robi się straszny mętlik w głowie. Tym bardziej, że wiele funkcji można rozpisać na kilka sposobów. Co osoba to inne podejście.
Jestem typem samouka i staram się jakoś sam "załapać" o co w tym wszystkim chodzi. Oczywiście książka by pomogła ale chyba większego banana mam na ustach jeśli do czegoś sam dojdę.
Powyższy przykład nie jest pisany w stylu kopiuj wklej ale oparty na tym co między innymi wyczytałem w datasheet atmegi (timer, przerwania).
Być może (i pewnie tak jest) zbyt szybko chciałbym wiele rzeczy na raz opanować nie poskładając najpierw podstaw do kupy ale dla mnie (póki co) stawianie sobie celów i próba dążenia do nich sprawia mi więcej przyjemności niż kopiowanie czyjejś pracy.
Co do powyższego kodu... Biblioteka jest ok tyle, że do zwykłego wypisywania tekstu i bardzo podstawowych funkcji. Znalazłem inną dzięki której mogę wyświetlać wartość uint8_t i dzięki temu widzieć aktualną wartość TCNT0 na wyświetlaczu.

Temat można zamknąć.
Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 paź 2013, o 18:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 sie 2013
Posty: 199
Pomógł: 1

zabex napisał(a):
Jeszcze raz proszę o wybaczenie ale to dopiero mój 4 dzień z C, także robię co mogę we własnym zakresie.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
ponieważ kompilator zgłaszał błędy kiedy próbowałem prawidłowo dołączyć plik nagłówkowy HD44780.h

"undefined reference to `LCD_Clear'
undefined reference to `LCD_Home'
undefined reference to `LCD_Initalize'
undefined reference to `LCD_WriteCommand'"

Bibliotekę pobrałem pierwszą lepszą jak to się mówi, którą widziałem w innych projektach, ale... Być może nie nadaje się do takich celów.
Starałem sam dojść do tego o co chodzi z tymi wskaźnikami o których mowa w błędzie ale chyba to za wysokie progi jeszcze dla mnie.
No nic... Póki co dziękuję za odpowiedzi.

P.S. Mirku o książce już myślałem ale skoro tak prosta (wydawało by się) sprawa jak wyświetlenie stanu licznika na LCD, jest tak skomplikowana to znowu zaczynam powątpiewać czy dobrze robię podchodząc do tego C.


kup jakąs ksiażke do c++ /c albo poszukaj w google duzo wala sie tego ksiazek w sieci



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