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



Teraz jest 19 kwi 2024, o 04:09


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 8 maja 2017, o 10:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

Nie wiem czy to normalne, bo mi się to nie przytrafiło jeszcze na tym procku (Atmega32) właściwie to nigdy mi się to jeszcze nic podobnego nie przytrafiło, ale efekt dość zadziwiający. W teorii RESET procka (pin do masy) powinien być równoważny ze świeżym włączeniem zasilania, ale czy na pewno? Pisząc nowy program korzystam z moich sprawdzonych bibliotek i rozwiązań w 100% działających w niejednym programie na rodzinie Atmega48..328, a tu nagle zonk... definicja pierwszego znaku (a dokładnie pierwszej jego linii) leci w krzaki po każdym zaprogramowaniu jak i po resecie. Inicjacja LCD i definiowanych znaków oczywiście w prawidłowej kolejności z CLS na końcu. Myślałem, że uwalony wyświetlacz, więc wyłączyłem zasilanie wstawiłem inny LCD no i sukces działa! - do ponownego zaprogramowania procka i resetu... Okazało się, że dopiero chwilowe odłączenie zasilania czyli faktyczny start procka od zera nie powoduje defektu i program działa zgodnie z założeniami. Podmiana LCD upewniła mnie tylko, że wszystko dzieje się w programie i wewnątrz struktury procesora. Zaznaczam, że procek ma podpięte tylko drivery do silników i żadnych innych dodatkowych peryferiów tam nie ma. Ot prosty układ sterownika. Nie jest to może istotny błąd z punktu użytkownika (w końcu po włączeniu zasilania wszystko działa prawidłowo), ale krzaczki na etapie programowania mnie już troszkę drażnią... Spotkał się ktoś z czymś podobnym?
Film z działania:

https://www.youtube.com/watch?v=yTnxFLr ... e=youtu.be

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2017, o 10:17 
Offline
Użytkownik

Dołączył(a): 23 sty 2014
Posty: 1079
Pomógł: 73

Moim zdaniem to i tak kwestia LCD, może te silniki generują jakieś szpileczki na liniach zasilania i pamięć LCD-ka świruje. Poeksperymentowałbym jeszcze z wyświetlaczami innych producentów



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2017, o 10:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

@zenekjar, Tyle, że ja definicje znaków we flashu trzymam (jak i w poprzednich moich programach bez doświadczania takich "ciekawostek").

@Jarecki, silniki są nie podłączone, bo dopiero zaczynam szkilet tworzyć i obsługę motorów na samym końcu dodam, a nawet jak by były podłączone to korzystam ze sprawdzonego już wcześniej sposobu filtracji, która NIGDY mnie nie zawiodła. Te same LCD (kupuję zawsze po kilkanaście sztuk) pracowały w poprzednich sterach. Zmienił się obecnie tylko procek z M168 na M32

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2017, o 12:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

Wydaje mi się, że coś na rzeczy ma inicjacja LCD w końcu wszystko jest ok jak się go fizycznie od zasilania odłączy. Dziwne to jednak, że każdy reset "pinowy" ZAWSZE powoduje błąd, a po odłączeniu zasilania ZAWSZE startuje prawidłowo.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2017, o 12:36 
Offline
Moderator
Avatar użytkownika

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

SylwekK napisał(a):
Wydaje mi się, że coś na rzeczy ma inicjacja LCD w końcu wszystko jest ok jak się go fizycznie od zasilania odłączy. Dziwne to jednak, że każdy reset "pinowy" ZAWSZE powoduje błąd, a po odłączeniu zasilania ZAWSZE startuje prawidłowo.


Możesz pokazać początek funkcji inicjalizacyjnej LCD ? nawet jeśli to kod z Bluebooka to proszę pokaż kod tej funkcji - zobaczymy - bo być może ja coś tam poprawiałem .... ale warto to doprowadzić do porządku gdyby coś w inicjalizacji było nie tak

_________________
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: 8 maja 2017, o 13:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

To cała funkcja (bez przypisów) z dodaną tylko jedną moją linijką na koniec odpowiedzialną za czyszczenie bufora, bo korzystam z LCD buforowanego odświeżanego po jednym znaku w każdym obiegu pętli głównej. Zmniejszone jest też opóźnienie przy wysyłaniu bajtu do LCD (na 42us - i tak jest to z zapasem, bo prawidłowo działało na jeszcze mniejszym opóźnieniu), ale to też sprawdzałem zwiększając go do oryginalnej wartości. Zresztą gdyby to opóźnienie miało w tym wypadku jakieś znaczenie to pewnie z tym LCD na całym ekranie były by krzaki, a nie tylko przy definiowanych znakach i tylko po pinResecie.

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


(Mirku, jeśli się okaże, że w powyższym init wszystko jest ok to może wywal listing z tego postu z oczywistych względów, albo ja to edytuję tylko mi potwierdź.)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2017, o 13:53 
Offline
Moderator
Avatar użytkownika

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

No to to jest ta ostatnia poprawiona dobra wersja, hmmm .... sorki może nie zauważyłem - czy korzystasz z pinu R/W do procka ? czy masz podłączony do GND ?

Czy możesz ew wyłuskać jakiś fragment kodu żeby móc sprawdzić go u siebie na procku ? sam jakiś mini fragmencik main.c gdzie inicjalizujesz, ładujesz kilka znaków ? ... chociaż u ciebie to chyba nie będzie łatwe bo skoro korzystasz z buforowania własnego to już jest pewnie i inicjalizacja jakiegoś timera i polecenia buforujące ...

no ale gdzieś musi być babol w kodzie tylko zastanawiam się czy w inicjalizacji czy gdzieś indziej ... bo oczywiście reset niczym nie może się różnić od wyłączenia i włączenia zasilania.

_________________
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: 8 maja 2017, o 14:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

Mirku poszło na PW.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 maja 2017, o 13:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

Na razie nie mam niestety czasu aby zająć się tematem głębiej, ale go nie odpuszczę, a póki co znalazłem banalny i bardzo nieelegancki (w normalnych warunkach unikam jak ognia takich rozwiązań) sposób aby po resecie też było wszystko ok:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Po prostu zdublowana linia definiująca pierwszy znak. Daje mi to do myślenia, że jednak gdzieś z inicjalizacją jest problem, ale jak mówiłem zajmę się tym w luźniejszej chwili :)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 maja 2017, o 14:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

Na dwóch LCD testowałem, ale to wyświetlacze z partii, którą kupiłem jakiś czas temu i już kilka z nich bezproblemowo działało w innym sterowniku. W sumie to nie jest jakiś wielki problem, bo po włączeniu zasilania wszystko jest ok, ale sam fakt występowania tego zjawiska mi nie daje spokoju, a ja jestem z tych bardziej dociekliwych :)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 maja 2017, o 14:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 paź 2014
Posty: 233
Lokalizacja: Rzeszów
Pomógł: 11

Spróbuj wykorzystać rejestr MCUCSR atmegi32 i np. nie inicjuj LCD gdy źródło restartu jest inne niż power-on (lub gdy źródłem jest external reset). Zobaczysz, czy jest różnica.

_________________
Mr. Nobody



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

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