http://ehbtj.com/electronics/arduino-m0-hacks/
PWMは2, 3, 4, 5, 6, 7ピンが使えなくなる、とのこと
int pin_ovf_led = 13; unsigned int irq_ovf_count = 0; void setup() { pinMode(pin_ovf_led, OUTPUT); digitalWrite(pin_ovf_led, LOW); REG_GCLK_CLKCTRL = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID(GCM_TCC0_TCC1)) ; while ( GCLK->STATUS.bit.SYNCBUSY == 1 ); Tcc* TC = (Tcc*) TCC0; TC->CTRLA.reg &= ~TCC_CTRLA_ENABLE; while (TC->SYNCBUSY.bit.ENABLE == 1); TC->CTRLA.reg |= TCC_CTRLA_PRESCALER_DIV1024; // Set perscaler TC->WAVE.reg |= TCC_WAVE_WAVEGEN_NFRQ; while (TC->SYNCBUSY.bit.WAVE == 1); TC->PER.reg = 0xB71B; // Set counter Top using the PER register while (TC->SYNCBUSY.bit.PER == 1) TC->CC[0].reg = 0xFFF; while (TC->SYNCBUSY.bit.CC0 == 1); TC->INTENSET.reg = 0; TC->INTENSET.bit.OVF = 1; TC->INTENSET.bit.MC0 = 1; NVIC_EnableIRQ(TCC0_IRQn); TC->CTRLA.reg |= TCC_CTRLA_ENABLE ; while (TC->SYNCBUSY.bit.ENABLE == 1); } void loop() { } void TCC0_Handler() { Tcc* TC = (Tcc*) TCC0; if (TC->INTFLAG.bit.OVF == 1) { // do something digitalWrite(pin_ovf_led, irq_ovf_count % 2); // for blink led irq_ovf_count++; // for blink led TC->INTFLAG.bit.OVF = 1; } if (TC->INTFLAG.bit.MC0 == 1) { TC->INTFLAG.bit.MC0 = 1; } }