![]() |
Модераторы: PILOT, ManiaK, Mazzi |
![]() ![]() ![]() |
|
xelax |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 12.4.2005 Репутация: 0 Всего: 1 |
Начал разбираться с LPC 2106. Купил книжку Тревора Мартина "Микроконтроллеры семейство ARM7 LPC2000 компании Philips". Так вот там мимоходом так в главе про универсальный асинхронный приёмопередатчик сказанно дословно :
"FIFO буфер передачи генерирует прерывания при опустошении регистра хранения передатчика THR, а также при опустошении сдвтгового регитсра передатчика TSR". В юзермануале ничего похожего не нашёл. Вообще про прерывание по освобождению TSR ни слова. Кто может прокомментировать расхождение в книжке и мануале. UART у меня заведён на драйвер RS485, и по окончанию передачи мне его надо переводить на приём. Пока сделал тупо - после прерывания от THR последнего символа, в цикле жду пока поднимется флажок в регистре LSR. Пока не вижу как сделать более корректно. Прерывание от TSR спасло бы ситуацию. |
|||
|
||||
Ivan. |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 2.11.2004 Репутация: 1 Всего: 2 |
Я еще плохо знаю как там реализованно в ARM (руки не доносят), но в AVR сделано так:
- там есть аппаратный буфер их 2-х байт, - прерывание принятого байта (все просто), - прерывание об присудствии свободного места в буфере (тоесть пока контроллер отправляет один байт, ты можешь подготавливать следующий байт, чтобы не разрывать пакет), - и прерывание об полностью освободившемся буфере (тоесть данные полностью улетели и ты можешь занимать линию (переключать прием-передачу)). В ARM есть прямой доступ к памяти DMA, два указателя на буферы отправки и размеры этих буферов. принцип: ты заполнил один буфер, дал команду отправлять, заполнил второй буфер и добавил его в очередь. когда контроллер отправит один буфер, он вызывает прерывания, говоря, что есть свободное место в очереди. Если тебе надо отправить еще данные - ты заполняешь следующий буфер и ставишь его в очередь. Когда оба буфера освободяться - вызывается другое прерывание, каторое скорей всего и говорит о том, что данные полностью отправлены. также там есть непосредственный регистротправки, в каторый ты можешь класть данные. (он помоему занимает 10 бит). Не скажу, что 100% информация, но я понял так. -------------------- Я могу ВСЁ, вопрос - сколько времени у меня это займет! |
|||
|
||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
Ivan,
прям как в анекдоте про студента который выучил один билет из 25 про червяков, ему попадается про слона, тогда он рассказывает: слон - животное с червеобразным хоботом, черви бывают... По делу: я сам сейчас ковыряюсь с АРМ7ом, и делаю это исключительно по даташиту, в даташите указанного прерывания нет, а значит его нет и в кристалле. Вот все прерывания USART (маски): • RXRDY: RXRDY Interrupt Enable • TXRDY: TXRDY Interrupt Enable • RXBRK: Receiver Break Interrupt Enable • ENDRX: End of Receive Transfer Interrupt Enable • ENDTX: End of Transmit Interrupt Enable • OVRE: Overrun Error Interrupt Enable • FRAME: Framing Error Interrupt Enable • PARE: Parity Error Interrupt Enable • TIMEOUT: Time-out Interrupt Enable • TXEMPTY: TXEMPTY Interrupt Enable • ITERATION: Iteration Interrupt Enable • TXBUFE: Buffer Empty Interrupt Enable • RXBUFF: Buffer Full Interrupt Enable • NACK: Non Acknowledge Interrupt Enable • RIIC: Ring Indicator Input Change Enable (2) • DSRIC: Data Set Ready Input Change Enable (2) • DCDIC: Data Carrier Detect Input Change Interrupt Enable (2) • CTSIC: Clear to Send Input Change Interrupt Enable • MANE: Manchester Error Interrupt Enable(1) Под описание больше всего подходит: • TXRDY: TXRDY Interrupt Enable • TXBUFE: Buffer Empty Interrupt Enable • TXEMPTY: TXEMPTY Interrupt Enable СУВ. Добавлено @ 23:01 Есть смысл посмотреть на: AT91SAM7S2...8_64_321_32.pdf страница 339. СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
Ivan. |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 2.11.2004 Репутация: 1 Всего: 2 |
лоханулся
-------------------- Я могу ВСЁ, вопрос - сколько времени у меня это займет! |
|||
|
||||
xelax |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 12.4.2005 Репутация: 0 Всего: 1 |
У Atmelа гораздо лучше продуманная работа с UARTом. Но у меня выхода нет, уже готовая железяка досталась на LPC.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |