Witam!
Od dłuższego czasu męczę się aby napisać obsługę wysyłania przez UART na AtTiny2313. Mój kod znajduje się w załączniku. Po zaprogramowaniu procesora otrzymuję na terminalu:
Widać, że słowo "TESTOWY" jest jakoś dziwnie przekłamane, terminal wyrzuca błąd framing error. Prędkość transmisji ustawiona na 9600 bps, próbowałem zarówno z wewnętrznym oscylatorem jak i kwarcem 4 MHz.
Myślałem, że może być problem z tym, że zanim jeden string zostanie wysłany to rozpoczyna się wysyłanie następnego. Dodałem więc zmienną status. Jeżeli usuniemy komentarz przy if(eStatus == READY) to na terminalu dostaniemy szukany string ale tylko jeden (przy "STRING\n\r dzieje się to samo):
Moim zdaniem ten drugi przypadek świadczy o tym, że nie są to problemy z zegarem. Dlaczego jednak w drugim przypadku procesor nie wchodzi ponownie do pętli while...??
Dodam jeszcze, że gdy korzystamy ze statusu i wykomentujemy w ISR linijkę: "UCSRB &= ~(1<<UDRIE); " to na terminalu dostajemy ciągle powtarzający się ciąg "ESTOWY", więc zgubiona jest pierwsza litera no i oczywiście nie wyłączam przerwań. Już kompletnie nie wiem o co chodzi
Jeżeli ktoś byłby w stanie przetestować ten kod, bądź w jakikolwiek sposób mi pomóc to będę bardzo wdzięczny
Od dłuższego czasu męczę się aby napisać obsługę wysyłania przez UART na AtTiny2313. Mój kod znajduje się w załączniku. Po zaprogramowaniu procesora otrzymuję na terminalu:
Widać, że słowo "TESTOWY" jest jakoś dziwnie przekłamane, terminal wyrzuca błąd framing error. Prędkość transmisji ustawiona na 9600 bps, próbowałem zarówno z wewnętrznym oscylatorem jak i kwarcem 4 MHz.
Myślałem, że może być problem z tym, że zanim jeden string zostanie wysłany to rozpoczyna się wysyłanie następnego. Dodałem więc zmienną status. Jeżeli usuniemy komentarz przy if(eStatus == READY) to na terminalu dostaniemy szukany string ale tylko jeden (przy "STRING\n\r dzieje się to samo):
Moim zdaniem ten drugi przypadek świadczy o tym, że nie są to problemy z zegarem. Dlaczego jednak w drugim przypadku procesor nie wchodzi ponownie do pętli while...??
Dodam jeszcze, że gdy korzystamy ze statusu i wykomentujemy w ISR linijkę: "UCSRB &= ~(1<<UDRIE); " to na terminalu dostajemy ciągle powtarzający się ciąg "ESTOWY", więc zgubiona jest pierwsza litera no i oczywiście nie wyłączam przerwań. Już kompletnie nie wiem o co chodzi
Jeżeli ktoś byłby w stanie przetestować ten kod, bądź w jakikolwiek sposób mi pomóc to będę bardzo wdzięczny