Exemplo n.º 1
0
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;
}
Exemplo n.º 2
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()