He escrito un pequeño programa que se ejecuta en un XMEGA:
#include <avr/io.h>
#include <stdio.h>
#ifndef F_CPU
#define F_CPU 32000000UL
#endif
void system_clock_init(void){
CCP = CCP_IOREG_gc; /* allow changing CLK.CTRL */
OSC.CTRL = OSC_RC32MEN_bm; /* Enabling the 32MHz RC oscillator */
while (!(OSC.STATUS & OSC_RC32MRDY_bm)); /* wait for ready */
CCP = CCP_IOREG_gc;/* allow changing CLK.CTRL */
CLK.CTRL = CLK_SCLKSEL_RC32M_gc ;/* system clock is internal 32MHz RC */
}
int main (void)
{
// Insert system clock initialization code here (sysclk_init()).
system_clock_init();
PORTR.DIR = 0x02;
while(1) {
PORTR.OUTTGL = PIN1_bm;
}
}
el programa debería encender un LED, pero cuando uso el alcance, mido una señal de 2 ms, lo que significa que el reloj de la unidad es: 1 MHz? ¿Qué me sorprende porque creo que el programa es correcto?
y la idea de lo que me estoy perdiendo aquí?