Skocz do zawartości

Problem z transmisją RS-232 (PC <--> Attiny2313)


Pomocna odpowiedź

Napisano

Realizuje kurs: "Mikrokontrolery dla początkujących". Skorzystałem z płytki testowej preznaczonej dla tej książki. Pod zaciski GND, TxD, RxD podłączam odpowiednio piny we wtyczce portu COM (z tym że oczywiście RxD--> TxD a TxD --> RxD). Sprawdziłem ciągłość pomiędzy zaciskami w płytce i pinami we wtyczce oraz czy nie ma zwarć.

Kiedy zorientowałem się że coś nie działa jak trzeba to po prostu bezpośrednio skopiowałem listing programu z CD umieszczonego z książką, więc o pomyłce w programie nie ma mowy (treść programu widać na poniższych screenach). Miało działać to w ten sposób że ja wpisuje znaki na klawiaturze przy aktywnym bascomowym terminalu, mikrokontroler je odbiera i wyświetla na LCD oraz przesyła je z powrotem do PC żeby pokazało się w oknie terminala co wpisuje.

Niestety nie działa to: ani na LCD ,ani w oknie terminala nic się nie zmienia.

Wszelkie parametry widać poniżej:

Oprócz tego w bascomie w sekcji communication mam ustawione Baudrate na 2400 a frequency na 4000000. LCD też jest poprawnie ustawiony i podłączony.

Jesli chodzi o uC które posiadam to jest to Attiny2313, współpracuje z kwarcem 4Mhz (mimo że w AVRstudio pokazuje mi że ustawiona jest na 8Mhz <-- dziwne?; fusebity były tak ustawione od początku ponieważ dostałem ten uC wraz z kursem). W Bascomie (generuje w nim plik hex) mam w sekcji chip: 2313.def , w AVRstudio (wgrywam hexa) mam wybrany Attiny2313.

Jeśli chodzi o sprawy techniczne to w książce piszą" W praktyce okazuje się że obwody wejściowe portu COM komputera z powodzeniem pracują z poziomami TTL". W związku z tym nie używam MAX232 (czy to może być przyczyna problemu?).Autor z racji tego że pomija przetwornice napięcia płytkę wyposażył w dwa negatory zbudowane na dwóch tranzystorach (spowodowane jest to oczywiście tym, że logicznemu 0 odpowiada napięcie dodatnie natomiast logicznej 1 napięcie ujemne - jednocześnie w większości przypadków w urządzeniu odbiorczym (PC) napięcie progowe to nie 0V ale 1,5V dlatego też teoretycznie używając poziomów TTL powinno to działać.).

Aby wykluczyć pewne przyczyny moich problemów postanowiłem odpiąć całą płytkę z kontrolerem i po prostu zewrzeć przewody RxD i TxD z portu COM aby w ten sposób zrobić efekt echa. Włączyłem terminal i rzeczywiście pokazują się znaki które wpisuje ,więc problem leży gdzieś dalej.

Co jest problemem? Czy muszę próbować z MAX232? Może coś trzeba przestawić w ustawieniach portu com (np bs - czy musi być takie same w ustawieniach portu COM w menadżerze i w ustawieniach terminala?, bufor FIFO - czy ma to być włączone przy pracy z uC ?,wysokość buforu) ?

Pokaż schemat, bez tego ani rusz. Boję się, że podpiąłeś com bezpośrednio do RXD i TXD. Jeśli tak, to prawdopodobnie możesz pożegnać się z tymi nóżkami 😉 (przynajmniej RXD).

Zaraz, zaraz, czy Kolega podłączył BEZPOŚREDNIO piny RS232 z komputera z wyprowadzeniami procesora?

Jeśli tak (nawet na jeden test) to polecam zakupić nowy procesor (ten może mieć już uszkodzone struktury wewnętrzne - nie jest odporny na napięcia +-12V) i próbować TYLKO przez MAX232 lub sprzętowy odpowiednik jego struktury.

Napisałem przecież że za pośrednictwem dwóch tranzystorów pełniących funkcje negatorów. Wyżej wspomniane tranzystory są elementem płytki testowej. Z płytki testowej wyprowadzone są zaciski TxD i RxD które (według książki) należy podłączyć bezpośrednio do portu COM.

Jeśli okaże się że ja mam jakiś bardzo radykalny port COM to będę musiał spróbować użyć MAX232 i zrobić układ na płytce stykowej.

Na początku nie wyraziłeś się jasno, zrób taki test: wyjmij procesor z podstawki i zewrzyj piny PD0 i PD1 na płytce/w podstawce. Wtedy powinieneś uzyskać efekt analogiczny ze zmostkowaniem pinów RxD i TxD we wtyczce RS232, czyli powinieneś dostawać w terminalu to co wpiszesz. Jeśli zadziała to szukamy dalej, jeśli nie to winny jest ten układ konwertera.

Ale "winny" w sensie nie koniecznie że uszkodzony tylko po prostu mój port COM się do niego nie nadaje (czyli nie uznaje napięcia poniżej 1,5 V za ujemne)?

zrób taki test: wyjmij procesor z podstawki i zewrzyj piny PD0 i PD1 na płytce/w podstawce. Wtedy powinieneś uzyskać efekt analogiczny ze zmostkowaniem pinów RxD i TxD we wtyczce RS232, czyli powinieneś dostawać w terminalu to co wpiszesz.

A to zrobiłeś?

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...