Xmega32E5 timer

Gast #5499726
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
}
Gast #5500841
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

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