logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Komunikacja RS232 PC<>ATmega32

Electrik_eye 29 Kwi 2011 17:14 3732 21
REKLAMA
  • #1 9451889
    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:

    
    $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ę :)
  • REKLAMA
  • Pomocny post
    #2 9451902
    piotrva
    VIP Zasłużony dla elektroda
    czym konkretnie podłączony uP do PC?
    max232?
    ft232rl?
  • REKLAMA
  • #3 9451912
    Electrik_eye
    Poziom 13  
    ft232rl ( przez zestaw evb 4.3 )
  • #5 9451928
    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 ?
  • Pomocny post
    #7 9452051
    polprzewodnikowy
    Poziom 26  
    Czy przestawiłeś dobrze fuse bity?
  • Pomocny post
    #8 9452055
    krru
    Poziom 33  
    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.
  • #9 9452525
    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.
  • Pomocny post
    #10 9452564
    piotrva
    VIP Zasłużony dla elektroda
    mimo wszystko spróbuj jakiegoś innego terminala...
    np. HyperTerminal
    bo mi to wygląda na błąd po tej stronie raczej...
  • REKLAMA
  • Pomocny post
    #11 9452591
    krru
    Poziom 33  
    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?
  • Pomocny post
    #12 9452660
    danthe
    Poziom 30  
    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.
  • Pomocny post
    #13 9452769
    Fredy
    Poziom 27  
    Przestaw terminal na odbiór znaków ASCII. Program jest OK.Dane też.
  • REKLAMA
  • #14 9453897
    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 ??
  • Pomocny post
    #15 9453921
    piotrva
    VIP Zasłużony dla elektroda
    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ś...
  • #16 9453931
    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ń
  • Pomocny post
    #17 9453970
    danthe
    Poziom 30  
    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.
  • #18 9453992
    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:
    
    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 ??
  • #19 9454030
    piotrva
    VIP Zasłużony dla elektroda
    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
  • #20 9454062
    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ć ?
  • Pomocny post
    #21 9454185
    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 ;)
  • #22 9454236
    piotrva
    VIP Zasłużony dla elektroda
    poza tym nie wiem, czy jeśli podpinasz to do płytki EvB to czy nie ma jeszcze jakiegoś konfliktu z układem ft232rl....
REKLAMA