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



Teraz jest 31 sty 2025, o 19:04


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 76 ]  Przejdź na stronę Poprzednia strona  1, 2, 3  Następna strona
Autor Wiadomość
PostNapisane: 25 sie 2012, o 17:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Z tej noty---->http://atnel.pl/download/elektronika/atb_sch/schematy_atb.htm
wynika że wszystko powinno być ok. napis sie wyświetla a podświetlenie nie :(
Ok działa wszystko ok ufff - podłączyłem pin BKT do VCC



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sie 2012, o 19:57 
Offline
Moderator
Avatar użytkownika

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

kidcowboy napisał(a):
podłączyłem pin BKT do VCC


Podłączaj sobie do pinu procka i będziesz mógł sterować włączaniem i wyłączaniem podświetlenia ;)

------------------------ [ Dodano po: 2 minutach ]

Antystatyczny napisał(a):
Teraz już wiem, że chodzi o znak leżący pod adresem 0 w pamięci wyświetlacza. Domyślnie w C jest to znak NULL :D


tzn ja bym uściślił, nie chodzi tylko że on leży pod adresem zerowym w pamięci wyświetlacza, ale o to, że trzeba wysłać do wyświetlacza także kod znaku ZERO ;) ... innymi słowy mówiąc znak ASCII o kodzie 0, a to właśnie jak mówisz przerwałoby String ;)

_________________
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: 27 sie 2012, o 12:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Mam taki mały błąd otóż gdy próbuję wyświetlić na LCD liczbę szesnastkową to wyskakuje mi następujący błąd:
Cytuj:
**** Build of configuration Release for project 04_LCD ****

make all
Building file: ../main.c
Invoking: AVR Compiler
avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=8000000UL -MMD -MP -MF"main.d" -MT"main.d" -c -o"main.o" "../main.c"
In file included from ../main.c:10:
c:/winavr-20100110/lib/gcc/../../avr/include/avr/delay.h:36:2: warning: #warning "This file has been moved to <util/delay.h>."
Finished building: ../main.c

Building target: 04_LCD.elf
Invoking: AVR C Linker
avr-gcc -Wl,-Map,04_LCD.map -mmcu=atmega32 -o"04_LCD.elf" ./main.o ./LCD/lcd44780.o
./main.o: In function `main':
main.c:(.text+0xac): undefined reference to `lcd_hex'
make: *** [04_LCD.elf] Error 1

A kod jest taki :
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: 27 sie 2012, o 12:20 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Nie znajduje funkcji lcd_hex.
Masz jeszcze warrninga używaj #include <util/delay.h>

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sie 2012, o 12:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

wgranie tej biblioteki do pliku main.c nie powoduje "skasowania warninga" -dalej występuje



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sie 2012, o 12:42 
Offline
Użytkownik

Dołączył(a): 20 mar 2012
Posty: 159
Pomógł: 6

W pliku "lcd44780.h" masz ustawienia kompilacji a w nim linijkę:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Zmień "0" na "1" i zrób kompilację wszystko wróci do normy.

Po prostu domyślnie ta funkcja jest wyłączona z kompilacji.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sie 2012, o 12:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Fakt, nie zauważyłem



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sie 2012, o 14:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Nie chcę być mądrzejszy od kury ale wydaje mi się że w książce przy opisie trybu pracy LCD (str. 215) przy definicjach funkcji jest zrobiony "przeskok myślowy" i trudno się operuje pomiędzy komputerem a książką dlatego zamieszczam mój rysunek z objaśnieniem - może się komuś przyda
Obrazek

P.S Dobrze żeby Mirek albo SunRiver rzucili na to okiem



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sie 2012, o 18:17 
Offline
Moderator
Avatar użytkownika

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

No ale na czym polega ten przeskok myślowy ? ;) .... ja przyznam szczerze, że zdecydowanie bardziej przyzwyczaiłem się do tych tabelek z not PDF od wyświetlaczy i z tej proponowanej przez kolegę nic nie widzę ;) ... wniosek jest jeden - każdemu może pasować co innego - i jak kolega zrobił taką tabelę i lepiej się z niej czyta to ok ...

tylko tak się zastanawiam do czego i kiedy kolega będzie używał tej tabeli ? ;) to jest ciekawe .... bo zwykle tworzy się funkcje biblioteczne, które wykorzystają po kolei z tych komend i co ? po co dalej tam wciąż zaglądać na co dzień gdy się korzysta z bibliotek ? próbował o tym kolega tak pomyśleć ? ;)

_________________
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: 27 sie 2012, o 19:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Tzn. tak... trochę trudno patrzy mi się w pliku "lcd44780.h" na komendę zapisywaną do wyświetlacza :
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

bo patrząc na moją tabelkę widzę od razu że jest to ustawienie bitów D2 i D1 - łatwiej mi to tak ogarnąć.

P.S. hahaha Tematu nie zamykam - jeszcze pewnie jakieś pytanie będę miał - sorry za moją upierdliwą naturę ale chce to zrozumieć raz a dobrze :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sie 2012, o 22:20 
Offline
Moderator
Avatar użytkownika

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

kto pyta nie błądzi. A ja nie twierdzę że sposób który zaprezentowałem jest najlepszy na świecie. wręcz przeciwnie gorąco właśnie namawiam do tworzenia takich własnych wersji, które się później lepiej rozumie. Toż to jest właśnie myśl przewodnia moich książek. Więc to żadna upierdliwość a ja się cieszę że są tacy ludzie, którzy w ten sposób do tego podchodzą. Bo znowu - o to też mi chodziło a nie żeby potraktować biblioteki szczególnie z pierwszej książki jako gotowe rozwiązania. Z drugiej już można, ale w pierwszej można powiedzieć, że to są często wersje dydaktyczne.

_________________
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: 28 sie 2012, o 00:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Takie pytanko - w drugiej linii po wyrazie "Ptabyk"
Wyświetla się PtabykD - dlaczego ? - przed pętlą while jest cls() - więc wyświetlacz powinien być wyczyszczony .
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: 28 sie 2012, o 19:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Nikt nie ma żadnych pomysłów ??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sie 2012, o 20:13 
Offline
Moderator
Avatar użytkownika

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

Ja nie tylko mam pomysł ale nawet wiem co źle robisz - tyle że tak prostą rzecz sam powinieneś na tym etapie rozwikłać. Najbardziej mnie dziwi, nie to że nie wiesz załóżmy skąd to D ..... ale że nie masz żadnych pomysłów jak to przetestować :(

Więc może popróbuj jeszcze chwilę samodzielnie bo aż ci się głupio zrobi jak zobaczysz o co chodziło ;)

ale jak nie dasz rady to daj znać - ;) podam wskazówkę - ale nie o co chodzi tylko co ja bym sprawdził na twoim miejscu żeby dojść do babola.

_________________
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: 28 sie 2012, o 20:49 
Offline
Moderator
Avatar użytkownika

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

Fajnie zauważyłeś babola z tym <avr/delay ;) ....

ale zmienne dowolnego typu można inkrementować bez obaw w nieskończoność ;) nic się nie stanie poza tym że licznik się przekręci i będzie lecieć od ZERA

_________________
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: 28 sie 2012, o 21:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

OK doszedłem do tego że to "D" jak "DEC" które występuje w pierwszej linii (0,0), hmmmm ,a to oznacza że zawartość "jakimś cudem" ustawiła się na końcu drugiej linii :) teraz myślę nad cudem ale wpierw 20 pompek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sie 2012, o 21:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

Panie kochany tu nie ma cudów ............ przemyśl w którym miejscu ustawia ci się kursor na wyświetlaczu od włączenia uC a później prześledź ze dwa okrążenia pętli while ........... i wszytsko będzie jasne ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sie 2012, o 21:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Cytuj:
Panie kochany tu nie ma cudów ............

dlatego napisałem "jakimś cudem"
Najpierw w pozycji (0,0) -> (1,0) - >(1,1) - jeśli pousuwam "DEC" i "HEX" czyli na końcu drugiej linii



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sie 2012, o 21:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

Luzik ;) ( nie zauważyłem tych " " )
Szczele sobie za karę ze dwa przysiady ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sie 2012, o 21:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Spoko ale czemu tak robi nie wiem - "pomroczność jasna" mnie dopadła :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sie 2012, o 21:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

To zrób jak ci mówię ....... włącza się uC wpada do main i gdzie się ustawia kursor ? następnie wpada do while ( caly czas licz gdzie sie przesuwa kursor) coś robi. Teraz weź jeszcze raz prześledź while ale z zapamiętanym "ustawieniem" kursora po pierwszym przebiegu while.

Mógłbym od razu napisać co musisz zrobić, ale przecież nie na tym sztuka polega ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sie 2012, o 21:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Kursor się przesuwa a zawartość zostaje



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sie 2012, o 21:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

:) ale licz sobie na jakiej pozycji w danym momencie się znajduje (bo to jest w tym przypadku bardzo ważne), żeby było krócej licz od lcd_cls włącznie ;)

Problem jest tak oczywisty że jak go w końcu zauważysz to aż się w głowę pukniesz ;) (znam to za autopsji )


Edit:
Ehhh ... i pocałej zabawie ;)


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sie 2012, o 22:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Właśnie znalazłem sam hehe brakowało na początku określenia pozycji (0,0) dla "DEC" ja nie mogę takiej "blachy w czoło sobie już dawno nie strzeliłem... po :
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
ponieważ jest pętla while() to po pierwszym wykonaniu "DEC" ustawia się też na końcu drugiej linii bo wywołanie stringa jest a lokalizacji ni ma



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sie 2012, o 22:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sie 2012, o 04:53 
Offline
Moderator
Avatar użytkownika

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

kidcowboy napisał(a):
ja nie mogę takiej "blachy w czoło sobie już dawno nie strzeliłem...


Hyhyhyhy tylko nie za mocno bo pomroczność jasna nastąpi na dużo dłużej ;) a jeszcze będzie sporo do myślenia. A o tym babolu pisałem na samym początku ;)

_________________
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: 1 wrz 2012, o 14:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

na stronie 210 - funkcja przesyłająca bajt. Argumentem funkcji jest zmienna _data typu char. Teraz jak mamy wysyłanie komendy:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

do funkcji zapisu bajtu zostaje wysłany argument typu uint8_t i teraz w funkcji
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

zostaje on zamieniony na char ?? A pytanie dlaczego ? Czy może jest to bez znaczenia bo char_data i uint8_t cmd zmienne mają po 8 bitów ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 wrz 2012, o 09:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

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

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

A jeśli nie to dlaczego ?? Rozumiem że char służy domyślnie do przechowywania znaków alfanumerycznych ale także do przechowywania liczb.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 wrz 2012, o 12:13 
Offline
Moderator
Avatar użytkownika

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

GwynBleidD napisał(a):
Jak najbardziej jest to zapis równoznaczny. Typ char wcale nie służy wyłącznie do znaków, ale też do liczb normalnych. Właściwie nie ma różnicy co do niego wrzucisz, a że do znaków się ładnie nadaje to tam jest wykorzystywany :)


Ja tylko uzupełnię, że jeśli uczymy się języka AVR GCC a jednocześnie chcemy "uprawiać DOBRY styl programowania" to

PO PIERWSZE typu char - będziemy używać TYLKO i wyłącznie wtedy gdy będziemy korzystali z operacjach na kodach ASCII czyli na znakach


PO DRUGIE - jeśli będziemy powoływać zmienne na potrzeby przechowywania jakichś liczb a potrzebujemy 1-go gabjto to korzystajmy TYLKO i WYŁĄCZNIE z typów

Kod:
uint8_t
int8_t



PO TRZECIE - domyślnie AVR GCC w procesie kompilacji zamienia

unsigned char na samo char

zatem nie bawmy się we wpisywanie

Kod:
unsigned char


piszmy ZAWSZE

Kod:
char


NADMIENIĘ że to wszystko co wyżej napisałem nie jest związane tylko ze stylem dobrego programowania ale jeszcze dodatkowo niejedna osoba "SIĘ PRZEJEDZIE jak zabłocki na mydle" jeśli nie posłucha tych porad ;)

zatem pisanie takiego kodu w AVR GCC

Kod:
char i;
for( i=0; i<10; i++ ) .....


chodzi mi tu o użycie char zamiast uint8_t zgodnie z tym co pisałem wyżej to jest MASAKRA !!!!!!

_________________
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 wrz 2012, o 12:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Wszystko co Mirek napisał się zgadza i się do tego stosuję ale poszukuję odpowiedzi dlaczego użyto
:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

Bo np. jak przesyłamy komendę to rzutujemy typ uint8_t na char



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: 76 ]  Przejdź na stronę Poprzednia strona  1, 2, 3  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

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