Цитата(Neznaika @ Jun 13 2018, 14:42)
Всем привет! Очередной затык.. теперь с UART. Кому-нибудь удавалось менять скорость UART после его инициализации. В документации написано, что это возможно в том случае, когда передача и прием полностью завершены. Контролирую флаги в статусном регистре - на передачу (5 бит) в 1, на прием (7 бит) - 0. Пытаюсь сменить скорость и ничего не получается, UART работает со старой. Может кто ткнет носом, куда посмотреть?..
у меня все работает. идет подбор скорости для GPS приемника. флаги не контролирую, но смена скорости происходит (GPS приходят как со скоростью 9600, так и 115200).
использую ATXMEGA А4U от 32 до 128
Код
__flash static unsigned int bscale[] = {1666, 832, 416, 207, 103, 68, 51, 34, 16}; // for 16MHz
USARTD1.CTRLA = (unsigned char)USART_RXCINTLVL_MED_gc|USART_TXCINTLVL_LO_gc;
USARTD1.CTRLB = USART_RXEN_bm | USART_TXEN_bm | USART_CLK2X_bm;
USARTD1.CTRLC = 0x03;
b = bscale[a];
USARTD1.BAUDCTRLA = b&0xff;
USARTD1.BAUDCTRLB = b>>8;