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

ATmega16, Bascom, UART - problem z komunikacją z modemem GSM

szymu27 29 Lis 2006 21:57 4414 5
REKLAMA
  • #1 3277519
    szymu27
    Poziom 11  
    Posty: 5
    Witam, na poczatku chcialbym uprzedzic ze moja zabawa z uP zaczela sie b. niedawno :)

    Moj problem polega na tym, ze chcialbym uruchomic modem gsmowy na tej atmedze. Jednak mam pewne problemy z komunikacja. Ktos poradzil mi, zebym zwarl tx i rx po wyjsciu z max232 zeby sprawdzic ustawienia transmisji (odbior - wysylanie). I faktycznie uczynilem tak jak polecil. Efekt jest taki ze jezeli wysle cokolwiek instrukcja print to wyswietlajac to za pomoca funkcji inkey otrzymuje tylko dwa pierwsze znaki a pozniej krzaka i tyle. Dzialam na wewnetrznym oscylatorze. Ponizej zamieszczam kod ktory te dwa znaki generuje:
    
    $regfile "m16def.dat"
    Config Lcd = 16 * 2
    $crystal = 1000000
    $baud = 9600
    Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portb.1 , Rs = Portb.0
    
    
    
    Dim X As Integer , Y As Integer
    Config Portd.1 = Output
    
    X = 12345
    Cls
    Do
    Print X
    Wait 1
    Y = Inkey()
    Upperline
    Lcd "zmienna y:"
    Lowerline
    Lcd Y
    Loop
    


    W przykladach z bascoma znalazlem plik sms.bas, jednak nie chce sie on skompilowac (problemem jest linijka
    Config Serialin = Buffered , Size = 12 
    - generuje on blad: no more space for BIT [_RS_BUFCOUNTR0] Ja nie mam pojecia co on oznacza (google niestety jest w tej kwesji bezsilne).

    Czy ktos moze ma jakies pomysly jak zmusic tego uarta do wspolpracy?
    Ewentualnie moze ktos ma dzialajace rozwiazanie na tego procka?

    PS
    Byc moze problemem sa zle skonfigurowane bity lub wyswietlacz podpiety nie do tego portu co trzeba? Jezeli tak to napiszcie prosze prawidlowa konfiguracje.


    Z gory dzieki za pomoc
  • REKLAMA
  • #2 3279000
    M. S.
    Poziom 34  
    Posty: 2107
    Pomógł: 259
    Ocena: 680
    U mnie poszło coś takiego:

    $regfile "m16def.dat"
    Config Lcd = 16 * 2
    $crystal = 1000000
    $baud = 9600
    Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portb.1 , Rs = Portb.0
    
    Config Serialin = Buffered , Size = 12
    
    Dim X As Integer , Y As Integer
    Config Pind.1 = Output
    Enable Interrupts ' Musisz włączyć przerwania bo jest Config Serialin
    X = 12345
    Cls
    Do
    Print X
    Wait 1
    Y = Inkey()
    Upperline
    Lcd "zmienna y:"
    Lowerline
    Lcd Y
    Loop


    Bascom 1.11.7.4
    Poza tym zmienna = INKEY( ) zwraca kod ASCII pierwszego znaku znajdującego się w buforze transmisji szeregowej.
    Jeśli transmisja przez UART kończy się znakiem CR (enter) to spróbuj instrukcji Input. Ona odbierze Ci wszystko, lecz zawiesi program jak nie znajdzie znaku CR - bo instrukcja będzie czekać. Można też odczytywać UART po jednym znaku w pętli za pomocą INKEY dodając odczytany znak do zmiennej typu String do czasu występowania znaków w buforze. Patrz instrukcja zmienna = ISCHARWAITING(). Po wykonaniu pętli w zmiennej typu string znajdze się zawartść UART
    Na przykład może to wyglądać tak (w podprogramie):

    Odczytaj_sprzetowy_uart:
    
    Uart_txt = ""
    
    Do                            'Odbierz znak po znaku
      Kod = Inkey()
      Uart_txt = Uart_txt + Chr(kod)       'Zapisz w Uart_txt
      Bufor = Ischarwaiting()     
    Loop Until Bufor = 0 Or Kod = 13 'Zakoncz jeśli CR(Kod=13) lub brak znaku Bufor=0.
    Return
  • REKLAMA
  • #3 3279398
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 300
    szymu27 napisał:
    chcialbym uruchomic modem gsmowy na tej atmedze.
    [...]zwarl tx i rx po wyjsciu z max232


    Po co do komunikacji z GSM potrzebny ci MAX ?
    Czyżbyś połączył uC ->MAX-> GSM ? To nie zadziała.
  • REKLAMA
  • #4 3281582
    szymu27
    Poziom 11  
    Posty: 5
    Modem to Wavecom Wmod2 i wedlug dokumentacji komunikuje sie on RS'em. I stad ten uklad max232. Pozdrawiam

    Dodano po 26 [minuty]:

    Ja mam bascoma w wersji 1.11.8.3 i on niestety generuje taki blad. Ale sciagnalem wersje 1.11.7.4 i hula :) Wiec znow moge sie brac do zabawy :)
  • REKLAMA
  • #5 3282112
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 300
    szymu27 napisał:
    Modem to Wavecom Wmod2 i wedlug dokumentacji komunikuje sie on RS'em. I stad ten uklad max232.


    A jak ten modem jest podłączany np. do PC ?
    Jeżeli ma złącze COM to znaczy że ma wbudowany konwerter RS->TTL.
    Jeżeli do podłączenie do PC potrzebuje MAX-a to, to zastosowanie MAX-a do komunikacji z uC jest bez sensu.
    MAX-y konwertują sygnał TTL (5V/3V3) do standardu +10V/-10V.
    Przy połączeniu uC z jakimkolwiek urządzeniem posługującym się logiką 5V/3V3 MAX nie ma żadnego zastosowania.
  • #6 3762365
    MarasTej
    Poziom 12  
    Posty: 28
    chyba wiem w czym problem z tym błędem przy próbie kompilacji "Config Serialin = Buffered , Size = ..." Proponuje zainstalować demo lub zakupić oryginalny kompilator :), bo na z c r a c k ' owanej wersji tak się dzieje
REKLAMA