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



Teraz jest 10 lut 2025, o 16:37


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 9 sty 2018, o 21:22 
Offline
Nowy

Dołączył(a): 09 sty 2018
Posty: 1
Pomógł: 0

Dzień dobry, to mój pierwszy wpis na forum więc jeżeli mogę to proszę o wyrozumiałość.
Piszę w sprawie dość nietypowego jak dla mnie błędu, który występuje w moim kodzie: podczas komunikacji między dwoma procesorami (z AtMega324p na AtMega16a) kiedy chcę wysłać wartość funkcja usart_send nie zawsze zostaje wykonana (chociaż powinna). Przy otrzymaniu kodu powinna się zmienić wartość na wyświetlaczu led i zostaje jednocześnie zmieniony znak na diodzie(dioda została dołączona by wykluczyć możliwość, że kod zostaje wysłany a to LCD nie reaguje), kod z mikrokontrolera zostaje wysłany przy naciśnięciu przycisku (na pewno przycisk działa dobrze i uwzględniłem drganie styków, oprócz wysłania kodu przez usart gasi również wszystkie diody (co powinien robić) więc można założyć że problem nie leży po stronie przycisku). Kod który jest wysyłany przez usart jest zawsze tego samego typu w zasadzie testowałem na dwóch wartościach.
Poniżej wstawiam kod inicjalizacji USART:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

przerwanie które odczytuje wartość wysłaną: value jest typu volatile uint8_t i jest zmienną globlaną
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Kod wysłania wartości przez USART - mój faworyt jeżeli chodzi o możliwych sprawców zamieszania
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

fragment funkcji main w którym wysyłam kod (coin typu uint8_t
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

funkcja w której dostaję informacje z USART (czasami się wykonuje przy naciśnięciu przycisku a czasami nie)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Zmienne są w zasadzie nie używane ponieważ przerobiłem tą funkcję na potrzeby testów.
Bardzo proszę o jakiekolwiek podpowiedzi co może być nie tak

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

Odbieranie jest w funkcji while bo nie byłem pewien czy w czasie wysłania kod nie ulega zniekształceniu- jeżeli by uległ wtedy kod został by zawieszony w nieskończonej pętli, to okazało się nie być problemem



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sty 2018, o 06:33 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 232
Pomógł: 26

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

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sty 2018, o 07:52 
Offline
Użytkownik

Dołączył(a): 07 gru 2013
Posty: 90
Pomógł: 6

Nie rozumiem tego warunku w przerwaniu od RX "while ( !(UCSRA & (1<<RXC)) ) ;" Skoro już program wskoczył do przerwania to dana została odebrana przez usart i czeka w UDR. Konfiguracje usart-a masz ok. Spróbuj sprawdzić komunikację na "sucho" np z komputerem pc ( terminal ); albo jak Kolega wyżej pisał brakujące "sei()" albo coś z prędkościami pokręciłeś.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


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