Hallo,
ich benutze das AVRStudio 5 mit dem ASF. Aus dem ASF benutze ich den
TC-Driver.
Nun möchte ich der Timer 0 mit einer Frequenz von 1Hz konfigurieren und
aller 1s einen (compare-)interrupt auslösen. Ich möchte die "Frequency
Waveform Generation" (FRQ) nutzen. Ich krieg es aber nicht hin, hier ein
paar Code-Auszüge:
aus der main.c
Ich jetzt eine Lösung die mir aber nicht gefällt. Wenn man das Interrupt
Level des Compare-Interrupts auf:
1
tc_set_cca_interrupt_level(&TCC0,PMIC_LVL_NMI);
also Non Maskable Interrupt deklariert, dann geht es. Auch wenn man das
pmic_enable_level(...) weglässt.
Allerdings habe ich das Datenblatt so verstanden, dass wenn ich das
entsprechende Level (z.B. High) im PMIC aktiviere und den
Compare-Interrupt das gleiche Level gebe, der Interrupt aktiviert wäre?!
Oder habe ich da was falsch verstanden?
keiner eine Idee?
Wie funktioniert denn nun der PMIC des XMEGA.
Wenn ich es richtig verstanden habe muß doch nur das entsprechnede Level
(low, med, high) aktiviert werden und dann z.B. dem Timer-Interrupt das
entsprechende Level zugeteilt werden, oder?
Hallo,
mit dem ASF hab ich noch nicht so viel gemacht. Dein Problem, dass der
NMI funzt, die anderen aber nicht klingt für mich danach, dass du das
GM-Bit (Global Mask) für die Interrupts im Statusregister noch nicht
gesetzt hast.
Gruß,
Michael
Du meinst generell Interrupts enablen (sei)? Das habe ich mittlerweile
gemacht und jetzt funktioniert es auch. Im ASF macht man das mit
"cpu_irq_enable();". Scheibar war das des Pudels Kern...
Jetzt kann ich die Prio (low, med, high) vergeben und es funktioniert
auch.
Das ASF ist eine feine Sache, kann ich jedem ans Herz legen.
Mario Grafe schrieb:> Du meinst generell Interrupts enablen (sei)?
Genau das :-) Dabei wird eben jenes GM-Bit im Status-Register gelöscht
(insofern ist meine Aussage oben nicht ganz richtig, da es sich um ein
MASK-Register handelt -> löschen = enable).
Ich versuch mich ohne Framework durchzumogeln, da weiß man wenigstens,
wo was passiert - bis auf die Interrupts hab ich bis jetzt auch fast
alles hinbekommen.
Hinbekommen ist nicht das Problem, aber bei der Fülle der (neuen)
Möglichkeiten der XMEGA finde ich das Framework recht praktisch. Bisher
habe ich mit den ATMegas gearbeitet, da habe ich auch alle
"handgestrickt", aber der gekapselte Zugriff spart einfach unheimlich
Zeit und der Code bleibt lesbar. Ins User manual des XMEGA muss man sich
trotzdem reinarbeiten, sonst versteht man die Fülle der Optionen
nicht...
Uuuups, war in Gedanken noch beim AVR32 - von daher sind meine obigen
Erklärungen bezüglich der Registernamen obsolet.
Muss ja jeder selbst entscheiden wie er es macht, wollte damit nur
ausdrücken, dass ich mich mit den Framework-Funktionensnamen etc. nicht
so auskenne