diff --git a/hello.128a4u.blink.c b/hello.128a4u.blink.c new file mode 100644 index 0000000000000000000000000000000000000000..0a495cd4ae034a95588cb41c0a5a624f33ea565e --- /dev/null +++ b/hello.128a4u.blink.c @@ -0,0 +1,43 @@ +// +// hello.blink +// +// 128a4u, blinking on PC1 +// + +#include <avr/io.h> +#include <util/delay.h> +#include <avr/pgmspace.h> + +#define DELAY 500 // blink delay +#define LED PIN1_bm // LED bit mask + +int main(void) { + // seems to go too fast + //OSC.PLLCTRL = OSC_PLLFAC4_bm | OSC_PLLFAC3_bm; // 2 MHz * 24 = 48 MHz + //OSC.CTRL = OSC_PLLEN_bm; // enable PLL + //while (!(OSC.STATUS & OSC_PLLRDY_bm)); // wait for PLL to be ready + //CCP = CCP_IOREG_gc; // enable protected register change + //CLK.CTRL = CLK_SCLKSEL_PLL_gc; // switch to PLL + + // + // set up clock + // + OSC.CTRL = OSC_RC32MEN_bm; // enable 32MHz clock + while (!(OSC.STATUS & OSC_RC32MRDY_bm)); // wait for clock to be ready + CCP = CCP_IOREG_gc; // enable protected register change + CLK.CTRL = CLK_SCLKSEL_RC32M_gc; // switch to 32MHz clock + + // + // set up port + // + PORTC.DIR = LED; + // + // main loop + // + while (1) { + PORTC.OUT = LED; + _delay_ms(DELAY); + PORTC.OUT = 0; + _delay_ms(DELAY); + } +}