реклама на сайте
подробности

 
 
> Импульс на TXD при включении USART, AT91SAM7S
kichkine
сообщение Mar 6 2007, 17:07
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 3-11-06
Из: Kiev
Пользователь №: 21 933



Включаю USART следующей последовательнстью:

*(AT91C_PIOA_ASR) = (1 << 5) | (1 << 6);
*(AT91C_PIOA_PDR) = (1 << 5) | (1 << 6);
*(AT91C_PIOA_PPUDR) = (1 << 5) | (1 << 6);
*(AT91C_PMC_PCER) = 1 << AT91C_ID_US0;

TXD все время имеет высокий уровень, кроме момента выполнения последней строчки. Там наблюдается "отрицательный" импульс 90 мкс. Откуда он там?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Hexxx
сообщение Mar 23 2007, 12:29
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 49
Регистрация: 29-03-06
Пользователь №: 15 592



Я ща пытаюсь написать функцию чтения с порта с выходом по таймауту. Ща седелал ее через 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 секунды?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 13:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01366 секунд с 7
ELECTRONIX ©2004-2016