Sign in

username:

password:



Not a member?

Search msp430



Search tips

Subscribe to msp430



Ads

Discussion Groups

Discussion Groups | MSP430 | Single-Chip Pulsoximeter Design

The purpose of this group is to foster exchange of information on the Texas Instruments MSP430 family of microcontrollers and related tools. Everyone welcome, all levels of familiarity/expertise.

Single-Chip Pulsoximeter Design - Later - Sep 30 17:07:19 2008

Hi all,

I am doing some research on non-invasive vital signs monitoring. I
have assembled the materials for my baseline research platform
according to the pulseoximeter design and c code files given on Texas
Instrument's website
"http://focus.ti.com/apps/docs/appsolntechdocsabstract.tsp?appId=3D330&abst=
ractName=3Dslaa274"

Unfortunately, the programming aspects of the MSP 430FG are way beyond
my skill level.=20

I have begun the programming effort using the TI C code developed for
the pulse oximeter design described in slaa274.pdf without much
success. I am using the Texas Instrument's Flash Emulation tool MSP430
80-Pin Package Board, USB Programmer=A0MSP-FET430U80, and IAR Embedded
Workbench IDE free version.

The code compiles ok, but won't link due to the following error:

Error[e46]: Undefined external "mul16" referred in main ( C:\Mike
IU\medical device\Mike Oximeter Experiment\Oximeter=20=20
C Code Mike\Mike Oximeter Phase 1b\Debug\Obj\main.r43 )=20

The line of code creating this error, I think, is:

int32_t mul16(register int16_t x, register int16_t y);

As best as I can tell, there is a function mul16 that is not defined
anywhere. Perhaps this has somthing to do with IAR libraries?

Can anyone help me to locate this function?

Thanks everyone

Mike

------------------------------------



(You need to be a member of msp430 -- send a blank email to msp430-subscribe@yahoogroups.com )


Re: Single-Chip Pulsoximeter Design - Steve Sabram - Sep 30 17:15:22 2008

int32_t mul16(register int16_t x, register int16_t y);

This routine specifically calls the hardware multiplier of the MSP430.
Considering what compiler you are using, it may be an obsolete
function. When the first C compilers came out for the MSP430, a
multiply operation "*" was compiled without calling the hardware
multiplier op codes. TI even has an app note on how to use the right op
codes to call the part of the MSP430.

A few resourceful souls created this macro to call the hardware
multiplier to avoid writing in-line assembly for each time you wanted to
do this. Play around with just having your two variable multiplied
instead of calling this and make sure that the "Use Hardware Multiplier"
flag is set on your compiler. That should handle it. Check your
assembly output to make sure the code is calling the hardware multiplier.

Steve
Later wrote:
>
> Hi all,
>
> I am doing some research on non-invasive vital signs monitoring. I
> have assembled the materials for my baseline research platform
> according to the pulseoximeter design and c code files given on Texas
> Instrument's website
> "http://focus.ti.com/apps/docs/appsolntechdocsabstract.tsp?appId=330&abstractName=slaa274
> "
>
> Unfortunately, the programming aspects of the MSP 430FG are way beyond
> my skill level.
>
> I have begun the programming effort using the TI C code developed for
> the pulse oximeter design described in slaa274.pdf without much
> success. I am using the Texas Instrument's Flash Emulation tool MSP430
> 80-Pin Package Board, USB Programmer MSP-FET430U80, and IAR Embedded
> Workbench IDE free version.
>
> The code compiles ok, but won't link due to the following error:
>
> Error[e46]: Undefined external "mul16" referred in main ( C:\Mike
> IU\medical device\Mike Oximeter Experiment\Oximeter
> C Code Mike\Mike Oximeter Phase 1b\Debug\Obj\main.r43 )
>
> The line of code creating this error, I think, is:
>
> int32_t mul16(register int16_t x, register int16_t y);
>
> As best as I can tell, there is a function mul16 that is not defined
> anywhere. Perhaps this has somthing to do with IAR libraries?
>
> Can anyone help me to locate this function?
>
> Thanks everyone
>
> Mike
>
>
------------------------------------



(You need to be a member of msp430 -- send a blank email to msp430-subscribe@yahoogroups.com )

Re: Single-Chip Pulsoximeter Design - steam_y - Oct 1 15:21:24 2008

Steve - thank you for your help. I tried the following and it didn't work:

int_32 mcp;

mcp=x*y

Perhaps i should simply commission a contractor to make this work. I
am way outside my expertise.

mike

--- In m...@yahoogroups.com, Steve Sabram wrote:
>
> int32_t mul16(register int16_t x, register int16_t y);
>
> This routine specifically calls the hardware multiplier of the MSP430.
> Considering what compiler you are using, it may be an obsolete
> function. When the first C compilers came out for the MSP430, a
> multiply operation "*" was compiled without calling the hardware
> multiplier op codes. TI even has an app note on how to use the
right op
> codes to call the part of the MSP430.
>
> A few resourceful souls created this macro to call the hardware
> multiplier to avoid writing in-line assembly for each time you
wanted to
> do this. Play around with just having your two variable multiplied
> instead of calling this and make sure that the "Use Hardware
Multiplier"
> flag is set on your compiler. That should handle it. Check your
> assembly output to make sure the code is calling the hardware
multiplier.
>
> Steve
> Later wrote:
> >
> > Hi all,
> >
> > I am doing some research on non-invasive vital signs monitoring. I
> > have assembled the materials for my baseline research platform
> > according to the pulseoximeter design and c code files given on Texas
> > Instrument's website
> >
"http://focus.ti.com/apps/docs/appsolntechdocsabstract.tsp?appId=330&abstractName=slaa274

> >
"
> >
> > Unfortunately, the programming aspects of the MSP 430FG are way beyond
> > my skill level.
> >
> > I have begun the programming effort using the TI C code developed for
> > the pulse oximeter design described in slaa274.pdf without much
> > success. I am using the Texas Instrument's Flash Emulation tool MSP430
> > 80-Pin Package Board, USB Programmer MSP-FET430U80, and IAR Embedded
> > Workbench IDE free version.
> >
> > The code compiles ok, but won't link due to the following error:
> >
> > Error[e46]: Undefined external "mul16" referred in main ( C:\Mike
> > IU\medical device\Mike Oximeter Experiment\Oximeter
> > C Code Mike\Mike Oximeter Phase 1b\Debug\Obj\main.r43 )
> >
> > The line of code creating this error, I think, is:
> >
> > int32_t mul16(register int16_t x, register int16_t y);
> >
> > As best as I can tell, there is a function mul16 that is not defined
> > anywhere. Perhaps this has somthing to do with IAR libraries?
> >
> > Can anyone help me to locate this function?
> >
> > Thanks everyone
> >
> > Mike
> >
>
------------------------------------



(You need to be a member of msp430 -- send a blank email to msp430-subscribe@yahoogroups.com )

Re: Single-Chip Pulsoximeter Design - old_cow_yellow - Oct 1 15:57:23 2008

Steve,

The assembly source code for mul16(x,y) is included in slaa147.zip.
It does not use the hardware multiply.

--- In m...@yahoogroups.com, Steve Sabram wrote:
>
> int32_t mul16(register int16_t x, register int16_t y);
>
> This routine specifically calls the hardware multiplier of the MSP430.
> Considering what compiler you are using, it may be an obsolete
> function. When the first C compilers came out for the MSP430, a
> multiply operation "*" was compiled without calling the hardware
> multiplier op codes. TI even has an app note on how to use the
right op
> codes to call the part of the MSP430.
>
> A few resourceful souls created this macro to call the hardware
> multiplier to avoid writing in-line assembly for each time you
wanted to
> do this. Play around with just having your two variable multiplied
> instead of calling this and make sure that the "Use Hardware
Multiplier"
> flag is set on your compiler. That should handle it. Check your
> assembly output to make sure the code is calling the hardware
multiplier.
>
> Steve
> Later wrote:
> >
> > Hi all,
> >
> > I am doing some research on non-invasive vital signs monitoring. I
> > have assembled the materials for my baseline research platform
> > according to the pulseoximeter design and c code files given on Texas
> > Instrument's website
> >
"http://focus.ti.com/apps/docs/appsolntechdocsabstract.tsp?appId=330&abstractName=slaa274

> >
"
> >
> > Unfortunately, the programming aspects of the MSP 430FG are way beyond
> > my skill level.
> >
> > I have begun the programming effort using the TI C code developed for
> > the pulse oximeter design described in slaa274.pdf without much
> > success. I am using the Texas Instrument's Flash Emulation tool MSP430
> > 80-Pin Package Board, USB Programmer MSP-FET430U80, and IAR Embedded
> > Workbench IDE free version.
> >
> > The code compiles ok, but won't link due to the following error:
> >
> > Error[e46]: Undefined external "mul16" referred in main ( C:\Mike
> > IU\medical device\Mike Oximeter Experiment\Oximeter
> > C Code Mike\Mike Oximeter Phase 1b\Debug\Obj\main.r43 )
> >
> > The line of code creating this error, I think, is:
> >
> > int32_t mul16(register int16_t x, register int16_t y);
> >
> > As best as I can tell, there is a function mul16 that is not defined
> > anywhere. Perhaps this has somthing to do with IAR libraries?
> >
> > Can anyone help me to locate this function?
> >
> > Thanks everyone
> >
> > Mike
> >
>
------------------------------------



(You need to be a member of msp430 -- send a blank email to msp430-subscribe@yahoogroups.com )

Re: Single-Chip Pulsoximeter Design - steam_y - Oct 1 16:41:44 2008

Thanks again to "old Cow"...his solution worked like a charm.

mike

--- In m...@yahoogroups.com, "old_cow_yellow"
wrote:
>
> Steve,
>
> The assembly source code for mul16(x,y) is included in slaa147.zip.
> It does not use the hardware multiply.
>
> --- In m...@yahoogroups.com, Steve Sabram wrote:
> >
> > int32_t mul16(register int16_t x, register int16_t y);
> >
> > This routine specifically calls the hardware multiplier of the
MSP430.
> > Considering what compiler you are using, it may be an obsolete
> > function. When the first C compilers came out for the MSP430, a
> > multiply operation "*" was compiled without calling the hardware
> > multiplier op codes. TI even has an app note on how to use the
> right op
> > codes to call the part of the MSP430.
> >
> > A few resourceful souls created this macro to call the hardware
> > multiplier to avoid writing in-line assembly for each time you
> wanted to
> > do this. Play around with just having your two variable multiplied
> > instead of calling this and make sure that the "Use Hardware
> Multiplier"
> > flag is set on your compiler. That should handle it. Check your
> > assembly output to make sure the code is calling the hardware
> multiplier.
> >
> > Steve
> >
> >
> > Later wrote:
> > >
> > > Hi all,
> > >
> > > I am doing some research on non-invasive vital signs monitoring. I
> > > have assembled the materials for my baseline research platform
> > > according to the pulseoximeter design and c code files given on
Texas
> > > Instrument's website
> > "http://focus.ti.com/apps/docs/appsolntechdocsabstract.tsp?appId=330&abstractName=slaa274
>
> > "
> > >
> > > Unfortunately, the programming aspects of the MSP 430FG are way
beyond
> > > my skill level.
> > >
> > > I have begun the programming effort using the TI C code
developed for
> > > the pulse oximeter design described in slaa274.pdf without much
> > > success. I am using the Texas Instrument's Flash Emulation tool
MSP430
> > > 80-Pin Package Board, USB Programmer MSP-FET430U80, and IAR Embedded
> > > Workbench IDE free version.
> > >
> > > The code compiles ok, but won't link due to the following error:
> > >
> > > Error[e46]: Undefined external "mul16" referred in main ( C:\Mike
> > > IU\medical device\Mike Oximeter Experiment\Oximeter
> > > C Code Mike\Mike Oximeter Phase 1b\Debug\Obj\main.r43 )
> > >
> > > The line of code creating this error, I think, is:
> > >
> > > int32_t mul16(register int16_t x, register int16_t y);
> > >
> > > As best as I can tell, there is a function mul16 that is not defined
> > > anywhere. Perhaps this has somthing to do with IAR libraries?
> > >
> > > Can anyone help me to locate this function?
> > >
> > > Thanks everyone
> > >
> > > Mike
> > >
> > >
>
------------------------------------



(You need to be a member of msp430 -- send a blank email to msp430-subscribe@yahoogroups.com )

Re: Re: Single-Chip Pulsoximeter Design - Steve Sabram - Oct 1 17:01:59 2008

I think there are multiple mul16() macros out there. The one I saw was
as I described from a few years ago. Would not be surprised if there is
other functions under this name out there.

Steve
old_cow_yellow wrote:
>
> Steve,
>
> The assembly source code for mul16(x,y) is included in slaa147.zip.
> It does not use the hardware multiply.
>
> --- In m...@yahoogroups.com , Steve
> Sabram wrote:
> >
> > int32_t mul16(register int16_t x, register int16_t y);
> >
> > This routine specifically calls the hardware multiplier of the MSP430.
> > Considering what compiler you are using, it may be an obsolete
> > function. When the first C compilers came out for the MSP430, a
> > multiply operation "*" was compiled without calling the hardware
> > multiplier op codes. TI even has an app note on how to use the
> right op
> > codes to call the part of the MSP430.
> >
> > A few resourceful souls created this macro to call the hardware
> > multiplier to avoid writing in-line assembly for each time you
> wanted to
> > do this. Play around with just having your two variable multiplied
> > instead of calling this and make sure that the "Use Hardware
> Multiplier"
> > flag is set on your compiler. That should handle it. Check your
> > assembly output to make sure the code is calling the hardware
> multiplier.
> >
> > Steve
> >
> >
> > Later wrote:
> > >
> > > Hi all,
> > >
> > > I am doing some research on non-invasive vital signs monitoring. I
> > > have assembled the materials for my baseline research platform
> > > according to the pulseoximeter design and c code files given on Texas
> > > Instrument's website
> > >
> "http://focus.ti.com/apps/docs/appsolntechdocsabstract.tsp?appId=330&abstractName=slaa274
> > >
> > >"
> > >
> > > Unfortunately, the programming aspects of the MSP 430FG are way beyond
> > > my skill level.
> > >
> > > I have begun the programming effort using the TI C code developed for
> > > the pulse oximeter design described in slaa274.pdf without much
> > > success. I am using the Texas Instrument's Flash Emulation tool MSP430
> > > 80-Pin Package Board, USB Programmer MSP-FET430U80, and IAR Embedded
> > > Workbench IDE free version.
> > >
> > > The code compiles ok, but won't link due to the following error:
> > >
> > > Error[e46]: Undefined external "mul16" referred in main ( C:\Mike
> > > IU\medical device\Mike Oximeter Experiment\Oximeter
> > > C Code Mike\Mike Oximeter Phase 1b\Debug\Obj\main.r43 )
> > >
> > > The line of code creating this error, I think, is:
> > >
> > > int32_t mul16(register int16_t x, register int16_t y);
> > >
> > > As best as I can tell, there is a function mul16 that is not defined
> > > anywhere. Perhaps this has somthing to do with IAR libraries?
> > >
> > > Can anyone help me to locate this function?
> > >
> > > Thanks everyone
> > >
> > > Mike
> > >
> > >
> >
------------------------------------



(You need to be a member of msp430 -- send a blank email to msp430-subscribe@yahoogroups.com )

Re: Re: Single-Chip Pulsoximeter Design - anju latha - Oct 7 1:51:11 2008

hi,

i am doing single chip pulse oxymeter using msp430fg437 in slaa274.zip file

i designed a pcb for that circuit and downloading my program, and do
debugging

and connecting pulseoxy probe *Nellcor compatible 520-1011N*
1.By enabling the RED & IR leds,which i can see the glowing the visible RED
led

2.The output of the pulseoxy probe is giving to the OA0 by connecting the
5.1Mohms and 5pf as feed back

3.Then connected the out put OA0 to OA1 through 5k to OA110 and 150k placing
b/w the OA110 to
OA111/OA1O.

4. simulteneously the out put of OA0 is acces by the ADC A1 input.the out
put of ADC12 has to give to DC
Tracking, after that it is given to dac12_1. The out put of DAC12_1 if
given to the OA111

now i want to see the result of the DC tracking and DAC12_1 ,output of the
OA0,OA10
where i can see the result of above varibles
by reading the registers

DAC12_0DAT = 0x0d9f
DAC12_1DAT = 0x7d0

ADC12MEM0=0x0fff
ADC12MEM1=0x000c

and the values are varying
and running the programming it is giving result
heart rate=0,and sa02=0 in lcd (which i saw in IAR KICK STARTER)
if any one do the this
please give me the suggestion

anju

On Thu, Oct 2, 2008 at 2:31 AM, Steve Sabram wrote:

> I think there are multiple mul16() macros out there. The one I saw was
> as I described from a few years ago. Would not be surprised if there is
> other functions under this name out there.
>
> Steve
> old_cow_yellow wrote:
> >
> > Steve,
> >
> > The assembly source code for mul16(x,y) is included in slaa147.zip.
> > It does not use the hardware multiply.
> >
> > --- In m...@yahoogroups.com > msp430%40yahoogroups.com >, Steve
> > Sabram wrote:
> > >
> > > int32_t mul16(register int16_t x, register int16_t y);
> > >
> > > This routine specifically calls the hardware multiplier of the MSP430.
> > > Considering what compiler you are using, it may be an obsolete
> > > function. When the first C compilers came out for the MSP430, a
> > > multiply operation "*" was compiled without calling the hardware
> > > multiplier op codes. TI even has an app note on how to use the
> > right op
> > > codes to call the part of the MSP430.
> > >
> > > A few resourceful souls created this macro to call the hardware
> > > multiplier to avoid writing in-line assembly for each time you
> > wanted to
> > > do this. Play around with just having your two variable multiplied
> > > instead of calling this and make sure that the "Use Hardware
> > Multiplier"
> > > flag is set on your compiler. That should handle it. Check your
> > > assembly output to make sure the code is calling the hardware
> > multiplier.
> > >
> > > Steve
> > >
> > >
> > > Later wrote:
> > > >
> > > > Hi all,
> > > >
> > > > I am doing some research on non-invasive vital signs monitoring. I
> > > > have assembled the materials for my baseline research platform
> > > > according to the pulseoximeter design and c code files given on Texas
> > > > Instrument's website
> > > >
> > "
> http://focus.ti.com/apps/docs/appsolntechdocsabstract.tsp?appId=330&abstractName=slaa274
> > <
> http://focus.ti.com/apps/docs/appsolntechdocsabstract.tsp?appId=330&abstractName=slaa274
> >
> >
> > > >
> > <
> http://focus.ti.com/apps/docs/appsolntechdocsabstract.tsp?appId=330&abstractName=slaa274
> > <
> http://focus.ti.com/apps/docs/appsolntechdocsabstract.tsp?appId=330&abstractName=slaa274
> >>"
> > > >
> > > > Unfortunately, the programming aspects of the MSP 430FG are way
> beyond
> > > > my skill level.
> > > >
> > > > I have begun the programming effort using the TI C code developed for
> > > > the pulse oximeter design described in slaa274.pdf without much
> > > > success. I am using the Texas Instrument's Flash Emulation tool
> MSP430
> > > > 80-Pin Package Board, USB Programmer MSP-FET430U80, and IAR Embedded
> > > > Workbench IDE free version.
> > > >
> > > > The code compiles ok, but won't link due to the following error:
> > > >
> > > > Error[e46]: Undefined external "mul16" referred in main ( C:\Mike
> > > > IU\medical device\Mike Oximeter Experiment\Oximeter
> > > > C Code Mike\Mike Oximeter Phase 1b\Debug\Obj\main.r43 )
> > > >
> > > > The line of code creating this error, I think, is:
> > > >
> > > > int32_t mul16(register int16_t x, register int16_t y);
> > > >
> > > > As best as I can tell, there is a function mul16 that is not defined
> > > > anywhere. Perhaps this has somthing to do with IAR libraries?
> > > >
> > > > Can anyone help me to locate this function?
> > > >
> > > > Thanks everyone
> > > >
> > > > Mike
> > > >
> > > >
> > >
> >
> >
>

--
anju
[Non-text portions of this message have been removed]
------------------------------------



(You need to be a member of msp430 -- send a blank email to msp430-subscribe@yahoogroups.com )