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



Teraz jest 26 mar 2026, o 05:11


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
 Tytuł: rs485
PostNapisane: 19 gru 2017, o 17:08 
Offline
Użytkownik

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

Witam, potrzebuję uruchomić transmisję po RS485. Kod inicjalizacji jest zaczerpnięty z niebieskiej książki Mirka a kod do transmisji z noty pdf atmega. Chciałem to zrobić z użyciem przerwania od USART i wyszło mi coś takiego tylko nie wiem czy to jest dobrze napisane. Może mi ktoś to sprawdzić i napisać czy jest dobrze?

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


Jak wszystkie dane zostaną wysłane to zostanie ustawiona flaga TXC. I ja sprawdzam to za pomocą tego fragmentu kodu
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

ale ją trzeba potem wyzerować. Czy ja to dobrze robię z tą pętlą?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: rs485
PostNapisane: 19 gru 2017, o 19:13 
Offline
Użytkownik
Avatar użytkownika

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

Transmisja RS485 różni się od transmisji RS232 tylko sterowaniem kierunkiem przesyłania danych. Więc uruchom najpierw poprawnie transmisję RS232 na podstawie BB a potem przejdź na RS485 - także masz w BB dostępną bibliotekę do tego.
mateusz19955 napisał(a):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jak uruchamiasz przerwania, to musisz napisać procedury ich obsługi.

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: rs485
PostNapisane: 19 gru 2017, o 22:14 
Offline
Użytkownik

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

Ok, dzięki za podpowiedź. A teraz jest dobrze?
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  
 Tytuł: Re: rs485
PostNapisane: 19 gru 2017, o 23:18 
Offline
Użytkownik
Avatar użytkownika

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

Nie ma procedury obsługi przerwania odbioru.
Po co ten delay po ustawieniu nadawania?
W pętli głównej non top chcesz wysyłać daną. Kod wygląda jak jakaś wprawka / testy a nie użyteczne funkcje,

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: rs485
PostNapisane: 20 gru 2017, o 11:41 
Offline
Użytkownik

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

Ten delay jest po to aby max485 zdążył się przełączyć. To że wysyłam w pętli głównej cały czas wartość 2, to tylko tak napisałem, opcjonalnie będzie inaczej. Ale co jeszcze jest nie tak, pomijając już że nie mam napisanej procedury odbioru?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: rs485
PostNapisane: 20 gru 2017, o 17:32 
Offline
Użytkownik

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

Walczę z tym rs485 już kilka godzin i nie mogę sobie poradzić. Na zwykłym rs232 wszystko działa jak chcę a na tym nie.
Program ma działać tak:
-SOFT1 wysyła do SOFT2 wartość 1,
-jeżeli SOFT2 odbierze tą wartość 1, to na wyświetlaczu wyświetla napis "ok" i wysyła do SOFT1 wartość 2
-jeżeli SOFT1 odbierze tą wartość 2 to ma zaświecić diodę na PB2.

I tu mam problem bo na wyświetlaczu wyświetla mi się ten napis "ok", czyli SOFT2 odbiera, a SOFT1 wysyła wszystko dobrze.
Ale gdy SOFT2 odsyła do SOFT1 to dioda się nie zaświeca czyli coś źle wysyła albo SOFT1 źle coś odbiera.
Pomóżcie bo już naprawdę nie wiem co jest źle.

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


SOFT2:
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  
 Tytuł: Re: rs485
PostNapisane: 20 gru 2017, o 18:54 
Offline
Użytkownik

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

Konwerter 485 >> USB od 7,49 na alledrogo
PuTTY za darmo
Ten zestaw i dostaniesz "oczy" na to co biega po liniach
Bez tego ani rusz.

Poza tym mam niejasne przeczucie że kompletnie mi się ta funkcja nie podoba.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Zobacz
Załączasz odbiór RS485 i czekasz na dane
A co będzie gdy dane przyszły wcześniej?
Raczej użyłbym przerwania (przyszły dane)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: rs485
PostNapisane: 20 gru 2017, o 21:45 
Offline
Użytkownik

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

Dobrze, można użyć przerwania. Ale czy to nie jest tak, że to przerwanie wykona się gdy już wszystkie dane przyjdą(ustawi się flaga tego przerwania)? Tak jak jest z tym przerwaniem od transmit. A po za tym żeby coś doszło to muszę załączyć ten odbiór.
Chyba że źle to rozumiem?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: rs485
PostNapisane: 21 gru 2017, o 06:22 
Offline
Użytkownik

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

Przerwanie jest generowane gdy pojawi się cały bajt w rejestrze UDR.
Wtedy od razu należy przepisać bajt to jakiegoś buforka i wyjść z przerwania.
Dopiero wtedy mając dane w takim buforze pośrednim, możesz funkcją sprawdzać jakie dane odebrałeś.
To co robisz nadaje się do jednego bajtu.

A co będzie gdy będziesz chciał odebrać kolejno 10 różnych bajtów?
UDR jest co prawda buforowany, ma dodatkowo dwa lub trzy rejestry do zapisania kolejnych znaków.
Czyli stosując Twoją metodę w UDR i buforze będzie na Ciebie czekać 3 bajty
Reszta pójdzie w powietrze.

(nie pamiętam ilości tych rejestrów dwa są na odbiór trzy na nadawania albo na odwrót)



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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