Servus Leuts.
Hab jetzt schon soooo viel von den hier, und anders wo, RTC Beispielen
durch probiert, aber bin zu keinem Gewünschtem Ergebnis gekommen.
Ich will die RTC im atXmega128a1 einfach nur als Real Time Counter
nebenher laufen lassen, und mich ab und zu (duch anderen Interrupt
ausgelößt) auf den RT Counter synchroniesieren.
Das ganze möglichst auf 1 ms basis.
Laut angehängter Figur 17-1 sollte ich den RT Counter mit 1024 Hz
betreiben können, durch die auswahl des Internen 32KHz Oscillator und
duch die umstellung des RTCCTRL Multiplexer auf den DIV32.
Hier mal mein code dazu:
CCP = CCP_IOREG_gc; // Schützt I/O Register, Interrupts
werden ignoriert
OSC.CTRL = OSC.CTRL | OSC_RC32MEN_bm; //enable internal 32MHz
oscillator
while(!(OSC.STATUS & OSC_RC32MEN_bm)); //wait for stable
CLK.CTRL = CLK_SCLKSEL_RC32M_gc; // select internal 32MHz
oscillator as CLK input
CLK.RTCCTRL = 0x05; // RTCSRC[2:0] = 0b010 für "1.024kHz
from 32.768kHz internal oscillator"
// & RTCEN = 0b1 für "...enables the selected RTC
clock source for the real-time counter."
while(RTC.STATUS & RTC_SYNCBUSY_bm); // wait on RTC
RTC.CTRL = RTC_PRESCALER_DIV1_gc; // Prescaller = 1 turns RTC on
Jetzt geht, der Counter allerdings in ca. 70us schritten und nicht in
1ms schritten hoch...
nen plan woran das liegt?
Vielen Dank!