logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[AT91SAM7S256] AT91SAM7S256: Nie działa obsługa przerwań od timera 0 w ARM/C/IAR

arus85lbn 27 Paź 2009 19:53 780 0
REKLAMA
  • #1 7182486
    arus85lbn
    Poziom 12  
    Posty: 50
    Witam!

    Od kilku dni próbuje opanować timery oraz przerwania od nich w moim ARMie. Kod programu napisałem na podstawie kilku dokumentów i wg datasheet'a od ARM'a powinno wszystko działać a nie działa. Może komuś uda się wychwycić co robię nie tak i co zrobić żeby wykonała sie obsługa przerwania od timera 0 dla następującego programu:
    unsigned int dummy, licznik;
      
    __ramfunc void t0_irq_handler(void)
    {
    
      dummy = AT91C_BASE_TC0->TC_SR;
      dummy=dummy;
      licznik++;
      if (licznik>1000){
        AT91C_BASE_PIOA->PIO_ODSR^=(1<<17);		//zapalanie i gaszenie LEDa
        licznik=0;
      }
    }
    
    int main()
    {
    
    
    
        AT91C_BASE_PMC->PMC_PCER=(1<<AT91C_ID_TC0);
        AT91C_BASE_TC0->TC_CCR=AT91C_TC_CLKDIS;
        AT91C_BASE_TC0->TC_IDR=0xffffffff;
        dummy = AT91C_BASE_TC0->TC_SR;
        dummy = dummy;
        AT91C_BASE_TC0->TC_CMR=AT91C_TC_CLKS_TIMER_DIV1_CLOCK;	//|AT91C_TC_WAVE|AT91C_TC_WAVESEL_UP_AUTO|AT91C_TC_CPCTRG;
        
        AT91C_BASE_TC0->TC_CCR=AT91C_TC_CLKEN;	//|AT91C_TC_SWTRG;
        
        AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, AT91C_ID_TC0, 5, AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, t0_irq_handler);
        AT91C_BASE_TC0->TC_IER = AT91C_TC_CPCS;
        AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_TC0); 
        AT91C_BASE_TC0->TC_CCR = AT91C_TC_SWTRG ;
        
        
        
    
        for(;;){
    
          
        }
      
    }
  • REKLAMA
REKLAMA