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



Teraz jest 24 gru 2024, o 14:39


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 
Autor Wiadomość
PostNapisane: 10 lis 2013, o 21:11 
Offline
Nowy

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

Witam :) mam problem z wyświetlaczem hd44780. Mianowicie mam programik który co sekundę wyświetla na owym wyświetlaczu mierzone dane. Po uruchomieniu programu jest wszystko ładnie pięknie, ale po kilku sekundach na ekranie dzieją się dziwne rzeczy. Już tłumaczę: dane wyświetlane na dolnej linii, po części wyświetlane są na górnej, wyświetlane są znaki zapytania, strzałki, "krzaki", zmienia się kontrast wyświetlacza na ciemniejszy (kręcąc potencjometrem można ustawić by wyświetlane znaki były widoczne), włącza się kursor z miganiem(co domyslnie jest wylączone) ale najdziwniejsze jest to, że kursor jakby się rozciąga do połowy dolnej linii, o tak:
ObrazekObrazek

moje pytanie:
w projekcie korzystam z bibliotek (lekko zmodyfikowanych) Pana Mirka, do oblsugi UART, wyswietlaczy 7segmentowych oraz do wyswietlacza hd44780.
Co właściwie może być przyczyną takiego zachowania? błąd na płytce drukowanej? Możliwe jest tu przepełnienie stosu?(chyba nie, Program (19.2% Full) Data: (18.0% Full)) nie wywołuję funkcji do obslugi wyswietlacza w procedurach obsługi przerwań, tylko w pętli głównej w timerze programowym co sekundę. Czy to może uszkodzony wyswietlacz? Wiem, że bez kodu ciężko coś zweryfikować, mogę wysłać za jakiś czas bo ciągle nad tym pracuję ale może po prostu są to jakieś charakterystyczne objawy



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lis 2013, o 21:21 
Offline
Użytkownik

Dołączył(a): 19 lip 2012
Posty: 86
Lokalizacja: Lublin
Pomógł: 3

1) Daj schemat płytek.
2) Daj kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lis 2013, o 21:37 
Offline
Nowy

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

załączam plik main.c , pozostałe biblioteki są każdemu dobrze znane ;)

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


edytowany kod biblioteki do obsługi wyświetlaczy 7segmentowych oraz licznika programowego :
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.




i jeszcze dodam, że co jakiś czas na chwilę wszystko wyświetla się prawidłowo, by za chwilę znowu się popsuć heh



Ostatnio edytowano 10 lis 2013, o 22:16 przez egemini, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lis 2013, o 22:00 
Offline
Użytkownik

Dołączył(a): 19 lip 2012
Posty: 86
Lokalizacja: Lublin
Pomógł: 3

1) Daj schemat płytki nie wygląd :-p

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


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


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


Kiedy się kończy pętla i czy w ogóle się kończy?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lis 2013, o 22:03 
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 możesz tak wysyłać 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 bufor[x] nie jest łańcuchem znaków, bo nie jest zakończony '\0'. Chyba, że to zmienisz:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


------------------------ [ Dodano po: 4 minutach ]

kazzik87 napisał(a):
Ładniej jest:
Składnia: [ Pobierz ] [ Ukryj ]
język c
void wstaw_w_bufor(tekst,uint8_t x,uint8_t y)

Tak nie zadziała, ale słuszna uwaga. Tą funkcję lepiej napisz z użyciem wskaźnika.

_________________
Dragonus Cracovus: Biomagia



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

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

kazzik87 napisał(a):
Nie rozumiem tego:
Składnia: [ Pobierz ] [ Ukryj ]
język c
while(tekst[i])
GeSHi


Kiedy się kończy pętla i czy w ogóle się kończy?



skończy, na końcu tablicy jest null.
Krauser napisał(a):
Tą funkcję lepiej napisz z użyciem wskaźnika

właśnie znalazłem jakiś przykłąd funkcji z użyciem wskaźnika gdzieś w komentarzu na blogu mirekk36.blogspot.com i mi nie działało więc zrobiłem tak i jednak działa o.O
Krauser napisał(a):
bo nie jest zakończony '\0'. Chyba, że to zmienisz:

racja, zmieniłem, nie pomogło ;p



Ostatnio edytowano 24 lis 2013, o 21:08 przez egemini, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lis 2013, o 22:33 
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

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

Trzeba tylko dodać prototyp, a używa się tak samo. Dodałem zabezpieczenie przed wyjściem poza tablicę. Jak nie będzie dalej działać to do każdej funkcji dodałbym takie zabezpieczenie.

_________________
Dragonus Cracovus: Biomagia



Ostatnio edytowano 10 lis 2013, o 22:39 przez Krauser, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lis 2013, o 22:35 
Offline
Użytkownik

Dołączył(a): 19 lip 2012
Posty: 86
Lokalizacja: Lublin
Pomógł: 3

Schemat wygląda tak:
Obrazek

Sprawdzałeś działanie samego USARTU i LCD?
Przerwanie do obsługi wyświetlacza ledowego może wchodzić w konflikt z obsługą USART!


Autor postu otrzymał pochwałę


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

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

Ok poprawie dzięki ;) ale problem krzaków był jeszcze zanim zaimplementowalem ten bufor lcd i używałem poprostu funkcji z biblioteki Pana Mirka więc problemu szukalbym gdzie indziej



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lis 2013, o 22:44 
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

Podpiąłeś AVREF do 5V. Wcale się nie powinno tam podpinać, chyba, że wybierzesz AVREF zewnętrzne, a ty ustawiasz 2,56V.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lis 2013, o 23:18 
Offline
Nowy

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

Krauser napisał(a):
Podpiąłeś AVREF do 5V.
schemat podłączenia brałem stąd: http://mirekk36.blogspot.com/2012/04/mi ... lanie.html AREF podłączone jest do kondensatora, podłączone poprawnie :)
kazzik87 napisał(a):
Sprawdzałeś działanie samego USARTU i LCD?
Przerwanie do obsługi wyświetlacza ledowego może wchodzić w konflikt z obsługą USART!

sprawdzałem i.. nie wiem dlaczego muszę dodać w pętli głównej np. uart_puts(""); bo inaczej nie startuje mi timer programowy (sekundy rosną, flaga sekundowa nie jest ustawiana) który jest właśnie w przerwaniu do obsługi wyświeltaczy ledowych.. multipleksowanie wyświetlaczy led działa.. i totalnie tego nie rozumiem, rozkładam ręce ;/ kazzik87, proszę powiedz po czym poznałeś, że może być tu problem?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lis 2013, o 23:34 
Offline
Moderator
Avatar użytkownika

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

egemini napisał(a):
schemat podłączenia brałem stąd: http://mirekk36.blogspot.com/2012/04/mi ... lanie.html AREF podłączone jest do kondensatora, podłączone poprawnie


Panie kolego nie powołuj się na blog - skoro pokazujesz na swoim schemacie coś innego. Krauser słusznie ci podpowiada a ty dalej twierdzisz że widzisz na tym schemacie jakiś kondensator od AREF - gdzie ? się pytam ? gdzie ? ;) widzisz ten kondensator ?

_________________
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: 10 lis 2013, o 23:46 
Offline
Nowy

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

o kurczę, dopiero zorientowałem się co ja Wam wysłałem ;p.
a nie jest to kondensator C7 podłączony do pinu 32 ?



Ostatnio edytowano 24 lis 2013, o 21:07 przez egemini, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2013, o 10:54 
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

Schemat zawiera błędy w obwodach regulacji jasności, ale zakładam, że sam je wyeliminowałeś. Polecam też na podstawie istniejących bibliotek wyświetlaczy LED zrobić swoją wersję. Nie jest to dużo roboty. Wystarczy dodać kliknąć prawym na wyświetlaczu (wybrać Open Device), dodać nowy variant i połączyć odpowiednie piny symbolu z obudową. Teraz to zaciemniasz schemat.

Odnośnie programu i flagi sekundowej i innych podobnych to niby wiesz, a jednak nie wiesz, że jak zmienna jest modyfikowana w przerwaniu, a sprawdzana w pętli głównej to musi być z modyfikatorem volatile. Zmienne globalne sa zerowane i nie ma sensu pisać tego przy definicji.
Nie dodawaj schematów jako zip, bo sam nic nie widzisz, a skąd inni mają wiedzieć jaki program otworzy plik sch. W Eagle masz File->Export->Image i wybierasz opcje Resolution 600 i Area Window

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2013, o 22:39 
Offline
Nowy

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

Dzięki Za uwagi :) Krauser,mirekk36, napiszcie proszę więcej o wątku z AREF podpiętym pod VCC ponieważ ja nie widzę błędu ;/
kazzik87, ponawiam prośbę o wyjaśnienie w jaki sposób przerwanie do obsługi wyświetlacza ledowego może wchodzić w konflikt z obsługą USART, ponieważ uważam, że jest to dosyć poważnym zagrożeniem dla mojego projektu

Pozdrawiam :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2013, o 22:44 
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

egemini napisał(a):
Dzięki Za uwagi Krauser,mirekk36, napiszcie proszę więcej o wątku z AREF podpiętym pod VCC ponieważ ja nie widzę błędu ;/
Na 2 schemacie AREF masz dobrze.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2013, o 20:01 
Offline
Nowy

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

Cytuj:
egemini napisał(a):
Dzięki Za uwagi Krauser,mirekk36, napiszcie proszę więcej o wątku z AREF podpiętym pod VCC ponieważ ja nie widzę błędu ;/
Na 2 schemacie AREF masz dobrze.


ta płytka była wykonana na podstawie tego właśnie schematu.

Panowie, problem rozwiązany. Winowajcami były przerwania (no dobra, winowajcą byłem ja, niedoświadczony programista xD) kolega kazzik87 naprowadził mnie na ten wątek, poszperałem tu i ówdzie i zastosowałem się do porad:
-za dużo kodu w procedurze obsługi przerwania nie jest wskazana - najlepiej ustawiać tam tylko flagę i kod obsługiwać w pętli głównej (jeśli nie zależy nam na mega dokładności ponieważ może się zdarzyć, że wystąpi przerwanie częściej niż kod je obsługujący, i czasie reakcji ponieważ kod zostanie wykonany dopiero jakiś czas po ustawieniu flagi) obecnie mam część kodu w procedurze obsługi przerwania, część w pętli głównej
-do obsługi wyświetlaczy 7miosegmentowych nie należy ustawiać zbyt dużego odświeżania, ponieważ i tak nie zauważymy różnicy a przerwań będzie gęsto ;)
WOW, problem taki rozwiązany! :D

EDIT:
tak trochę żeby się pochwalić, trochę z ekscytacji, pochwalę się, że aktualnie działa mi menu, wyświetlanie prędkości, przejechanej trasy, chwilowe spalanie, spalone paliwo, temperatura z dwóch czujników oraz napięcie akumulatora ^^
a, i jeszcze obroty silnika ^^



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

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