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

 
 
> SAM7S256 Системные прерывания перестают работать через 2-4часа, Помогите.
Димон Безпарольн...
сообщение Apr 1 2015, 07:49
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247



Основной процесс работает. Проверял так:
Код
        *PIO_SODR = (1<<18);
        *PIO_CODR = (1<<18);


иосцилографом.

Используются прерывания от Real-time Timer и PITS
Код
__irq void SYS_int (void) {            //Прерывание от System Controller. Время выполнения 1мкс на частоте 48МГц
    if (*PIT_SR & 1) {                //Проверка бита PITS(0) из PIT_SR - регистр статуса интервального таймера
        *PIO_SODR = (1<<18);
        *PIO_CODR = (1<<18);


    if (!(*PIO_PDSR&(1<<28))) {KnobCNT++;}//Если кнопка нажата - считаем время нажатия
    else if (KnobCNT) {Knob = KnobCNT; KnobCNT=0; Beep = 1;}//Если отжата и счетчик ненулевой - перезаписываем
        if (Beep) {                    //Прерывание по Periodic Interval Timer (PIT) стр77. P2.0
            Beep--;                    //
            *PWM_ENA = 2;}            //Разрешить работу канала PWM1 (CHID2) P2.0        
        else {*PWM_DIS = 2;}         //Запретить работу канала PWM1 (CHID2)
        *AIC_EOICR = *PIT_PIVR;    }    //Чтение PIT_PIVR сбрасывает бит PITS в PIT_SR
    if (*RTT_SR & 2) {                //Время выполнения 450нс на частоте 48МГц
        Strob = 1;                    //Прерывание по Real-time Timer (RTT) (для подсчёта секунд) стр71.
        *AIC_EOICR = 1;}            //
        }                            //__irq void SYS_int (void)


Инициализация системного прерывания:
Код
[/code]    *AIC_SMR1    =    (1 << 5) | 1;    //Positive edge triggered (5), 1-й уровень пиоритета
    *AIC_SVR1    =    (unsigned long) SYS_int; //Адрес обработчика прерывания
    *AIC_IECR    =    (1 << 1);        //Разрешить системное прерывание SYS(1)

Инициализация RTT:
[code]    *RTT_MR=0x00008000 | (1<<17);    //Секундный интервал и прерывания RTTINCIEN(17) = 1

Инициализация PIT:
Код
  *PIT_MR =    (1 << 25)|                //Разрешить прерывание от PIT
            (1 << 24)|                //Разрешить работу PIT
            0xAFFFF;                //Потолок счета PIT. Максимальное значение 1 048 575(FFFFFh)(20 бит)


Через произвольное время 2-4 часа колом встает системное прерывание - оно не вызывается. Не могу понять куда копать, какие регистры вывести чтобы проверить. Помогите советом, добрые люди.

Сообщение отредактировал Димон Безпарольный - Apr 1 2015, 07:51
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Димон Безпарольный   SAM7S256 Системные прерывания перестают работать через 2-4часа   Apr 1 2015, 07:49
- - Сергей Борщ   Видимо происходит какое-то совпадение условий, при...   Apr 1 2015, 08:18
|- - Димон Безпарольный   Цитата(Сергей Борщ @ Apr 1 2015, 11:18) В...   Apr 1 2015, 08:20
- - scifi   Внутрисхемным отладчиком подцепиться нет возможнос...   Apr 1 2015, 08:32
|- - Димон Безпарольный   Цитата(scifi @ Apr 1 2015, 11:32) Внутрис...   Apr 1 2015, 08:32
- - aaarrr   ЦитатаThe status register flags reset is taken int...   Apr 1 2015, 08:36
|- - Димон Безпарольный   Цитата(aaarrr @ Apr 1 2015, 11:36) 3. пос...   Apr 1 2015, 08:54
|- - aaarrr   Цитата(Димон Безпарольный @ Apr 1 2015, 11...   Apr 1 2015, 08:59
|- - Димон Безпарольный   Цитата(aaarrr @ Apr 1 2015, 11:59) По пер...   Apr 1 2015, 09:01
- - aaarrr   ИМХО, для прерывания с множеством источников не ст...   Apr 1 2015, 09:04
|- - Димон Безпарольный   Цитата(aaarrr @ Apr 1 2015, 12:04) ИМХО, ...   Apr 1 2015, 09:05
- - Obam   В первом посте меня смущает наличие *AIC_EOICR = 1...   Apr 1 2015, 10:11
|- - Димон Безпарольный   Чего то я совсем запутался. Я думал что для запрещ...   Apr 1 2015, 11:15
|- - aaarrr   Цитата(Димон Безпарольный @ Apr 1 2015, 14...   Apr 1 2015, 11:29
|- - Димон Безпарольный   Цитата(aaarrr @ Apr 1 2015, 14:29) Вынеси...   Apr 1 2015, 11:43
|- - aaarrr   Цитата(Димон Безпарольный @ Apr 1 2015, 14...   Apr 1 2015, 11:53
|- - Димон Безпарольный   Цитата(aaarrr @ Apr 1 2015, 14:53) Лучше ...   Apr 1 2015, 12:00
|- - Димон Безпарольный   Разобрался почему я не могу отключить RTT. Отключи...   Apr 1 2015, 12:16
|- - aaarrr   Цитата(Димон Безпарольный @ Apr 1 2015, 15...   Apr 1 2015, 12:19
|- - Димон Безпарольный   Цитата(aaarrr @ Apr 1 2015, 15:19) Все пр...   Apr 1 2015, 12:20
- - aaarrr   Понятно. Protection mode не задействован, иначе бы...   Apr 1 2015, 12:04
- - aaarrr   Код__irq void sys_irq(void) { if(*PIT...   Apr 1 2015, 12:49
- - Димон Безпарольный   Правильно написал aaarrr (пост6) что медленный тай...   Apr 2 2015, 05:37
- - Димон Безпарольный   Вышел из положения. Величину секундного таймера пр...   Apr 15 2015, 06:07
- - aaarrr   Цитата(Димон Безпарольный @ Apr 15 2015, 09...   Apr 15 2015, 10:05
- - Димон Безпарольный   Цитата(aaarrr @ Apr 15 2015, 13:05) Навер...   Apr 15 2015, 11:59


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

 


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


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