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

 
 
> Freescale 56F800/E., Нет перехода в обработчик прерывания 56F8013.
Индеец
сообщение May 19 2008, 11:25
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 20
Регистрация: 10-05-07
Из: spb
Пользователь №: 27 634



Здравствуйте!
Осваиваю семейство 56F800/E. Не удается активировать механизм прерываний на кристалле. Кто работает с этим семейством, помогите пожалуйста разобраться - уже не первый день ломаю голову, все даташиты прочитал wacko.gif .
Девайс: 56F8013. CW Development Studio v.8.0.

Тестовая программа при установке f_event = true, устанавливает бит в регистре IASSRT порта C, чем вызывает software interrupt.

Через отладчик видно:
1. Bit0 регистра IASSRT действительно устанавливается - Ok. Что приводит:
1.1. Устанавливается bit0 регистра IPEND - Ok.
1.2. Сбрасывается в 0 соответствующий номеру вектора прерывания (23) bit регистра IRQP1 - Ok.
2. Однако не устанавливается bit INT регистра ICTRL, говорящий о том, что interrupt is being sent to the 56800E core - NOT Ok.
3. Bit INT_DIS регистра ICTRL, запрещающий все прерывания не установлен - Ok.
4. Перехода в программу-обработчик прерывания не происходит.

Фрагмент кода:
Цитата
Код
#define PC_BASE__    0xF120
#define PC_IASSRT    *(unsigned short volatile *)(PC_BASE__ + 4)

volatile int w_dummy;
volatile bool f_event;
#pragma interrupt off

void main (void)
{
    ioctl(SYS, SYS_INIT, NULL);
    ioctl(INTC, INTC_INIT, NULL);
    
    ioctl(GPIO_A, GPIO_INIT, NULL);
    ioctl(GPIO_B, GPIO_INIT, NULL);
    ioctl(GPIO_C, GPIO_INIT, NULL);
    ioctl(GPIO_D, GPIO_INIT, NULL);
    
    while(1)
    {
        if(f_event)                        //устанавливается в отладчике                
        {
            f_event = false;                                      
            PC_IASSRT |= 0x01;                     //вызов software interrupt
        }
    }
}

#pragma interrupt on
void ISR_test(void)
{
    w_dummy++;
}
#pragma interrupt reset


В Graphic Configuration Tool в разделе INTC - Interrupt Controller указал имя обработчика прерывания и приоритета, на что в файле appconfig.h добавились строки:
Цитата
Код
#define INTC_ICTL_INIT                    0x0000
#define INT_VECTOR_ADDR_23                ISR_test
#define INT_PRIORITY_LEVEL_23             INTC_LEVEL1

Ну что ему не нравится???!!! sad.gif
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 21:23
Рейтинг@Mail.ru


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