#include void setup() { Serial.begin(9600); // init _everything_ since reprogramming != reset TCA0.SINGLE.CTRLA = 0; TCA0.SINGLE.CTRLB = 0; TCA0.SINGLE.CTRLC = 0; TCA0.SINGLE.CTRLD = 0; TCA0.SINGLE.PER = 1200; //pwm period TCA0.SINGLE.CMP2 = 650; //starting pulse width TCA0.SINGLE.CTRLB |= (1<<6); //enable compare TCA W02 (PB2) TCA0.SINGLE.CTRLB |= ((1<<0) | (1<<1)); //set TCA to single-slope PWM mode TCA0.SINGLE.CTRLA |= (1<<0); //enable timer TCA at clock speed PORTB.DIR |= (1<<2); //TARE is on PB3, which is Digital 4 in Arduino-land. pinMode(4, INPUT_PULLUP); } void loop() { if (digitalRead(4) == HIGH) { TCA0.SINGLE.CMP2 = 1200; } else { TCA0.SINGLE.CMP2 = 650; } }