Witam,
napisałem program korzystający z USART-u. Zmiana stanu na wybranych wejściach uC ma powodować wysyłanie trzybajtowych pakietów danych. Wysyłanie odbywa się za pomocą przerwania USART_UDRE_vect. I oto dziwna rzecz:
Pomimo, iż w SREG ustawiony jest najstarszy bit, w UCSRA sprzęt wystawia flagę pustego bufora, czyli UDRE jest ustawiony i wreszcie w swojej procedurze nadawczej odblokowuję przerwanie pustego bufora danych czyli ustawiam UDRIE w UCSRB, to procedura zawarta w przerwaniu i tak nie robi.
Ściśle rzecz ujmując uruchamia się kilkakrotnie i później "umiera".
Wszystkie wartości bitów które podałem powyżej, sprawdziłem załączając ledę na jednym z portów. Inaczej rzecz ujmując przerwanie ma wszystko co tylko potrzebuje do uruchomienia procedury a jednak tego nie czyni lub czyni tylko kilka razy. Poniżej przedstawiam kod.
napisałem program korzystający z USART-u. Zmiana stanu na wybranych wejściach uC ma powodować wysyłanie trzybajtowych pakietów danych. Wysyłanie odbywa się za pomocą przerwania USART_UDRE_vect. I oto dziwna rzecz:
Pomimo, iż w SREG ustawiony jest najstarszy bit, w UCSRA sprzęt wystawia flagę pustego bufora, czyli UDRE jest ustawiony i wreszcie w swojej procedurze nadawczej odblokowuję przerwanie pustego bufora danych czyli ustawiam UDRIE w UCSRB, to procedura zawarta w przerwaniu i tak nie robi.
Ściśle rzecz ujmując uruchamia się kilkakrotnie i później "umiera".
Wszystkie wartości bitów które podałem powyżej, sprawdziłem załączając ledę na jednym z portów. Inaczej rzecz ujmując przerwanie ma wszystko co tylko potrzebuje do uruchomienia procedury a jednak tego nie czyni lub czyni tylko kilka razy. Poniżej przedstawiam kod.
Kod: text
