Bascom i obsługa przerwania od UART'a troche dlugie

Witam Napisalm sobie taki prosty programi komunikujacy sie z telefonem i pokazujacy akutalny stan sygnalu.

tak wyglada fragnet programu z procedura:

$crystal = 11059200 $baud = 9600 Config Serialin = Buffered , Size = 100 Config Lcd = 16 * 2

......

I = 0 Watch = 0 Enable Interrupts Odczyt Disable Interrupts Waitms 10 Loop

Sub Odczyt: Print "AT+CSQ" Cls While I <> &H4B I = Inkey() If I > 32 Then ' Lcd Chr(i); Napis = Napis + Chr(i) End If ' Incr Watch ' If Watch > 200 Then I = &H4B Wend End Sub

Niestety program czasmi potrafi sie zgubic ... i znika wtedy wszystko z LCD. Wydaje mi sie ze przyczyna lezy w fakcie takim ze nie zawsze procedura zdazy wylapac cos w buforze UART'a i w zwiazku z tym program sie zapetla czekajac na znak &HB4 (K czyli na OK od telefonu) a nic nie znajduje i kreci sie w kolko w petli.

Probowalem dorobic prosty mechanizm wychodzenia z tej petli po przekroczeniu pewnego stanu licznika watch ... niestety za kazdym razem zmienna watch ma inny stan kiedy program wychodzi z petli while ...wend ... tak jak by dane wylapywane przez RS'a byly w roznych miejsach w tym buforze i trzeba bylo je wyszukac ....

Pytanie jak sobie poradzic z takim problemem ?

Drugia sprawa .. nie wiem czemu kiedy nie zablokuje przerwan przed uzyciem komendy wait albo waitms , waitus to program pojdzie w kosmos ... mam wraznie jak by wait'y byly robione na licznikach a owe liczniki zglaszaly przerwania i stad ten kosmos ... jak ustawic maske przerwan aby dzialalo tylko to od uart'a ?

Dla formalnosci procek to Mega8535 taktowana zewnetrznym kwarcem 11,059 Mhz , kondziory przy kwarcu 27pF ustawienia fuse bitow od zegara 1011

Reply to
invalid unparseable
Loading thread data ...

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.