Я ща пытаюсь написать функцию чтения с порта с выходом по таймауту. Ща седелал ее через RTTC. Но как я догадываюсь у UART есть возможность детектить таймаут самостоятельно. Расскажите плиз как пользоваться US_RTOR.
Цитата
This function allows an idle condition on the RXD line to be detected. The maximum delay for which the USART should wait for a new character to arrive while the RXD line is inactive (high level) is programmed in US_RTOR (Receiver Time-out). When this register is set to 0, no time-out is detected. Otherwise, the receiver waits for a first character and then initializes a counter, which is decremented at each bit period and reloaded at each byte reception. When the counter reaches 0, the TIMEOUT bit in US_CSR is set. The user can restart the wait for a first character with the STTTO (Start Time-out) bit in US_CR.
Calculation of time-out duration:
Duration = US_RTOR Value × 4 × Bit Period
Как я понимаю в US_RTOR выставляется время через которое считается что произошел таймаут передачи. Типа если ставлю 200 мсек, то если символы будут приходить поочереди с задержкой в 199 мсек - флаг US_CSR не выставится. Как только придет символ с задержкой >=200 - выставится. Правильно?
Объясните плиз как высчитать задерку. Мне формула Duration = US_RTOR Value × 4 × Bit Period непонятна. Bit period - это baud rate? Правильно я понимаю что если US_RTOR=1 и скорость порта 9600 то задержка между символами не более 1 * 4 * (1/9600) ~ 0,0004 секунды?