Elektroda.pl
Elektroda.pl
X
Arrow Multisolution Day
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Komunikacja RS232 PC<>ATmega32

Electrik_eye 29 Kwi 2011 17:14 3396 21
  • #1 29 Kwi 2011 17:14
    Electrik_eye
    Poziom 13  

    Witam!
    Jakiś czas temu zrobiłem płytkę do mojego robota i komunikacja z terminalem działałą. Ale projekt na jakiś czas odstawiłem i teraz komunikacja nie chce działać.
    Co prawda mikrokontroler prawidłowow rozpoznaje wysyłane mu znaki ale przykładowo gdy piszę prosty program taki jak:

    Code:

    $regfile = "m32def.dat"                                     ' specify the used micro

    $baud = 19200
    $crystal = 8000000                                          ' used crystal frequency

        Dim B As Byte

    Do
    Print "1"
    Waitms 2000
    Loop
    End

    To odstępy czasowe są odpowiednie ale zamiast "" wyświetla się kolejno ( w zasadzi w ciągu pod rząd co sek. ) :
    49
    13
    10
    49
    13
    10

    i tak w kółko.
    I program i terminal są ustawione na prędkość 19200 a Uc jest taktowany wewnetrznym zegarem 8 MHz. Co może być nie tak ?

    Proszę o pomoc i z góry dziękuję :)

    0 21
  • Arrow Multisolution Day
  • #3 29 Kwi 2011 17:21
    Electrik_eye
    Poziom 13  

    ft232rl ( przez zestaw evb 4.3 )

    0
  • #5 29 Kwi 2011 17:31
    Electrik_eye
    Poziom 13  

    szczerze mówiąc nie ale zaraz wypróbuję

    Dodano po 5 [minuty]:

    też nic to znaczy coś ale nie to co bym chciał. I nie wiem jakim cudem ale jak przemierzyłem miernikiem piny 14 i 15 ( rxd i txd ) to nie są połączone ale jak jedną sondę trzymam przy 15 ( txd ) to i łączy się z pinem (łączącym się z drugą płytką) txd to jest połączenie i tak samo jak daję do goldpinu rxd. A nóżka 14 łączy sie TYLkO z goldpinem rxd. Jak to możliwe skoro pinu 14 i 15 nie są połączone ?

    0
  • Pomocny post
    #7 29 Kwi 2011 18:04
    polprzewodnikowy
    Poziom 26  

    Czy przestawiłeś dobrze fuse bity?

    0
  • Arrow Multisolution Day
  • Pomocny post
    #8 29 Kwi 2011 18:06
    krru
    Poziom 32  

    To są prawidłowe dane, tyle że terminal wyświetla ci dziesietne kody znaków. 49 to "1", 13 i 10 to przejście do nowej linii. Sprawdź ustawienia terminala.

    0
  • #9 29 Kwi 2011 20:33
    Electrik_eye
    Poziom 13  

    14 i 15 to numery wyprowadzeń ATmegi32. Fuse bity też są dobre bo sprawdzałem. Co do ustawień terminala to nigdy nic oprócz prędkości i portu COM nie zmieniałem i było dobrze. Domyślne ustawienia to 8,1.

    0
  • Pomocny post
    #11 29 Kwi 2011 20:52
    krru
    Poziom 32  

    Nie chodziło mi o parametry transmisji a raczej o coś, co zwykle nazywa się emulacją terminala - gdzie wybiera się w jaki sposób program reaguje na otrzymane znaki. Może masz ustawiony tryb wyświetlania kodów dziesiętnych. Tam zwykle wystąpują opcje typu ANSI, VT50, VT100 itp.

    Jakiego programu terminala używasz?

    0
  • Pomocny post
    #12 29 Kwi 2011 21:08
    danthe
    Poziom 29  

    Jest dokładnie jak napisał kolega krru - 10 to kod LF - Line Feed, 13 to CR czyli Carriage Return, a "1" to w kodzie ascii 49.

    Wypróbuj Print "1";

    U mnie to działa bez problemu, używam Hyper Terminal, dodanie średnika powoduje nie wysyłanie kodów przeniesienia do nowej linii.

    0
  • Pomocny post
    #13 29 Kwi 2011 21:37
    Fredy
    Poziom 27  

    Przestaw terminal na odbiór znaków ASCII. Program jest OK.Dane też.

    0
  • #14 30 Kwi 2011 11:18
    Electrik_eye
    Poziom 13  

    Tak na prawdę to nie jest OK tylko nie wiem co. Odkryłem, że gdy ten sam procek podłączam do kompa przez ft232rl ale nie przez linie rxd i txd tylko isp to wszystko na tym samym porcie COM działa. Ten sam terminal i wypisuje w odstępach 2 sek. 1...1...1 więc terminal jest OK. Tylko pozostaje sprawa czemu przy podłączeniu przez ISP działa a przy rxd i txd nie ? Jedyną różnicą pomiędzy tym co mi wcześniej działało to to że używałem ATmega32 16 Mhz a teraz używam ATmega32L 8Mhz bo 2 ATmegi32 sobie zablokowałem i jestem w trakcie wykonywania "odblokowywacza" :) Co może mieć wpływ na to, że przez ISP działa a nie przez rxd i txd? Czy może to być inny zegar ??

    0
  • Pomocny post
    #15 30 Kwi 2011 11:30
    piotrva
    Moderator na urlopie...

    nie rozumiem zupełnie co zrobiłeś...
    ---
    rxd i txd to linie magistrali rs232, ft232rl to konwerter rs232<>usb, czyli poglądowo ma z jednej strony rxd i txd, a z drugiej usb
    ---
    ISP zaś to zupełnie inny standard, a raczej typ programowania (In System Programming - ISP) posiada on linie MOSI,MISO,SCK i RST, które nijak się mają do standardu RS232 i rxd/txd
    ---
    także przepraszam najmocniej, ale zupełnie nie rozumiem co zrobiłeś...

    0
  • #16 30 Kwi 2011 11:36
    Electrik_eye
    Poziom 13  

    Ja procesory podłączam przez płytkę testową Evb 4.3 i na niej jest układ ft232rl. I na tej płytce testowej są 4 piny do podłączenia MOSI MISO SCK i RST i są one podłączone do ft232rl i wtedy można procesor programować. A osobne 2 piny ( na rxd i txd ) są też podłączone do ft232 rl więc można się komunikować albo tak albo tak.

    Dodano po 2 [minuty]:

    http://www.and-tech.pl/EvB4.3/schemat_v4.png

    tu masz schemat połączeń

    0
  • Pomocny post
    #17 30 Kwi 2011 11:50
    danthe
    Poziom 29  

    To niech kolega poda przykład w jaki sposób wysyła daną po SPI, do tego FT232 ?
    Też instrukcją "Print" ?

    Nie wiem czy zauważyłeś ale SPI jest podłączone do linii kontrolnych portu RS232. I nijak nie ma się do linii TXD / RXD. Zapewne po podłączeniu SPI któraś z linii kontrolnych dostaje stan 1 lub 0 i powoduje zmianę reakcji terminala.

    0
  • #18 30 Kwi 2011 11:59
    Electrik_eye
    Poziom 13  

    tak. Chociaż musiałem się pomylić bo w tej płytce procek jest na stałe podłączny do ft232r (przez rxd i txd ) i teraz działa tylko mam inny problem. BO chcę zrobić tak jak kiedyś komunikację bezprzewodową przez BTM222 ( płytka firmy KAMAMI KAmodBTM222 ) I mogę się połączyć prawidłowo ( dioida połłączenia na płytce BTM świeci ciągle ) i mogę nawet z komputera wysłać prawidłowo znaki, które on prawidłowow rozpoznaje i przesyła od procka. Ale jak mogę wysłać coś do komputera ? Mam połączony procek na krzyż ( rxd - t xd txd-rxd ) ale gdy daję instrukcję print "1" to nic. Ale jednak coś wysyła bo gdy dałem polecenie:

    Code:

    Print "A";
    Waitms 200
    Print "T";
    Waitms 200
    Print
    Waitms 200

    Print "A";
    Waitms 100
    Print "T";
    Waitms 100
    Print "N";
    Waitms 100
    Print "=";
    Waitms 100
    Print "R";
    Waitms 100
    Print "o";
    Waitms 100
    Print "b";
    Waitms 100
    Print "o";
    Waitms 100
    Print "t";
    Waitms 100
    Print
    Waitms 10

    To nazwa ukłądu zmieniła się !! Więc jest on jakoś przestawiony, że to co mu wysyłam na jego txd to nie przesyła dalej do komputera ale bierze jako komendy AT ? jak zrobić żeby to co mu prześlę z rxd procka na jego txd wysłał do pc ??

    0
  • #19 30 Kwi 2011 12:13
    piotrva
    Moderator na urlopie...

    Electrik_eye napisał:
    Ja procesory podłączam przez płytkę testową Evb 4.3 i na niej jest układ ft232rl. I na tej płytce testowej są 4 piny do podłączenia MOSI MISO SCK i RST i są one podłączone do ft232rl i wtedy można procesor programować. A osobne 2 piny ( na rxd i txd ) są też podłączone do ft232 rl więc można się komunikować albo tak albo tak.

    Dodano po 2 [minuty]:

    http://www.and-tech.pl/EvB4.3/schemat_v4.png

    tu masz schemat połączeń


    tak się składa, że tę płytkę dosyć dobrze znam, bo pisałem cały kurs BASCOM na niej oparty
    i po tych dodatkowych liniach układu FT232RL da się układ tylko programować w trybie ISP, gdyż wtedy działają one jako GPIO układu ft232RL ustawionego z poziomu PC w tryb BitBang. No chyba, że Kolega ma na PC program, który symuluje jakiś inny sposób komunikacji oparty na trybie BitBang...
    Może koledze coś się zawieszało po wyłączeniu programu AndLoad lub avrdude w trybie

    0
  • #20 30 Kwi 2011 12:26
    Electrik_eye
    Poziom 13  

    Teraz komunikacja z płytki (mojej przez evb 4.3 albo bezpośrednio z evb 4.3) działa ale jak mam wysłać coś do tego terminala przez BTM ? Mam połączenie na krzyz ale on tylko dobrze odbiera dane i przesyła do procka ale jak ja mu coś wysyłam to po porostu zatrzymuje to dla siebie ( ewentualnie jeśli to komenda AT to ją wykonuje ) ale nie przesyła do komputera

    Dodano po 35 [sekundy]:

    co mam zrobić ?

    0
  • Pomocny post
    #21 30 Kwi 2011 13:24
    mirekk36
    Poziom 42  

    Komenda AT może tylko trafić do BTM'a od procka - a nie do terminala - to normalne więc się temu nie dziw.

    Jeśli jednak chcesz coś z procka wysyłać do terminala - to NAJPIERW zestaw połączenie z BTM'em za pomocą terminala. Zdaje się, że twój BTM pracuje w trybie Slave - zatem on nie może zainicjować tego połączenia. Ale gdy ty je zainicjujesz - to potem spokojnie i bez problemów procek już może nadawać dane do terminala ;)

    0