Forum: Mikrocontroller und Digitale Elektronik Xmega32E5 timer


von Peet (Gast)


Lesenswert?

Im Grunde eine ganz einfach Frage... Wieso springt er mir nicht in die 
ISR?
Ich möchte dass nach Erreichen des Werts 10000 ein Interrupt ausgelöst 
wird.


#include <avr/io.h>
#define F_CPU 32000000UL
#include <util/delay.h>
#include <avr/interrupt.h>
1
int main( void )
2
{
3
  //32MHz intern aktiv
4
  OSC.CTRL |= OSC_RC32MEN_bm;
5
  while(!(OSC.STATUS & OSC_RC32MRDY_bm));
6
  CCP = CCP_IOREG_gc;
7
  CLK.CTRL = CLK_SCLKSEL_RC32M_gc;
8
  
9
  PORTD.DIRSET = 0b00010000 ; 
10
  
11
  SREG |= 0x80;
12
  sei();
13
  
14
  TCD5.CTRLA = 7 ;  
15
  TCD5.CTRLB = 0 ;
16
  TCD5.CTRLC = 0 ;
17
  TCD5.CTRLD = 0 ;
18
  TCD5.CTRLE = 0 ;
19
  TCD5.PER = 10000 ; 
20
  TCD5.INTCTRLA = 0x03 ; 
21
  TCD5.INTCTRLB = 0 ;
22
23
  while(1){}
24
}
25
26
ISR(TCD5_OVF_vect)
27
{
28
PORTD.OUTSET = 0b00010000 ; 
29
}

von J. Zimmermann (Gast)


Lesenswert?

Es fehlt mindestend die Anmeldung der Ints im PMIC:
  PMIC.CTRL=PMIC_HILVLEN_bm;
mfg
Achim

von Peet (Gast)


Lesenswert?

Perfekt! Danke.

von Peet (Gast)


Lesenswert?

In welchem Register habe ich Zugriff auf den aktuellen Zählstand bzw. wo 
kann ich ihn bearbeiten? Ich blicke nicht durch..

von J. Zimmermann (Gast)


Lesenswert?

Manual XMEGA E, Hardware-Unit Zähler, i.d.F.:  TC4/5 – 16-bit 
Timer/Counter Type 4 and 5 (Seite 160), Kapitel Register Description (S. 
184), dort findest Du die Register CNTL, CNTH (S.181), können aber auch 
als 16bit gelesen/geschrieben werden (Wie fast alle 8/16bit Register): 
wert=TCD5.CNT, TCD5.CNT=wert.
Also eigentlich easy, einfach mal ins gut sortierte Manual schauen oder 
im Astudio das I/O-Fenster aufklappen oder nach Eingabe der HW-Unit 
(hier TCD5) nach dem . das aufgeklappte Auswahlmenu durchgehen ...
mfg
Achim

von Peet (Gast)


Lesenswert?

Danke.


J. Zimmermann schrieb:
> im Astudio das I/O-Fenster aufklappen


Wo finde ich das?

von J. Zimmermann (Gast)


Lesenswert?

(Nach Öffnen des Projekts) -> DEBUG -> WINDOWS -> I/O
mfg
Achim

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.