Используется бридж USB to UART СР2101 silabs.
Запускаю передачу файла через гипиертерминал. Файл состоит из последовательности ASCII цифорок.
На меге творится что-то странное. На 9600 иногда принимается нормально, иногда через байт то есть например передаю несколько раз 2. на приёме вижу 0х32 0хb2 0x32 0xb2 ... и т.д. со всеми цифрами.
Ситауация исправилась, когда на гипертерминале ставлю два стоп бита.
На скорости 38400 два стоп бита уже не спасают.
Мега работаёт на внутреннем RC генераторе на 4 Мгц. При старте программы генератор калибруется по внешнему часовому кварцу, который для асинхронного таймера.
бодрейт считается так.
Код
#define UART_DOUBLE_SPEED 1ul
enum
{
UART_BAUDRATE_9600 = (unsigned)((F_CPU * (UART_DOUBLE_SPEED + 1ul)) / (16ul * 9600ul) - 1ul),
UART_BAUDRATE_38400 = (unsigned)((F_CPU * (UART_DOUBLE_SPEED + 1ul)) / (16ul * 38400ul) - 1ul)
}
Вообще что это такое может быть?
З.Ы.
Гоняю данные другой терминальной программой всё ок и на приём и на передачу.