Har lite problem med att skicka data via UART på en ATmega168. Saken är den att jag vill vänta med att gå vidare i mitt program tills dess att all data gått iväg. Detta kontrollerar jag genom att polla TXC0 och gå vidare när den blivit ettställd.
Koden fungerar utmärkt första gången en frame skickas iväg, men efter det väntar inte exekveringen på att framen har gått iväg, utan fortsätter då det finns två bytes kvar att skicka. Jag tycker att detta tyder på att jag inte nollställer TXC0 ordentligt, men jag hittar inte något fel. Såhär gör jag:
Kod: Markera allt
// Vänta på plats i buffer
while ( !( UCSR0A & (1<<UDRE0)) );
//Lägg in sista byte:n i buffer
UDR0 = data;
// Nollställ USART Transmit Complete
UCSR0A &= ~(1<<TXC0);
// Vänta tills alla byte är skickade
while ( !( UCSR0A & (1<<TXC0)) );
// Fortsätt
