Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC2387 сбросить бит THRE
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
megajohn
в, общем есть такая задача - передавать по UART сначала по поллингу U0LSR & TEMT, а по завершению передачи, разрешить прерывание U0IER |= THRE (1 << 1)
но сразу же вываливаюсь в прерывание VICIRQ_UART0

вопрос, как вручную сбросить флаг THRE в U0LSR чтобы не возникало прерывания по разрешению ?

согласно UM10211 это можно сделать так: The THRE interrupt is reset when a UnTHR write occurs or a read of the UnIIR occurs and the THRE is the highest interrupt (UnIIR[3:1] = 001).
пробую после передачи читать U0IIR результат, получается 0b00000000000000000000000011000001 что не соответствует маске THRE и соовтесвенно по разрешению U0IER |= THRE влетаю в VICIRQ_UART0
_NB
Цитата(megajohn @ Dec 28 2011, 14:34) *
согласно UM10211 это можно сделать так: The THRE interrupt is reset when a UnTHR write occurs or a read of the UnIIR occurs and the THRE is the highest interrupt (UnIIR[3:1] = 001).

Это работает, если прерывание разрешено.
Попробуйте выполнить TX FIFO RESET (если FIFO используется).
Но очень похоже на то, что это особенность работы UART LPC23xx
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.