Проблема в следующем:
нужно определить момент завершения передачи пакета данных (RS485).
Передача байта:
Код
if (UCSR0A&(1<<UDRE1)) {
UCSR0A=(1<<TXC0);
UDR0 = TxBuffer.ReadByte();
}
UCSR0A=(1<<TXC0);
UDR0 = TxBuffer.ReadByte();
}
Переключение линии:
Код
if (TxBuffer.Size()==0) {
if (UCSR0A&(1<<TXC0)) {
if (OffTx485Count) {
if (--OffTx485Count==0) {
DDRB|=(1<<5);
PORTB|=(1<<5);
}
}
}
}
if (UCSR0A&(1<<TXC0)) {
if (OffTx485Count) {
if (--OffTx485Count==0) {
DDRB|=(1<<5);
PORTB|=(1<<5);
}
}
}
}
В JTAG-е вижу странную ситуацию:
после записи в UDR0 (UDR0 = TxBuffer.ReadByte())
бит TXC сразу же устанавливается, чего быть не должно.
Как тогда определить конец пакета?