39 #define CONFIG_LED1() CONFIG_RB14_AS_DIG_OUTPUT()
40 #define LED1 _LATB14 //led1 state
44 CONFIG_RB13_AS_DIG_INPUT();
49 #define SW1_RAW _RB13 //raw switch value
50 #define SW1 u8_valueSW1 //switch state
51 #define SW1_PRESSED() (SW1==0) //switch test
52 #define SW1_RELEASED() (SW1==1) //switch test
55 STATE_WAIT_FOR_PRESS = 0,
56 STATE_WAIT_FOR_RELEASE,
59 volatile uint8_t u8_valueSW1 = 1;
63 void _ISRFAST _T3Interrupt (
void) {
64 static ISRSTATE e_isrState = STATE_WAIT_FOR_PRESS;
65 u8_valueSW1 = SW1_RAW;
67 case STATE_WAIT_FOR_PRESS:
69 e_isrState = STATE_WAIT_FOR_RELEASE;
71 case STATE_WAIT_FOR_RELEASE:
73 e_isrState = STATE_WAIT_FOR_PRESS;
78 e_isrState = STATE_WAIT_FOR_RELEASE;
86 CONFIG_RB12_AS_DIG_INPUT();
91 #define SW2 _RB12 //switch state
99 STATE_WAIT_FOR_RELEASE3
103 void printNewState (STATE e_currentState) {
104 static STATE e_LastState = STATE_RESET;
105 if (e_LastState != e_currentState) {
106 switch (e_currentState) {
107 case STATE_WAIT_FOR_PNR1:
108 outString(
"STATE_WAIT_FOR_PNR1 - LED is off\n");
110 case STATE_WAIT_FOR_PNR2:
111 outString(
"STATE_WAIT_FOR_PNR2 - SW2 on goes to blink else go to PNR1\n");
114 outString(
"STATE_BLINK - LED blinks, waiting for SW1 press\n");
116 case STATE_WAIT_FOR_RELEASE3:
117 outString(
"STATE_WAIT_FOR_RELEASE3 - LED is on\n");
123 e_LastState = e_currentState;
127 #define ISR_PERIOD 15 // in ms
128 void configTimer3(
void) {
133 T3CON = T3_OFF |T3_IDLE_CON | T3_GATE_OFF
155 e_mystate = STATE_WAIT_FOR_PNR1;
161 printNewState(e_mystate);
163 case STATE_WAIT_FOR_PNR1:
167 e_mystate = STATE_WAIT_FOR_PNR2;
170 case STATE_WAIT_FOR_PNR2:
175 if (SW2) e_mystate = STATE_BLINK;
176 else e_mystate = STATE_WAIT_FOR_PNR1;
182 if (SW1_PRESSED()) e_mystate = STATE_WAIT_FOR_RELEASE3;
184 case STATE_WAIT_FOR_RELEASE3:
190 e_mystate = STATE_WAIT_FOR_PNR1;
194 e_mystate = STATE_WAIT_FOR_PNR1;