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



Teraz jest 30 mar 2026, o 22:37


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 13 sty 2016, o 21:51 
Offline
Użytkownik

Dołączył(a): 30 paź 2012
Posty: 33
Pomógł: 0

witam wszystkich!
testuję sobie komunikację pomiędzy dwoma prockami Atmega644PA i o ile kiedy podczas odbierania nie używam przerwania RXCIE to wszystko działa bez problemu to kiedy odbieram daną w przerwaniu to nie dość, że czasem odbieram wartość 0 choć wysyłam inną to
po jakimś czasie procek się zawiesza. Dodam jeszcze że program jest banalny - wysyłam i odbieram zmienną 1 bajtową
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: 13 sty 2016, o 22:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Kod programu wygląda na poprawny.
Jak nie odbierasz danych na przerwaniu, to czekasz w pętli czekającej na flagę RXC0. Ale gdy używasz przerwania, to non stop komunikujesz się z wyświetlaczem. Może to powoduje Twoje problemy. Czy na pewno masz poprawnie zrobione filtrowanie zasilania?

Przetestuj czy problem będzie występował jak wyświetlać będzie tylko raz dla jednej odebranej danej.
Możesz to zrobić poprzez uśpienie procesora. Kolejne przerwanie obudzi Ci procesor, więc będziesz miał poprawny odbiór danych i poprawne wyświetlanie. Aby to zrobić dodaj:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Przed pętlą while (po sei();) daj:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

i na koniec pętli while (po wyświetleniu danych na lcd) daj:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sty 2016, o 12:59 
Offline
Użytkownik

Dołączył(a): 30 paź 2012
Posty: 33
Pomógł: 0

Chyba miałeś rację, że komunikacja z wyświetlaczem powodowała jakieś zakłócenia, zrobiłem tak że odświerzam wyświetlacz dopiero gdy odbiorę bajt w przerwaniu i od tego momentu jest ok:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


zasilam płytkę prototypową z przetwornicy ATB i na każdym uC mam po dwa kondensatory , na wyświetlaczach także więc to chyba nie kwestia filtrowania. Czy to możliwe że podczas komunikacji z wyświetlaczem wywołanie przerwania RXCIE powoduje błędy i zawieszanie procka? Jeśli tak to jak sobie z tym poradzić w konkretnym projekcie ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sty 2016, o 13:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Mając to na stykówce i ciągle obsługując wyświetlacz podłączony kilku/kilkunasto centymetrowymi kabelkami, masz zrobiony piękny nadajnik o częstotliwości kilku MHz :) Więc może on powodować zakłócenia w pracy. Dlatego filtrowanie zasilania, jego poprowadzenie ma bardzo duże znaczenie.

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sty 2016, o 18:47 
Offline
Użytkownik

Dołączył(a): 30 paź 2012
Posty: 33
Pomógł: 0

z tego co widzę to chyba sam lcd się zawiesza... na płytce stykowej mam 2 atmegi i 2 lcd. Filtracje moim zdaniem mam ok więc nie wiem. Zawiesza się nawet jak dokonuję zapisu do lcd co 1 sek. Wygląda to tak jakby w momencie zapisu do lcd wystąpiło przerwanie UART i wtedy zaczynają się błędy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sty 2016, o 19:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

A daj co jakiś czas inicjalizację LCD. I jak się podwiesi, to wyłącz mu zasilanie i ponownie podłącz. Jak się znowu zainicjalizuje i zacznie wyświetlać, to będzie lcd. Jak nie, to nie lcd się wiesza ;(

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sty 2016, o 15:38 
Offline
Użytkownik

Dołączył(a): 30 paź 2012
Posty: 33
Pomógł: 0

polutowałem wszystko na płytce i jest ok :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sty 2016, o 16:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Cytuj:
polutowałem wszystko na płytce i jest ok :)

To super. I znowu wyszło, że grunt to dobrze przygotować płytkę / podłączenie do układów zewnętrznych. Szczególnie jak się z nimi komunikuje z taką częstotliwością.

--
Pozdrawiam,
Robert



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