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

 
 
> проблемы с SAM7S256
Китаев Владимир
сообщение Feb 3 2009, 09:06
Сообщение #1





Группа: Новичок
Сообщений: 10
Регистрация: 7-07-08
Из: Новомосковск, Тульская область
Пользователь №: 38 779



Здравствуйте!
Столкнулся при работе с SAM7S256 с непонятной проблемой.
Использую прерывание SYS для обработки прерываний от DBGU и RTTC. В начале все работает, происходит несколько прерываний DBGU и RTTC, а затем прерывания перестают возникать вообще, хотя галочки pending и mask все время установлены. Сама прога в этот момент вертится в бесконечном цикле в main.
Что это может быть и как это можно исправить?
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Китаев Владимир
сообщение Feb 3 2009, 09:48
Сообщение #2





Группа: Новичок
Сообщений: 10
Регистрация: 7-07-08
Из: Новомосковск, Тульская область
Пользователь №: 38 779



Я уже привожу, просто убирал все лишнее...

Код
__irq void IRQ_DBGU(void)
    {char j, k, l, h;
    short i;
    long long temp;
    unsigned int status;
    long long TMP;
    int R;

    // get Usart status register and active interrupt
    status = AT91C_BASE_DBGU->DBGU_CSR;
    if (status & AT91C_US_RXBUFF)
        {     
        ...
        ОБРАБОТКА DBGU
        ...

        memcpy(buff_rx, buff_rx_null, sizeof(buff_rx_null));
        AT91C_BASE_DBGU->DBGU_RPR = (unsigned int) buff_rx;
        AT91C_BASE_DBGU->DBGU_RCR = 40;
        //* Reset the satus bit for error
        AT91C_BASE_DBGU->DBGU_CR = AT91C_US_RSTSTA;
        }

    if (status & AT91C_US_TIMEOUT)
        {
        AT91C_BASE_DBGU->DBGU_CR = AT91C_US_STTTO;
        }

    //status = AT91C_RTTC_RTTINC;  
    status = AT91C_BASE_RTTC->RTTC_RTSR;
       if (status != 0)
           {
            ...
            ОБРАБОТКА RTTC
            ...
            }    
    AT91C_BASE_AIC->AIC_ICCR = (1 << AT91C_ID_SYS);
    AT91C_BASE_AIC->AIC_EOICR = 0;
    }


Сообщение отредактировал Китаев Владимир - Feb 3 2009, 10:05
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 3 2009, 10:10
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Китаев Владимир @ Feb 3 2009, 12:48) *
Я уже привожу, просто убирал все лишнее...

Ничего криминального, кроме совершенно не нужной записи AIC_ICCR я не вижу.
А Вы учитываете, что RTT снимает запрос на прерывание только через 2 такта SCLK после чтения RTTC_RTSR?
Go to the top of the page
 
+Quote Post
Китаев Владимир
сообщение Feb 3 2009, 10:42
Сообщение #4





Группа: Новичок
Сообщений: 10
Регистрация: 7-07-08
Из: Новомосковск, Тульская область
Пользователь №: 38 779



Цитата(aaarrr @ Feb 3 2009, 13:10) *
Ничего криминального, кроме совершенно не нужной записи AIC_ICCR я не вижу.
А Вы учитываете, что RTT снимает запрос на прерывание только через 2 такта SCLK после чтения RTTC_RTSR?

Попробовал просто внести задержку (пустым циклом) после чтения RTTC_RTSR - вроде бы помогло. Спасибо. Как это вообще более правильно реализовать? У меня из за этой задержки поплыли измерения, которые сделаны по прерыванию от таймера. Этой задержкой я просто торможу таймер.

Сообщение отредактировал Китаев Владимир - Feb 3 2009, 10:44
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 3 2009, 11:12
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Китаев Владимир @ Feb 3 2009, 13:42) *
Как это вообще более правильно реализовать?

Правильно - не пользоваться RTT, ИМХО. Есть же вполне нормальные таймеры - TC, PIT.
Go to the top of the page
 
+Quote Post
Китаев Владимир
сообщение Feb 3 2009, 13:22
Сообщение #6





Группа: Новичок
Сообщений: 10
Регистрация: 7-07-08
Из: Новомосковск, Тульская область
Пользователь №: 38 779



Цитата(aaarrr @ Feb 3 2009, 14:12) *
Правильно - не пользоваться RTT, ИМХО. Есть же вполне нормальные таймеры - TC, PIT.

TС все заняты, а о PIT неподумал ... спасибо. a14.gif
Go to the top of the page
 
+Quote Post



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

 


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


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