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

 
 
> Real Time Timer & Periodic Interval Timer у SAM7S
Timofey
сообщение Apr 4 2007, 12:29
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 119
Регистрация: 3-07-06
Пользователь №: 18 528



Что то я запутался как правильно сконфигурировать прерывания у обоих. Код:
Код
int test_flag=0,test_flag2==0;
#define PIT_INTERRUPT_LEVEL 7
#define PIV_MS 60000         ////////////////////////////////////////////////
void Timer_handler(void)
{
  unsigned int status;
  //проверяем, прерывание от RTT или нет
  if (AT91C_BASE_RTTC->RTTC_RTSR & AT91C_RTTC_RTTINC) {
    
     if (test_flag==1) {
         AT91C_BASE_PIOB->PIO_SODR = (1<<22);
         test_flag=0;
         }
     else {
       AT91C_BASE_PIOB->PIO_CODR = (1<<22);
       test_flag=1;
     }
    
   }
  
  //проверчем преривание от PIT ли
  if (AT91C_BASE_PITC->PITC_PISR & AT91C_PITC_PITS) {
     status = AT91C_BASE_PITC->PITC_PIVR;//сброс прерывания
     status =status;
     if (test_flag2==0) {
         AT91C_BASE_PIOB->PIO_SODR = (1<<19);
         test_flag2==1
         }
     else {
       AT91C_BASE_PIOB->PIO_CODR = (1<<19);
       test_flag2==0;
     }
    
   }
  
  
  
  AT91C_BASE_AIC->AIC_EOICR=0x00;
  
}    /////////////////////////////////////////////
////////Конфигурирование Timer TC1///////////
/////////////////////////////////////////////
void CnfTime1 (void)
{
  AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA );//конфигурируем PIT
  AT91C_BASE_PITC->PITC_PIMR = AT91C_PITC_PITEN | AT91C_PITC_PITIEN | PIV_MS;
  //Конфигурируем RTT
  AT91C_BASE_RTTC->RTTC_RTMR=((unsigned int) 0x8000 <<  0)  |
                             ((unsigned int) 0x0 << 16)     |
                             ((unsigned int) 0x1 << 17)     |
                             ((unsigned int) 0x1 << 18)    ;
  
  
  AT91F_AIC_ConfigureIt (AT91C_BASE_AIC,
                         AT91C_ID_SYS,
                         PIT_INTERRUPT_LEVEL,
                         AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL,
                         Timer_handler);
  
  AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_SYS);
  
} ////////////////////////////////////////
// Основная функция/////////////////////
////////////////////////////////////////
main (void)
{
//Запускаем колки на PIOA and PIOB
AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOB);


AT91F_PIO_CfgOutput(AT91C_BASE_PIOB, AT91B_LED_MASK);
AT91F_PIO_SetOutput(AT91C_BASE_PIOB, AT91B_LED_MASK);

CnfTime1();
  //бесконечный цикл
while(1)
    {
    
    }
    
}
Вобщем когда выполняю из рам пошагово - нормально, мигают лампочки, когда жму кнопку Go то вылетает полностью. Тогда решил без дебага ... просто залил через самбу бинарик во флэш - реакция ноль. Нутром знаю что не так сконфигурировал перывание, но что не так?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 09:58
Рейтинг@Mail.ru


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