int main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; // timerA_start(timing, OUTMOD_SET_RESET); // starte PWM INIT_PORTS(); // INIT_ADC(); // init_XT2(); init_PWM_TimerA(); set_PWM_duty_cycle(0); P1OUT |= LED_PWR_ON; P1OUT |= LED2; //_BIS_SR(LPM3_bits); _BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt // while(1) // warte bis sich was tut // { // } // return 0; }
void main(void) { /******************************************************************************/ // Init /******************************************************************************/ WDTCTL = WDTPW + WDTHOLD; // watchdog timer off configureClocks(); init_PWM_TimerA(); hour = 6; hour24 = 6; minute = 1; // Set to one because with 0 no LED is on which is confusing. second = 0; state = SET_HOUR; capsense=0; LEDState=OFF; timer=0; DEMOPointer = 1; P1REN = BIT6 + BIT7; // P1REN = pullup/down enable P1OUT = BIT6 + BIT7; // P1OUT = define pullup P1IFG = 0; P1IES = BIT6 + BIT7; // set high to low transition for P1.6&7 interrupt P1IE = BIT6 + BIT7; // enable P1.6&7 interrupt P1REN |= BIT4 + BIT5; // P1REN = pullup/down enable P1OUT |= BIT4 + BIT5; // P1OUT = pullup P2REN |= BIT0; // P2REN = pullup/down enable P2OUT |= BIT0; // P2OUT = pullup P2OUT |= BIT3; P2DIR |= BIT3; P3REN = 0xFF; // Tie all P3 ports which are not available on N package P3OUT = 0xFF; WDTCTL = WDTPW + WDTTMSEL + WDTCNTCL + WDTSSEL; // watchdog counter mode, ACLK, /32768 IFG1 &= ~WDTIFG; // Clear WDT interrupt flag IE1 |= WDTIE; // WDT interrupt enable measure_count(); // Establish baseline capacitance base_cnt = meas_cnt; for(i=15; i>0; i--) // Repeat and avg base measurement { measure_count(); base_cnt = (meas_cnt+base_cnt)/2; } /******************************************************************************/ // Mainloop /******************************************************************************/ __enable_interrupt(); while(1) { switch(state) { case NORMAL: if (capsense) { CapTouch(); } if (LEDState==ON) { HourView(); } if (LEDState==ON && ((hour24>=7) && (hour24<18))) { MoonOff(); SunOn(); } if (LEDState==ON && ((hour24>=18) || (hour24<7))) { SunOff(); MoonOn(); } break; case SET_HOUR: capsense=OFF; MoonOff(); SunOff(); HourView(); break; case SET_MINUTE: capsense=OFF; MoonOff(); SunOff(); MinuteView(); break; case DEMO: if (DEMOPointer==1) { MoonOn(); SunOff(); } if (DEMOPointer==7) { MoonOff(); SunOn(); } j = 5000/DEMOPointer; for(i=0;i<j;i++) { unsigned int OnTime = 10*DEMOPointer; unsigned int OffTime = 120/DEMOPointer; for(LEDPointer = 1;LEDPointer <= DEMOPointer;LEDPointer++) { LEDOn(); delay(OnTime); LEDOff(); delay(OffTime); } } DEMOPointer++; if (DEMOPointer==13) { DEMOPointer=1; } break; } } } // main()