USART в хмеге. Нихрена не понятно Мне нужно 6 uart. Выбрал демо-платку с хмегой (128а1). Запустил демо-пример с одним uart - работает. Дальше по образу и подобию добавляю второй uart в программу - перестает работать то, что работало только что.
Методом тыка обнаруживаю что проблема выглядит вот так:
USART_Baudrate_Set(&USART, 11, -1); //19200
//USART_Baudrate_Set(&USART_bopi2, 12 , 0); //кривые данные из-за этой строки //нужно эту строчку перенести в другое место
Т.е. от перестановки слагаемых сумма таки меняется.
Настроил каждый uart отдельно - работает. Отдельно - это значит
USART_InterruptDriver_Initialize(xxx);
USART_Format_Set(xxx);
USART_RxdInterruptLevel_Set(xxx);
USART_Baudrate_Set(xxx);
USART_Rx_Enable(xxx);
USART_Tx_Enable(xxx);
Для одного usart, потом тоже самое для следующего.
Теперь вот сочиняю прогу. Краткая выдержка :-)
#define USART_bopi1 USARTF1 //порт подключения БОПИ 1
#define USART_bopi2 USARTF0 //порт подключения БОПИ 2
#define USART_bopi3 USARTE1 //порт подключения БОПИ 3
#define USART_bopi4 USARTD0 //порт подключения БОПИ 4
#define USART_modem USARTD1 //порт подключения модема
#define USART USARTE0 //порт подключения ПК
Все настраивается одинаково. USART_bopi4 нихрена не работает, все работает, а он - нет. В буфере одни нули. Данные идут (перекидывал шлейфы). В связи с печальным опытом (см. выше) даже не знаю, что думать. Кто-нибудь задействовал 6 UART в хмеге? Попробую скачать последний winavr еще.
В общем, буду благодарен за любые идеи как победить эту скорбь