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

[Bascom] Atmega 644pa - przerwanie Timer0 do sprawdzania sygnału GSM na LCD

Subaracz 14 Kwi 2012 14:38 1247 4
REKLAMA
  • #1 10792958
    Subaracz
    Poziom 2  
    Witam szanownych kolegów!

    Piszę mając nadzieję, że ktoś pomoże mi rozwiązać mój problem z którym borykam się już któryś dzień :(

    Otóż programuję w Bascomie Atmegę 644pa-pu do komunikacji po UART z modemem ZTE2639AT.

    Mam problem ze sprawdzaniem siły sygnału GSM. Otóż chciałbym przy pomocy przerwania od timera0 wykonywać takie sprawdzanie a jego wynik wyświetlać na lcd.

    Oto mój kod:

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Program po wgraniu do uC wykonuje inicjalizację modemu, uruchamia timer, generuje przerwanie (przechodzi do etykiety "Spr_zasiegu") i wysyła komendę Print "AT+CSQ" ale niestety na tym się kończy. Mimo, że modem ładnie odpowiada (widzę to w terminalu podpiętym pod PC) to uC tak jakby nie umiał odebrać tych znaków i staje na pętli Loop Until Bufor = "+CSQ:" .

    Co ciekawe jeśli usunę z kodu timer0 i wstawię w główną pętlę wykonywanie "Gosub Spr_zasiegu" to wszystko działa poprawnie!

    Moje pytanie jest takie: co może zmieniać timer0, że etykieta Spr_zasiegu nie wykonuje się poprawnie?

    Z góry dziękuję za każdą sugestię.
    Pozdrawiam!
  • REKLAMA
  • Pomocny post
    #2 10795593
    jousto
    Poziom 17  
    Pewnie że nie będzie działać, ustawiłeś Preskaler =256 a więc przy zegarze 16MHz przerwanie od Timer0 będzie pojawiać się z częstotliwością 62500 razy na sekundę. (16000000/256 = 62500). Zalałeś modem zapytaniami o CSQ i biedny nie ma czasu na odpowiedź.
  • REKLAMA
  • #3 10797270
    Subaracz
    Poziom 2  
    Wielkie dzięki! Oczywiście masz rację!
  • REKLAMA
  • #4 10799184
    Konto nie istnieje
    Poziom 1  
  • #5 10801365
    Subaracz
    Poziom 2  
    Dzięki za uwagę.

    Przyznałem rację poprzednikowi ponieważ wskazał mi przyczynę moich problemów. Natomiast faktycznie częstotliwość wywołania przerwania jest taka jak piszesz.

    Pozdrawiam i dziękuję!
REKLAMA