Problem z RS232

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
WREALCON
-
Posty: 17
Rejestracja: 30 sie 2006, 21:44
Lokalizacja: Gliwice

Problem z RS232

Post autor: WREALCON » 04 wrz 2006, 20:43

Witam :-)

Pojawil mi sie ostatnio bardzo dziwny problem: otoz po zainicjalizowaniu sprzetowego RS-a w ATmega 16 (nadajnik i odbiornik) nie potrafie odebrac danych od PC'eta. Potrafie wyslac dane do PC, jednak w drugim kierunku program w AVR wiesza sie na pollingu (czeka az RXC zostanie ustawione).

Schemat jest standardowy, oparty na MAX232. poprawnosc podlaczen jest 100%-owa.

Najciekawsze jest to, ze programator jest na COM'ie i jakos transmisja dwukierunkowa dziala...
Bardzo prosilbym o jakas pomoc,
Pozdrawiam.

Awatar użytkownika
gaweł
Użytkownik
Posty: 651
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 04 wrz 2006, 23:41

Jeżeli masz dobry kabelek, to sprawdź, czy MAX 232 przy MEGA16 jest OK.

WREALCON
-
Posty: 17
Rejestracja: 30 sie 2006, 21:44
Lokalizacja: Gliwice

Post autor: WREALCON » 05 wrz 2006, 14:05

Hmm.... wymienilem procesor, wymienilem max'a i dalej nic :(

Moze troche bardziej opisze uklad:
od strony wtyczki piny 1, 4, 6 sa zwarte ze soba. 7-8 takze.

Sprawdzalem sobie miernikiem cyfrowym piny na COM'ie (RX, TX) i przy transmisji z PC do uP bylo cos kolo 8V (brak transmisji - 10.5V) zakladam ze te 8V to taka srednia wartosc...
Gdy wysylam dane z uP do PC, to roznica takze jest okolo 2.5V...
Najciekawsze jest to, ze przy transmisji do PC linia TX procka ma okolo 2V (wartosc srednia), zas przy wysylaniu niezaleznie czego z PC, wartosc ta jest okolo 0.36V (brak transmisji - 0.4V).
Tak wiec nie wiem, czy to wskazuje na maxa, czy moze na uszkodzone kondensatory przy nim ??

Bardzo prosze o jakies opinie na ten temat...

[ Dodano: 2006-09-05, 15:07 ]
wlasnie zobaczylem, ze niezbyt scisle to napsialem :)

wartosci napiec 10.5, 8 V sa na maxie od strony COM'a,
zas wartosci napiec 2V, 0.36 i 0.4 sa na maxie od strony procka.

[ Dodano: 2006-09-05, 16:14 ]
Przez przypadek zauwazylem dziwna rzecz:

Gdy procek sobie tam mieli ta petelke i czeka na dane i wtyczka jest wyciagnieta, dioda jest zgaszona... gdy wloze wtyczke (choc PC nie nadaje), dioda sie zapala... mozliwe, ze jakies zaklocenia sa tego powodem, ale dowodzi to tego, iz nadajnik na procku jest OK a MAX chyba tez, wiec jesli dobrze mysle, pozostaje PC... ale co ??

Co o tym myslicie ??

Awatar użytkownika
gaweł
Użytkownik
Posty: 651
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 05 wrz 2006, 21:51

WREALCON pisze:Moze troche bardziej opisze uklad:
od strony wtyczki piny 1, 4, 6 sa zwarte ze soba. 7-8 takze.
Właściwie nie ma to żadnego znaczenia. Wymienione połączenia zapętlają wyjściowe linie modemowe układu UART w PC-cie na odpowiednie linie wejściowe wPC-cie. Nie wpływa to na techniczny przebieg transmisji a jedynie program w PC-cie w ten sposób może badać gotowość urządzenia do transmisji i ewentualnie poczekać na zgłoszenie gotowości. Obecnie w większości przypadków badanie gotowości w programach jest pomijane, co sprowadza się do użycia kabelka z 3-ema żyłami.
WREALCON pisze: Sprawdzalem sobie miernikiem cyfrowym piny na COM'ie (RX, TX) i przy transmisji z PC do uP bylo cos kolo 8V (brak transmisji - 10.5V) zakladam ze te 8V to taka srednia wartosc...
Gdy wysylam dane z uP do PC, to roznica takze jest okolo 2.5V...
Najciekawsze jest to, ze przy transmisji do PC linia TX procka ma okolo 2V (wartosc srednia), zas przy wysylaniu niezaleznie czego z PC, wartosc ta jest okolo 0.36V (brak transmisji - 0.4V).
Tak wiec nie wiem, czy to wskazuje na maxa, czy moze na uszkodzone kondensatory przy nim ??
Te pomiary niewiele mówią. Interfejs MAX232 można bardzo łatwo zdiagnozować. Robisz to następująco (jeżeli masz MEGE w podstawce to warto ją wyjąć, nie będzie przesztadzać w pomiarach). Stan pasywny (ciszy transmisyjnej) w transmisji szeregowej jest wysoki. Jeżeli podasz na wyjscie TXD w procku stan wysoki (jeżeli masz procka w układzie to ustaw pin do stanu wysokiego lub jak nie masz procka to przez opornik 1k do +5V). Na odpowiednim wyjściu z MAX na złączu DB9 masz mieć jakies -8 .. -12 V. Jeżeli na wyjście TXD w procku podasz stan niski (odpowiednio 0 na wyjście portu lub zewrzeć z masą), to na wyjściu MAX ma być +8..+12V. Jak tak masz, to jest OK. Jeżeli na DB9 połączysz TXD z RXD, to sygnał, który dochodzi do procka na RXD ma być identyczny z sygnałem TXD, czyli zabawa z opornikiem do +5V, drutem do masy i wpinasz woltomioerz.

Przyszła mi jeszcze taka sugestia: czy masz poprawnie zbudowane całe łącze (czyli nadajniki trafiają w odbiorniki). Prześledź cały tor od procka do PC-ta. Nadanik (TXD) procka poprzez MAX232, złącza, kabel itp ma trafić na pin 2 w złączu DB9 w PC-cie. Analogicznie TXD PC-ta (pin 3 na DB9) ma poprzez kabel, złącza, MAX232 itp ma trafić na RXD w MEGA.

WREALCON
-
Posty: 17
Rejestracja: 30 sie 2006, 21:44
Lokalizacja: Gliwice

Post autor: WREALCON » 06 wrz 2006, 9:51

Dzieki za info.
Jak tylko wroce, sprawdze czy max dziala prawidlowo...

Co do polaczen... jak juz pisalem - dane leca z procka do PC'eta... jednak nie potrafie nic odebrac z PC'eta... Dopiero jak wyjmuje wolno wtyczke, procek twierdzi ze cos odebral...
Wiec jesli potrafie wyslac dane, a nie moge jedynie ich odebrac, to polaczenia musza byc OK, prawda ??

[ Dodano: 2006-09-06, 19:51 ]
Witam CIe Gaweł i reszte elektroników :)

A więc tak... sprawdziłem to, co napisales i faktycznie napiecia sie nie zgadzają...
Na RX w DB9 jest 10V w czasie spoczynku, a za maxem jest raptem 0.4V. Wziałem innego maxa i to samo... podlaczylem inny uklad i tam obydwa maja 5V na wyjsciu max'a gdy na RX'ie jest 10V w DB9...
Pytanie, co zrobilem zle ?? Pamietam, ze kondensator jeden mi sie troszke mocno nagrzal, bo grot byl juz u "schylku istnienia"... moze to jest powod nie dzialania...
Aha... no i uzylem tylko 4 kond, a nie 5-ciu (miedzy Vcc a GND, gdyz takowy jest juz za 7805. Tylko ze on nie jest elektrolitem...)

Tak popatrzylem jeszcze na nie... pisze na nich 85 stopni... wiec lutownica ich chyba nie uszkodzilem... polaryzacje sa wg mnie poprawne:
minusy do c1,2 -, plus do c1, 2+
potem minus do Vcc i + do V+,
i minus do V-, a plus do GND...
tak podlaczylem...
Kondensatorki to 1uF, 50V firmy HITANO...

Pozdrawiam

Awatar użytkownika
gaweł
Użytkownik
Posty: 651
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 06 wrz 2006, 21:38

WREALCON pisze:... polaryzacje sa wg mnie poprawne:
minusy do c1,2 -, plus do c1, 2+
potem minus do Vcc i + do V+,
i minus do V-, a plus do GND...
tak podlaczylem...
A może byś pokazał kawałk schematu?

WREALCON
-
Posty: 17
Rejestracja: 30 sie 2006, 21:44
Lokalizacja: Gliwice

Post autor: WREALCON » 07 wrz 2006, 20:27

To jest na prawde standardowe polaczenie, ale ok, w poniedzialek przesle je, bo w weekend mnie nie bedzie w domu. W planach mam po prostu jeszcze raz zlutowac to z innymi kondensatorami.

Pozdrawiam Cie :)

ODPOWIEDZ