Forum: Mikrocontroller und Digitale Elektronik Xmega Konfiguration Timer Type 1 / Type 2


von ruud86 (Gast)


Lesenswert?

Hallo,

ich benutze einen XMEGA 2586A3U und habe eine Frage zur Konfiguration 
eines Timers.

Ich konfiguriere in meinenm Projekt den Timer TCD0 im Normal Mode. Ich 
habe jetzt per Zufall festgestellt, dass bei der Initialisierung 
gleichzeitig der Timer/Counter TCD2 initialisiert wird.

Da ich beim Debuggen etwas Probleme mit der Stabilität habe (plötzlicher 
Reset) kann es vielleicht damit zusammenhängen? TCD2 erzeugt 
Interuptflags und ich dafür keine ISR definiert habe.
Zur Klarheit möchte ich noch erwähnen, dass ich ASF benutze... (Version 
3.5.1)

Ich habe mich versucht über die TC Type2 Geschichte schlau zu machen. 
Split Mode ist laut IO-View nicht aktiviert. Ansonsten habe ich keine 
Gründe für eine Initialisierung vonTCD2 gefunden...

Hat jemand da schon Erfahrung mit?


Gruß

Ruud

von Bassti (Gast)


Lesenswert?

Kann doch irgendwie nicht sein... wäre doch nen ziemlich "blöder bug" ?

Quellcode? Mal versucht die ASF Funktionen aufzurollen und mit der Hand 
die Register zusetzen?


Grüße

Basti

von ruud86 (Gast)


Angehängte Dateien:

Lesenswert?

Hi
die Konfiguration zu Fuß habe ich noch nicht probiert, habe mit die 
Funktionen angesehen und kann eigentlcih nichts ungewöhnliches 
feststellen, hier ist mal mein Initialisierungscode:
1
#define LCDComTC        &TCD0
2
#define LCDComTC_INTLvl        TC_INT_LVL_LO
3
#define LCDComTC_Prescaler      8
4
5
6
7
void lcd_com_timer_init(void){
8
  //config Timer
9
  irqflags_t flags;
10
  flags = cpu_irq_save();
11
12
  tc_enable(LCDComTC);
13
  tc_set_overflow_interrupt_callback(LCDComTC, LCDComTC_tcd0_ovf_callback);
14
  tc_set_wgm(LCDComTC, TC_WG_NORMAL);              //Timer Mode: Normal
15
  tc_write_period(LCDComTC, F_CPU/LCDComTC_Prescaler/1000);    //Überlauf Wert bestimmen und speichern (aktiv alle 1ms)
16
  tc_set_overflow_interrupt_level(LCDComTC, LCDComTC_INTLvl);
17
  tc_write_clock_source(LCDComTC, TC_CLKSEL_DIV8_gc);
18
  
19
  cpu_irq_restore(flags);
20
//   cpu_irq_enable();
21
}

Im Anhang ist noch die Ansicht der Register nach der Initialisierung.

Siehst du etwas ungewöhnliches?

Gruß Ruud

von Bassti (Gast)


Lesenswert?

Gibts ja Beispiele zur ASF... was ist mit denen?
Wie gesagt.. im Notfall einfach mal die Register so setzen... aber kann 
mir hier eher ein debugger Fehler vorstellen...

Was issn mit TC_INT_LVL_LO... gibts das? Sieht mir komisch aus...

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.