Forum: Mikrocontroller und Digitale Elektronik Interrupt mit TC


von Zeiro (Gast)


Lesenswert?

Ich mochte gerne einen Interrupt programmieren leider wird der 
irq_handler nicht aufgerufen. Habe einen AT91RM9200.
Kann mir villeicht jamand helfen? Danke.
1
void timer1_c_irq_handler (void)
2
{  unsigned int dummy ;
3
  printf("ein Interrupt Trat auf");
4
  dummy = TC1_SR;        /* Read TC1 Status Register to clear it */
5
  AIC_IVR = 0;
6
  
7
  if ( (PIOB_PDSR & LED8) == LED8 )
8
  {  PIOB_CODR = LED8;
9
    printf("set LED8\n");
10
  }else
11
  {  PIOB_SODR = LED8 ;
12
    printf("clear LED8\n");
13
  }
14
  AIC_EOICR = 0;
15
}
16
int main ( void )
17
{
18
  unsigned int dummy ;
19
  init_mem();
20
  PIOB_PER  = LED8 | LED1 ;   /* Enable the PIO/LED8 pin */
21
  PIOB_OER   = LED8 | LED1;   /* Enable the PIO/LED8 pin as Output */
22
  PIOB_CODR = LED8 | LED1 ;   /* Set LED8 */
23
// Timer1 Init
24
  TC1_CCR = TC_CLKDIS ;       /* Disable the Clock Counter */
25
  TC1_IDR = 0xFFFFFFFF ;
26
  dummy = TC1_SR ;
27
  TC1_CMR = TC_CLKS_MCK1024 | TC_CPCTRG ;
28
  TC1_CCR = TC_CLKEN;        /* Enable the Clock counter */
29
  TC1_IER   = TC_CPCS;       /*Validate the RC compare interrupt */
30
  
31
  AIC_IDCR = (1<<TC1_ID);   /* Disable timer 1 interrupt at AIC level */
32
  AIC_SVR5 = (unsigned int) timer1_c_irq_handler ;        /* Set the TC1 IRQ handler address */
33
  AIC_SMR5 = ( AIC_SRCTYPE_INT_LEVEL_SENSITIVE | 0x4 ); /* Set the trigg and priority for TC1 interrupt */
34
  AIC_ICCR = (1<<TC1_ID);   /* Clear the TC1 interrupt */
35
  AIC_IECR = (1<<TC1_ID);   /* Enable the TC1 interrupt */
36
  TC1_RC = 0xFBC5;
37
  TC1_CCR = TC_SWTRG ;

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.