Zacznę bez zbędnego wstępu.
Do czujnika PMSA003 wysyłam kilka ramek w trakcie działania programu - wszystkie mają 7 bajtów. Xmegę debuguję, a USART obserwuję analizatorem stanów.
Dwie pierwsze instrukcje docierają do czujnika poprawnie. Kiedy jednak wychodzi trzecia, to po 5 bajtach stan linii TX pozostaje niski, a flaga DREIF wskazuje na brak miejsca w buforze. Wystarczy jednak, że zapałzuję debugowanie i włączę ponownie - wtedy natychmiast flaga wskakuje i dosyłane są ostatnie dwa bajty. Ewentualnie muszę odczekać zaprogramowany czas gdy program ponawia wysłanie tej ramki.
Jakie mogą być teoretyczne przyczyny nie opróżniania buforu USART? Myślałem, że dane, zgodnie z FIFO, wędrują wprost na rejestr przesuwny nadajnika, a ograniczeniem jest jedynie prędkość transmisji.
Do czujnika PMSA003 wysyłam kilka ramek w trakcie działania programu - wszystkie mają 7 bajtów. Xmegę debuguję, a USART obserwuję analizatorem stanów.
Dwie pierwsze instrukcje docierają do czujnika poprawnie. Kiedy jednak wychodzi trzecia, to po 5 bajtach stan linii TX pozostaje niski, a flaga DREIF wskazuje na brak miejsca w buforze. Wystarczy jednak, że zapałzuję debugowanie i włączę ponownie - wtedy natychmiast flaga wskakuje i dosyłane są ostatnie dwa bajty. Ewentualnie muszę odczekać zaprogramowany czas gdy program ponawia wysłanie tej ramki.
Jakie mogą być teoretyczne przyczyny nie opróżniania buforu USART? Myślałem, że dane, zgodnie z FIFO, wędrują wprost na rejestr przesuwny nadajnika, a ograniczeniem jest jedynie prędkość transmisji.