Hallo ihr lieben leute,
ich hab noch nicht viel ahnung von registern , versuch aber grad einen Atmega4808 aus der megaAVR 0-serie akkutauglich zu machen.
Die led blinkt lustig rum, irgendwie bin ich jedoch nicht sicher ob ich aus der appnote (das RTC PIT Wake from Sleep Beispiel) und dem Datenblatt nicht was falsch verstanden hab.
Das Beispiel habe ich auf den internen 32k ulp oszillator versucht umzubauen da ich längere schlafzeiten benötige (wenn ich es richtig verstanden habe).
Es wäre ganz nett wenn jemand der ahnung hat mal drüberschauen könnte
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
#include <avr/cpufunc.h>
void setup()
{
PORTA.DIR |= PIN7_bm;
RTC.CLKSEL = RTC_CLKSEL_INT32K_gc; /*use intern 32k ulp osc*/
RTC.PITINTCTRL = RTC_PI_bm; /* Periodic Interrupt: enabled */
RTC.PITCTRLA = RTC_PERIOD_CYC32768_gc /* RTC Clock Cycles 32768 */
| RTC_PITEN_bm; /* Enable: enabled */
//RTC.CTRLA = RTC_PRESCALER_DIV32768_gc /* 32768 */
//| RTC_RTCEN_bm /* Enable: enabled */
//| RTC_RUNSTDBY_bm; /* Run In Standby: enabled */
SLPCTRL.CTRLA |= SLPCTRL_SMODE_PDOWN_gc;
SLPCTRL.CTRLA |= SLPCTRL_SEN_bm;
sei();
}
void loop()
{
sleep_cpu();
}
ISR(RTC_PIT_vect)
{
/* Clear flag by writing '1': */
RTC.PITINTFLAGS = RTC_PI_bm;
PORTA.OUTTGL |= PIN7_bm;
}
Danke im voraus