Суть вот в чем, отправляю посимвольно данные через UART на плату(конкретно вот эти данные: 00112233445566778899), после чего AVR должна отчитаться о получении этих данных(а именно вывести собственно эту строку обратно), а получаю неведомую дичь в виде 0013445566778899, куда могут пропадать эти 4 злосчастные циферки, ума не приложу
if ((UCSRA & (1<<7)))
{
pacet[uartChecker]=UDR;
uartChecker++;
if (uartChecker == 20)
{
lng=strlen(pacet);
for (int t=0; t < uartChecker; t++) {
while ( !( UCSRA & (1<<5)) ) {}
UDR=pacet[t];
_delay_ms(1000);
}
uartChecker = 0;
}
}
собственно вот код, я получаю данные, когда знаков становится 20 штук он отправляет их обратно, но видимо неведомая сила не дает отправить 3,4 и 5 символ
Может тайминги не выдерживаются
В смысле, что для компа 9600 выдерживается, а для контроллера они 9700, например оказываются.
В даташите есть допустимое отклонение F_CPU/16/BAUD-1 от целого
Сам недавно глюк словил, когда пытался на 4 МГц на 9600 запуститься. Фигня валилась в терминал. Пришлось на 8 МГц перейти.
Короче инициализацию уарта и частоту контроллера в студию.