typedef void (*FSM)(void); /***************************************************** * FSM: test pin * States */ void smTestPinInit(void); void smTestPinLo(void); void smTestPinHi(void); //FSM Variables unsigned long test_tmr; //Initial state FSM testPinFSM = smTestPinInit; /****************************************************** State functions */ void smTestPinInit(void) { DDRD |= 0x80; // ***DEBUG*** toggle test pin testPinFSM = smTestPinLo; // change state test_tmr = millis(); } void smTestPinLo(void) { if (millis() - test_tmr >= 30){ test_tmr = millis(); PORTD &= ~0x80; // ***DEBUG*** toggle test pin testPinFSM = smTestPinHi; // change state } } void smTestPinHi(void) { if (millis() - test_tmr >= 50){ test_tmr = millis(); PORTD |= 0x80; // ***DEBUG*** toggle test pin testPinFSM = smTestPinLo; // change state } }