Witam, Od dłuższego czasu męczę się z uruchomieniem transmisji po RS-485 pomiędzy PC a ATtiny2313. Stosuje najprostszy konwerter 232/485 ze sterowaniem nadawania linią RTS zbudowany z MAX232 i SN75176. Przy AVRku jest SN75176. Problem polega na tym, że za nic w świecie to nie chce ruszyć. Sprawdzałem juz chyba wszystkie możliwośći terminowania i podciągania linii RS485. Aktualnie terminator jest tylko po stronie pull-upów, a napięcie w stanie idle na liniach wynoszą 2.54V i 2.25V, czyli jak zaleca dokumentacja różnica jest większa od 200mV. Mimo to, odbierane są zera albo różne nieokresowe śmieci. Dołożyłem przy wszystkich układach kondensatory między zasilaniem a masą ale też niewiele pomogło. Jak wymontuje transceivery rs485 i połącze kablami na krzyż linie Rx i Tx to wszystko działa.
Proszę o jakiekolwiek wskazówki bo już mi sie pomysły skończyły.
Didn't find your answer? Ask the community — no account required.
void USART_Transmit( u08 data ) { /* Wait for empty transmit buffer */ while ( !( UCSRA & (1<<UDRE)) ) ; /* Put data into buffer, sends the data */ // s_bit(&PORTD,PD6); //c_bit(&PORTB,PB2); UDR = data; }
int main(void) { // Initiate Ports DDRB = (1<<PB2); //wyjscie na pb2 DDRD = (1<<PD6); //wejscia + wyjscie na pd6 s_bit(&PORTB,PB2); //zgaszone c_bit(&PORTD,PD6); //wylaczony nadajnik int loop=0; usart_init(); sei();// Enable global interrupts u08 i,pierwszy,drugi;
Jakiś czas temu wypłakałem na grupie żale do MS za spieprzone sterowanie linią RTS w win. Czy jesteś pewny, że twój port RS232 prawidłowo steruje kierunkiem ? Bo ja w końcu dałem sobie spokój i zmontowałem układ z linią opóźniającą.
PS. Coś mi się zdaje, że po dzisiejszych walkach z moim RS485 mam ochotę komuś wpie... w MS za spieprzone timeouty na RS dla krótkich czasów. Muszę sprawę obadać, ale coś mi się widzi, że znowu dali ciała.
Chyba pozostaje zrobić porządny konwerter RS232->RS485 na jakimś uC.
M
marco
Witam Sterujesz RSem 485 nadawanie lub odbiór piny DE i RE
D
dziadek Ben
formatting link
Od strony AVRa:
formatting link
tylko procek to ATtiny2313, pull-upy obecnie to potencjometry ustawione
Sprawd¼ oscyloskopem, czy aby na pewno DE (po obu stronach) jest poprawnie sterowane! - ja siê kiedy¶ na tym przewioz³em ;(
dziadek Ben
M
Mariusz Dybiec
Na schemacie masz 75184 i odwrotnie popodciągane B i A. Ale zamienione są obie linie w porównaniu do 176 to może jest dobrze.
Po stronie PC lepiej połączyć DE z /RE bo będziesz miał echo.
3.Spróbuj wysterowacć linie ręcznie: Po stronie PC DE/RE na niski po stronie AVR na wysoki i ręcznie wymuszaj stany na lini D po stronie AVR ( możesz wyjąć procka). Powinno ustawiać AVR 5V -> RS232 -10V AVR 0V -> RS232 +10V
T
Tomek Głuch
Był czw, 04. sierpień 2005 22:19 gdy "dziadek Ben" snipped-for-privacy@op.pl napisał(a):
No właśnie na tym polega problem, że nie jestem szczęśliwym posiadaczem oscyloskopu :( Jak włączam driver-enable od strony procka czy też PC to widać wyraźny zmian napięć na linii. Nie mam zielonego pojęcia co w tak prostym urządzeniu może być źle. Pewnie jakaś pierdoła a ja się już tym ponad tydzień męcze :(
T
Tomek Głuch
Był czw, 04. sierpień 2005 21:44 gdy Sebastian Biały snipped-for-privacy@poczta.onet.pl> napisał(a):
Jestem szczęśliwym użytkownikiem systemu GNU/Linux i ten problem tak bardzo mnie nie dotyczy. Poza tym narazie ręcznie steruje linią RTS za pomocą specjalnego terminala który ma takie funkcje (gtkterm). Zresztą póki co transmisja jest z prędkością dźwięku w próżni :) włączam nadawanie, przyciskam literke, wyłączam, a w procku jest delay na kilka sekund i echo. Próbowałem też zapisywać do eepromu to co on dostaje ale też były zera albo same śmieci.
T
Tomek Głuch
Był czw, 04. sierpień 2005 21:49 gdy "marco" snipped-for-privacy@wp.pl napisał(a):
W przejściówce odbiornik jest na stałe włączony a nadajnik w zaleznosci od linii RTS. Od strony uC sterowanie DE i RE jest z jednego pinu kontrolera. Poza tym jak napisałem program który stan PIND 0 przekazuje na diodę LED to ładnie migała w rytm odbieranych znaczków. Wygląda na to jakby USART nie rozpoznawał znaków. Ale jak połączyłem uC na krótko z MAX232 to program do wysyłania echo smigał pięknie.
S
Sebastian Biały
Tomek Głuch napisał(a):
Pytanie czy linia RTS jest sterowana hardwareowo, czy też OS musi nia machać. W drugim przypadku może to być również Twój problem przy normalnych szybkościach.
Zdiagnozuj magistralę RS485.
Miernik w łapę (najlepiej analogowy) i sprawdź czy:
a) W stanie spoczynku linia A>B (najlepiej pozbądź sie terminatorów
120Ohm na końcach jesli to tylko krótki kawałek drutu). Na schemacie widze odwrotnie. b) Przy wysyłaniu ciągu znaków miernik się lekko wychyla na liniach AB. c) Czy miernik podpięty pod nogę RX procesora też się lekko wychyla. e) Bez względu na problem z polaryzacją A/B i tak przy nadawaniu procesor MUSI coś usłyszeć - jesli nie generuje przerwania, to prawie na pewno nie ma zmiany sygnału na jego nodze RX. f) Zmień scalaki na 75176, te u mnie działają :) g) Bez względu na problemy steruj u mastera RE bo echo jest złym pomysłem. h) Jeśli masz miernik częstotliwości to podepnij go pod AB i nadaj jakiś znak - powinien coś pokazać. i) Jesli wszystko zawiedzie to podesle schemat działający: Max232,75176,CD4047.
Moja propozycja - włacz jedną diodę w przerwaniu UART RX - sprawdzisz w ten sposób czy wogóle coś dostaje na wejściu.
D
dziadek Ben
[..]
Na Twoim miejscu na próbê wyrzuci³bym wszystkie potencjometry/pull-upy, a je¶li wtedy ruszy, to dla sprawdzenia pod³±czy³bym je na odwyrtkê: A do +5V, B do GND.
Powodzenia dziadek Ben
S
Sebastian Biały
Tomek Głuch napisał(a):
Prawdopodobnie dlatego że masz źle pullupy A i B. Ma być A do + i B do
-, wtedy masz na lini w stanie spoczynku logiczną "1" i włączenie drivera nie spowoduje zmiany stanu. Dopiero nadanie znaku spowoduje zaburzenie na lini.
Pamiętaj że w RS232 logiczne "1" odpowiada stanowi ciszy a nie 0. Ia najlepiej własnie tak spolaryzować AB.
I
invalid unparseable
Ja mam tam jakis oscyloskop ale komunkacji po RS485 nie odpalilbym bez "monitora" Z³ozonego z 3 ledow, wpolnie polaczone anodami i oporniki. Katody podlaczalem do SN75176 na Rx, Tx, R/T. Monitory byly 2 po obu stronach i fizycznie widzialem co sie dzieje, najpierw nameczylem sie zeby zsynchronizowac uklady, pozniej juz tylko zmniejszanie opoznien i przypieszani pracy.
S³usznie radzi Ci Mariusz Dybiec, zbys odpalil najpierw recznie, ja tez od tego zaczynalem, recznie sterowalem linia R/T, a dla pewnosci mialem jeszcze monitorowanie zrealziowane na MAX232 i terminalu na PC. (zawsze moglo by sie okazac ze dane przechodza uP zle je interpretuje)
Pozdrawiam Micha³
T
Tomek Głuch
Był czw, 04. sierpień 2005 23:50 gdy "Michał" snipped-for-privacy@wp.pl napisał(a):
no przedtem miałem diody na tx i R/T ale je wylutowałem gdyż podejrzewałem je o osłabianie sygnału (tonący brzytwy się chwyta :) Zdaje się, że będą musiały wrócić.
T
Tomek Głuch
Był czw, 04. sierpień 2005 22:42 gdy Mariusz Dybiec snipped-for-privacy@poczta.onet.pl> napisał(a):
Narazie wyłączyłem terminatory i pull-upy. Zabrałem się za zrobienie konwertera jeszcze raz i nie na pajączku [prowizorki są bee] i zauważyłem, że w nocie MAX232 zarówno kondensatory od V+ jak i V- (nozki 2 i 5) są podłączone do masy, a na tym schemacie jeden z nich jest do +5V. Dziwne że konwersja 232/TTL działała jak należy. Po stronie AVR chyba nic już źle nie może byc :)
T
Tomek Głuch
Był czw, 04. sierpień 2005 22:42 gdy Mariusz Dybiec snipped-for-privacy@poczta.onet.pl> napisał(a):
Narazie wyłączyłem terminatory i pull-upy. Zabrałem się za zrobienie konwertera jeszcze raz i nie na pajączku [prowizorki są bee] i zauważyłem, że w nocie MAX232 zarówno kondensatory od V+ jak i V- (nozki 2 i 5) są podłączone do masy, a na tym schemacie jeden z nich jest do +5V. Dziwne że konwersja 232/TTL działała jak należy. Teraz patrze i na róznych schematach w sieci też tak jest. np
formatting link
nota nie kłamie?
Po stronie AVR chyba nic już źle nie może byc :)
T
Tomek Głuch
Był czw, 04. sierpień 2005 22:42 gdy Mariusz Dybiec snipped-for-privacy@poczta.onet.pl> napisał(a):
Narazie wyłączyłem terminatory i pull-upy. Zabrałem się za zrobienie konwertera jeszcze raz i nie na pajączku [prowizorki są bee] i zauważyłem, że w nocie MAX232 zarówno kondensatory od V+ jak i V- (nozki 2 i 6) są podłączone do masy, a na tym schemacie jeden z nich jest do +5V. Dziwne że konwersja 232/TTL działała jak należy. Teraz patrze i na róznych schematach w sieci też tak jest. np
formatting link
nota nie kłamie?
Po stronie AVR chyba nic już źle nie może byc :)
I
invalid unparseable
U¿ytkownik "Tomek G³uch" snipped-for-privacy@w.stopce napisa³ w wiadomo¶ci news: snipped-for-privacy@tomek.wieliczka.int.pl...
To jest prawie bez znaczenia czy kondensator utrzymuje jakie¶ napiêcie wzglêdem masy, czy wzglêdem VCC. P.G.
M
Mariusz Dybiec
Zawsze coś może być źle. Ręcznie wymuszająć stany na wejściu D możesz sprawdzić kolejno: czy jest zmiana polaryzacji napięcia na liniach A-B, czy jest zmiana
0->5V na R i -10->+10 na T2IN. Ale można też zrobić układ od nowa licząc, że teraz nie będzie błędu :)
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required
Report Content
You are reporting this content to the moderators. They will look at it
ASAP.