USART Mega16 косяк с флагом UDRE
Добавлено: Вс июл 15, 2007 15:58:36
хочу поделиться, чтобы никто не мучался, если что...
было:
у меня был такой код, когда посылал первую команду от компьютера к uC, то в ответ по идее должно было отправляться 4ре байта в компутер. Программировал uC и да действительно присылалось 4ре байта, но в ответ на вторую и след комманду присылалось 2а байта. Сломал часть своего мозга. JTAG'а дома нету... посмотреть что происходит тоже не мог... дописал одну строчку в конец цикла через 4ре часа мучений и о чудо случилось всё заработало.
было:
Код: Выделить всё
void TransferBufferUSART(unsigned char *massive, unsigned char size) {
for (unsigned char i = 0; i < size; i++) {
while (!(UCSRA && (1 << UDRE)));
UDR = *(massive + i);
}
}
Код: Выделить всё
UCSRA &=~(1 << UDRE);