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



Teraz jest 29 mar 2024, o 16:38


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
 Tytuł: RS485 problem
PostNapisane: 28 cze 2018, o 13:36 
Offline
Użytkownik

Dołączył(a): 22 mar 2014
Posty: 52
Pomógł: 0

Witam, próbuję uruchomić transmisję po RS485 ale mam mały problem.
Gdy nacisnę przycisk PB4 lub PB5 to max485 poprzez pin DE przełącz mi się w stan wysoki i następuje wysłanie znaku 1 lub 2 przez funkcję usart_transmit.
A gdy zakończy wysyłanie to musi nastąpić przełączenie pinu DE w stan niski i do tego celu wykorzystuję przerwanie ISR( USART_TXC_vect ).
Tylko z tym jest właśnie problem, że to mi się nie przełącza tak jak by to przerwanie w ogóle się nie wykonywało.
Wszystko to zmierzyłem analizatorem stanów logicznych i dlatego wiem że ten pin mi nie przechodzi w stan niski po zakończeniu wysyłania.
Co robię źle?
Oto mój kod:

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 cze 2018, o 14:57 
Offline
Użytkownik

Dołączył(a): 22 mar 2014
Posty: 52
Pomógł: 0

Dobra problem rozwiązany.
Pomogło niewielka zmiana w funkcji init_usart.

Wcześniej było tak i nie działało:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


Tylko zastanawiam się dlaczego to robi taką różnicę?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 cze 2018, o 15:19 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2561
Pomógł: 126

Druga linijka nadpisuje wartość z pierwszej.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 cze 2018, o 15:21 
Offline
Użytkownik

Dołączył(a): 22 mar 2014
Posty: 52
Pomógł: 0

No właśnie, bo teraz mi niedziała przerwanie od rxc_vect.
Kurde, już niewiem co źle robię.

------------------------ [ Dodano po: 21 minutach ]

Dobra, teraz to już na pewno wszystko działa.
Trzeba po prostu ustawiać po kolei bity w rejestrze UCSRB.
Przynajmniej u mnie to pomogło.
A i gdy przyjdzie coś po usarcie i zadziała przerwanie od rxc_vect to trzeba to odczytać bo jak nie odczytamy to txc_vect niechce działąć.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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