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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.