EmbDev.net

Forum: µC & Digital Electronics MSP430 WDT Application Problem?


von DeMiR X. (demir_x)


Rate this post
useful
not useful
Hello everybody.

I took this program from Davie's book for MSP430-1121STK as well

Code:
Listing 8.1:  Program wdtest1.c to demonstrate the watchdog timer.

//  wdtest1 .c   -  trival   program   to  demonstrate     watchdog 
timer
//  Olimex   1121 STK   board ,  32 KHz  ACLK
//  J  H  Davies ,  2007 -05 -10;   IAR  Kickstart    version   3.42 A
// 
----------------------------------------------------------------------
# include   < io430x11x1 .h>                         //  Specific 
device
// 
----------------------------------------------------------------------
//  Pins   for  LEDs   and  button
# define   LED1      P2OUT_bit . P2OUT_3
# define   LED2      P2OUT_bit . P2OUT_4
# define   B1        P2IN_bit . P2IN_1
//  Watchdog    config :   active ,  ACLK /32768   ->  1s  interval ; 
clear   counter
# define   WDTCONFIG      ( WDTCNTCL | WDTSSEL )
//  Include    settings    for  _RST / NMI pin   here  as  well
// 
----------------------------------------------------------------------
void   main  ( void )
{
     WDTCTL   =  WDTPW   |  WDTCONFIG ;              //  Configure 
and  clear   watchdog
      P2DIR  =  BIT3  |  BIT4 ;                      //  Set  pins  with 
LEDs   to  output
      P2OUT  =  BIT3  |  BIT4 ;                      //  LEDs  off  ( 
active   low )
      for  (;;)   {                                  //  Loop  forever
           LED2  =  ˜ IFG1_bit . WDTIFG ;            //  LED2  shows 
state   of  WDTIFG
           if  (B1  ==  1)  {                        //  Button   up
                LED1  =  1;                          //  LED1  off
           } else   {                                //  Button   down
                WDTCTL   =  WDTPW   |  WDTCONFIG ;   //  Feed / pet 
kick  clear  watchdog
                LED1  =  0;                          //  LED1  on
           }
      }
}

and i changed it for MSP430FG4618 board.It's pin descriptions are 
different than above.

it is
Code:
#include <msp430.h>

#define LED4 BIT1
#define LED1 BIT2
#define SW1 BIT0

#define WDTCONFIG (WDTCNTCL|WDTSSEL)

void main (void)
{
  WDTCTL=WDTPW|WDTCONFIG;
  P5DIR=BIT1;
  P2DIR=BIT2;
  for(;;)
  {
    LED4=~IFG1_bit.WDTIFG;
    if(SW1==1)
    {
      WDTCTL=WDTPW|WDTCONFIG;
      P2OUT=BIT2;
    }
    else
    {
      P2OUT=0x00;
    }
  }
}
But when i compile i take 3 errors

-expected a field name
-expression must be a modifiable value
-identified "IFG1_bit" is undefined (all of are in line 16 LED2 = ˜ 
IFG1_bit . WDTIFG ; )

i feel that i have to change LED2 = ˜ IFG1_bit . WDTIFG
but what i must write instead of it

von TL431 (Guest)


Rate this post
useful
not useful
1
LED2 = !(IFG1 & WDTIFG);
This should do the same.

von DeMiR X. (demir_x)


Rate this post
useful
not useful
TL431 wrote:
>
1
> LED2 = !(IFG1 & WDTIFG);
2
>
> This should do the same.

it decreases to errors to
"expression must be a modifiable value" in line 16 again

so what is wrong i can't find

von TL431 (Guest)


Rate this post
useful
not useful
>#define LED4 BIT1
How is LED4 defined?


You can solve this by something like that:
1
#define LED4_ON  P2OUT &=~ BIT0 // LED @ P2.0
2
#define LED4_OFF P2OUT |=  BIT0 // LED @ P2.0
3
4
if (IFG1 & WDTIFG) LED4_ON;
5
else               LED4_OFF;

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.