ATXMEGA Timer Interrupt ISR Problem

OP #4131783
Lesenswert?

Guteen Abend liebe Mikrocontroller Community

Ich schlage mich gerade bei einem Projekt mit einem blöden SW Problem zu 
tode. Ich verwende aktuell einen ATXMEGA32E5 und bin gerade den Timer am 
testen. Ich verwende Timer 5 nur um in eine Interrupt Service Routine zu 
springen und da sehe ich ein Problem: Der Timer beginnt erst wieder zu 
zählen wenn ich die Service Routine verlasse. Ich habe mich durch das 
Datenblatt geschlagen bin jedoch nicht fündig geworden und da die 
XMEGAE5 Serie neu ist auch nicht wirklich in Foren.

Kann mir da jemand helfen?

Init und ISR sehen so aus:
1
void TIMER_INIT(void)
2
{
3
  TCC5.CTRLB = 0x40;              // Timer auf Byte Mode einstellen
4
  TCC5.INTCTRLA = 0x01;                    // Overflow Interrupt freigeben
5
  PMIC.CTRL |= PMIC_HILVLEN_bm |PMIC_MEDLVLEN_bm|PMIC_LOLVLEN_bm; 
6
  sei();                            // Interrupts freigeben
7
  TCC5.CTRLA = 0x04;                      // Timer Prescaler gleich 8 und Timer starten
8
}
9

10
ISR (TCC5_OVF_vect)
11
{
12
  TCC5.INTFLAGS &=0xFE;
13
  PORTD.OUT = 0x10;
14
  entprell_counter++;                                
15
  Zeit.usekunde++;                                  
16
  if(Zeit.usekunde>=15625)                            
17
  {
18
    Zeit.usekunde = 0;                      
19
    Zeit.sekunde++;
20
  }
21
  PORTD.OUT = 0x00;
22
}

Besten Dank und mfG
Sebi
Gast #4131831
Lesenswert?

Aha, und der PORTC erlaubt Zugriff auf den Timer!?! Per Oszi?
Du mißt den Int-Zyklus und die Dauer der ISR. Hoffentlich nicht mit 
einen Analog-Oszi, das hat viele Qualitäten, aber exakte Messung von 
Zeiten gehört nicht dazu.
OP #4131843
Lesenswert?

Wie PORTC erlaubt zugriff? Ich habe den oben im meinem Code als Ausgang 
gesetzt nur um die Laufzeit der ISR Routine zu überprüfen. Theoretisch 
mir der Einstellung und dem 32MHz Oszi sollte der Zyklus 64 us 
(Prescaler = 8, Timer in Byte Mode also zählt 0- 255) betragen jedoch 
ist der nur 2 us.

Ist einer der Top Picoscopes glaub mir der ist genau.
Gast #4132130
Lesenswert?

ooha schrieb:
> Sébastien Monn schrieb:
> Ok ich habe jetzt dieses Problem endlich gefunden!!! Overflow Flag wurde
> nach der Service Routine vom Controller selbst nicht wirklich gelöscht!!
>
> Das Schei..ding geht ja gar nicht. Tausch den mal aus.

Steht auch so in der Doku, also regt Euch nicht auf!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren