//---------------------------------------------------------------------------- // C main line //---------------------------------------------------------------------------- #include "psoc_defrostapi.h" #define MINUTE 60 #define TIMER_CLK 93750L // Needs to have the 'L' or the next two lines won't work #define HYSTERESIS 10 * TIMER_CLK // 10 Seconds #define DE_ICE 30 * MINUTE * TIMER_CLK // 30 Minutes #define HEATER 0x10 #define FAN 0x20 #define ACT 0x80 #define AIR_IN 4 extern unsigned char done; void delay(DWORD timer_value); void main(void) { // Set pins 1, 2, and 7 to outputs PRT0DM0 = HEATER + FAN + ACT; Timer32_1_EnableInt(); M8C_EnableGInt; while (1) { // Turn on fan and actuator PRT0DR = FAN + ACT; delay(HYSTERESIS); while (PRT0DR & AIR_IN) ; delay(HYSTERESIS); if (!(PRT0DR & AIR_IN)) { // Turn off fan and actuator; turn on heater PRT0DR = HEATER; delay(DE_ICE); #if (!LOOP) PRT0DR = 0; return; #endif } } } void delay(DWORD timer_value) { Timer32_1_WritePeriod(timer_value); Timer32_1_Start(); while (!done) ; done = 0; }