Forum: Mikrocontroller und Digitale Elektronik xmega usart rxc interrupt


von Fabian K. (fabian_k)


Lesenswert?

Hallo,

ich habe ein Problem den RXC-Interrupt am xmega zum laufen zu bringen.
Verwendet wird der E0 USART. Die usart_getc,gets,putc,puts funktionieren 
alle.

Initialisiert hab ich so (das USART-Interruptsregister):
USARTE0.CTRLA = USART_RXCINTLVL0_bm | USART_RXCINTLVL1_bm;

Meine ISR:
ISR(USARTE0_RXC_vect)
{
  cli();

  usart_puts("da");

  sei();
}

Interrupts hab ich aktiviert. Gibt es irgendwas Spezielles beim xmega, 
was man falsch machen könnte? Irgendwas Anderes?

Danke im vorraus
Fabian

von Michael K. (mmike)


Lesenswert?

Ist der PMIC auch enabled?

Grüße,
Michael

von Marius W. (mw1987)


Lesenswert?

1
ISR(USARTE0_RXC_vect)
2
{
3
   cli();    // unnötig
4
 
5
   usart_puts("da");
6
 
7
   sei();    // ebenfalls unnötig und möglicherweise schädlich
8
}

Du musst im PMIC.CTRL-Register noch die verschiedenen Interrupt-Level 
freigeben. Anschließend ein! sei() und dann sollte es funktionieren.

MfG
Marius

von Fabian K. (fabian_k)


Lesenswert?

Danke, PMIC-Register war nicht gesetzt. Problem gelöst.

MfG
Fabian

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.