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

[bascom] atmega32 i komunikacja RS232 - opóźnienia printa?

Hornet60 20 Lut 2010 17:31 1062 0
  • #1 20 Lut 2010 17:31
    Hornet60
    Poziom 18  

    Witam
    Złożyłem sobie prosty układzik do komunikacji z autem, założenie było takie, możliwość wysyłania kodów odpowiedzialnych za podgłaszanie, ściszanie itp, oraz odbiór paczek danych i wyświetlanie na lcd podpiętym do atmegi. Druga część wyszła znakomicie, po trzeciej poprawce idealnie odbierał kody z auta, jednak nadawanie nijak mi nie wychodzi... program skróciłem do samego "testowego" Do, print, wait i loop więc nie jest to kwestia programu... Potwierdzają to moje obserwacje ledów, gdy samochód nadaje kod dioda odbioru miga jakby 3x szybciej i słabiej niż wtedy kiedy mikrokontroler nadaje. Wiem że kody mogą mieć różną długość ale nawet kiedy napisałem program wysyłający to co odebrał ta długość mignięć była 2-3x dłuższa niż przy odbiorze. Kombinowałem już z kwarcem (najpierw był wewn. generator, teraz 11,0592Mhz zewn), próbowałem również zmiany transmisji - w aucie jest 9600B/s dawałem również 19200 i nic. Dodam że sterowanie przez komputer podłączony do tego układu komem działa wyśmienicie... Również odbieranie danych wysłanych przez atmegę na kom-a sprawdza się w 100%. Podejrzewam że jedyny problem może stanowić właśnie funkcja print (może trzeba coś dokonfigurować?), poniżej załączam schemat i program "testowy". Jeśli ktoś się orientuje w temacie proszę o pomoc...

    Code:

    $regfile = "m32def.dat"
    $crystal = 11059200
    $baud = 9600
    Config Com1 = Dummy , Synchrone = 0 , Parity = Even , Stopbits = 1 , Databits = 8       
    Config Lcd = 16 * 2                                       
    Config Lcdpin = Pin , Port = Portb , E = Porta.4 , Rs = Porta.5
    Config Serialin = Buffered , Size = 50                     
    Config Portd.2 = Output
    Config Portd.3 = Output
    Config Portd.4 = Output
    Config Portd.5 = Output
    Config Portd.6 = Output
    Dim Poz As Byte                                             
    Dim Source As Byte
    Dim Length As Byte
    Dim Dest As Byte
    Dim Dane As Byte
    Dim Kontrola As Byte
    Dim I As Byte
    Dim D(20) As Byte
    Enable Interrupts                                         

    Do
    Wait 1
    Print &H50
    Print &H4
    Print &H68
    Print &H32
    Print &H11
    Print &H1F
    Loop


    Konfiguracje portu ściągnąłem z helpa i wiem że ma być ustawiona szybkość 9600, parity=even, 8bit danych i 1 bit stopu więc może trzeba zmienić pozostałe parametry? A może jest jakiś inny sposób na wysłanie danych po rs-ie? schemat jest troszkę zmodyfikowany (usunięta jest detekcja ruchu na linii - odrazu uprzedzę zarzuty - nawet jeśli nie ma ruchu (led odbioru nie miga) kody nie dochodzą). Próbowałem również podwójną negację sygnału nadawanego (wyjście 9 maxa do 13 a z 12 do tranzystora) i nic to nie dało. Zamiast 2n2222 dałem bc547b (a wcześniej bsx61) - w obydwu jednak przypadkach nic to nie zmieniało. Poniżej schemat...

    [bascom] atmega32 i komunikacja RS232 - opóźnienia printa?

    0 0
  Szukaj w 5mln produktów