Witam
W zasadzie już zbliżam się ku koncowi stacji meteorologicznej z wykorzystaniem atmegi8 i PC. Z uwagi na funkcje jakie musze wykorzystać a wiec timer i USART wystapił problem. Wykorzystując timer1 generuje przerwanie co sekunde i licze czas aktualny. Podczas połączenia z komputera wysyłam na zasadzie: 1 znak z PC, a w odpowiedzi z Atmegi string z 12 znaków i takich cykli będzie kilkadziesiąt. Ponieważ komunikacja może zostać wywołana w każdej chwili z PC i kiedy w grę wchodzi do tego przerwanie od timera stwierdziłem że podczas wywołania procedury USART poprostu wyłącze timer i włącze po zakończeniu transmisji i zsynchronizuje się z czasem z PC. I tutaj pojawił sie problem. Timer1 po 10 sekundach wyłącza mi się czyli podejżewam, że atmega wchodzi w procedure USARTA. Czy ma ktoś może jakąś metode na podobne zjawiska? Na osobnym programie obsługi RS232 wszystko działa bez problemu, a w połączeniu z kompletnym programem stacji klęka.
powyżej zamieszczam obsługę USART. Z góry dziękuję za wszystkie podpowiedzi
Poprawiłem tytuł - Regulamin. [c_p]
W zasadzie już zbliżam się ku koncowi stacji meteorologicznej z wykorzystaniem atmegi8 i PC. Z uwagi na funkcje jakie musze wykorzystać a wiec timer i USART wystapił problem. Wykorzystując timer1 generuje przerwanie co sekunde i licze czas aktualny. Podczas połączenia z komputera wysyłam na zasadzie: 1 znak z PC, a w odpowiedzi z Atmegi string z 12 znaków i takich cykli będzie kilkadziesiąt. Ponieważ komunikacja może zostać wywołana w każdej chwili z PC i kiedy w grę wchodzi do tego przerwanie od timera stwierdziłem że podczas wywołania procedury USART poprostu wyłącze timer i włącze po zakończeniu transmisji i zsynchronizuje się z czasem z PC. I tutaj pojawił sie problem. Timer1 po 10 sekundach wyłącza mi się czyli podejżewam, że atmega wchodzi w procedure USARTA. Czy ma ktoś może jakąś metode na podobne zjawiska? Na osobnym programie obsługi RS232 wszystko działa bez problemu, a w połączeniu z kompletnym programem stacji klęka.
Do
If Ischarwaiting() = 1 Then
Stop Timer1
Bufor = Inkey()
Print Wyjscie(w)
Incr W
If W > Ilosc Then W = 1
If W = Ilosc Then Start Timer1
End If
Loop
End
powyżej zamieszczam obsługę USART. Z góry dziękuję za wszystkie podpowiedzi
Poprawiłem tytuł - Regulamin. [c_p]