Не удается настроить MSP430 на работу по прерыванию, при приеме байта(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено misyachniy 03 июля 2003 г. 19:27


Использую MSP430F147 IAR 1.25A
Обновил последним fet_r306u.exe с сайта TI
Не полечил, так как для ассемблера не требуется(а может и ошибаюсь)

Прием по опросу бита работает.

А с работой по прерываниям не хочет.

При запуске процессора без отладчика, по приему байта переходит на
сброс.

При работе под отладчиком, переходит на первую инструкцию и
при попытке сделать шаг - вываливается по ошибке
"Не могу выполнить один шаг" и Windows закрывает C-Spy
как программу выполнившую недопустимую операцию.

Если поставить точку останова на первую команду
по адресу 8000h то при приеме байта в отладчике можно походить
Счетчик PC показывает попеременно адрес 0000 или 0004
И SP уменьшается на слово каждый раз.

Создается стойкое впечетление, что намудрил со стеком.

Инициализирую стек:
mov #SFE(CSTACK),SP ; define stackpointer

Похоже на правду, для F147 прописывает 0600h
при вызове подпрограмм растет вниз на слово 05FEh
вызове прерывания на два 05FСh.

Обработку прерывания свел к двум командам

UART0RX_ISR:
DINT
reti


Вектора расположил тоже вроде правильно.

COMMON INTVEC ; Interrupt vectors

org UART0TX_VECTOR ; USART 0 Transmit */
dw UART0TX_ISR

org UART0RX_VECTOR ; USART 0 Receive */
dw UART0RX_ISR

В начале программы запрещаю все прерывания
а затем разрешаю, только от Приемного буфера
bic.b #0FFh,&IE1
bic.b #0FFh,&IE2


Подозрительно что после очистки IE1 и IE2
Пошагово проверяю, что все сброшено:
mov.b &IE1, temp ; действительно 00
mov.b &IE2, temp ; почему-то 01

Лечить IAR, или меня?
То ли пойти пить пиво, ошибку в генах ведь не не исправить ;-)

Спаcибо за внимание.


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru