Reply by Paul Curtis April 1, 20062006-04-01
You've probably left the linker definition of the symbol in the
project,
so remove it!

-- Paul. 

> -----Original Message-----
> From: Micah [mailto:micah@mica...] 
> Sent: 01 April 2006 00:15
> To: msp430@msp4...
> Subject: Re: [msp430] Okay, now crossworks question
> 
> 
> Yep, in main.c and common.c.
> 
> 
> -Micah
> 
> Microbit wrote:
> 
> >Have you included the crossworks IO header file :
> >
> >#include <__cross_studio_io.h>
> >
> >???
> >
> >-- Kris
> >
> >
> >-----Original Message-----
> >From: msp430@msp4... [mailto:msp430@msp4...] 
> On Behalf 
> >Of Micah
> >Sent: Saturday, 1 April 2006 10:10 AM
> >To: msp430@msp4...
> >Subject: Re: [msp430] Okay, now crossworks question
> >
> >
> >Still not working.
> >
> >Okay, so I added this function to common.c:
> >
> >int __putchar (int spi_data)
> >{
> >    if (spi_data == '\n')
> >    spi_data = 0x0a;
> >  WRITE_TX_BUF2 (spi_data & 0xff);
> >  WAIT_SPI_FREE2;
> > 
> > return (spi_data);
> >}
> >
> >And this to common.h:
> >
> >int __putchar (int);
> >
> >and included <stdio.h> in common.c and main.c. And I still get
the 
> >duplicate __putchar error.
> >
> >What's up?
> >
> >-Micah
> >
> >
> >Microbit wrote:
> >
> >  
> >
> >>Hello Micah,
> >>
> >>Simply use the __putchar() function with the same prototype 
> as in the 
> >>library, and your own __putchar() code will be linked in, 
> instead of the Library code.
> >>
> >>You _must_ use the same prototype to have your own function 
> linked in ie.
> >>
> >>int __putchar (int);
> >>
> >>If you're using SPI, just return the parameter you were 
> called with :
> >>
> >>int __putchar (int spi_data)
> >>{
> >>	//.... do your SPI stuff
> >>return (spi_data);
> >>}
> >>
> >>If there's an error you can elect to return EOF or IOW (-1)
> >>
> >>
> >>B rgds
> >>Kris
> >>
> >>
> >>-----Original Message-----
> >>From: msp430@msp4... 
> [mailto:msp430@msp4...] On Behalf 
> >>Of Micah
> >>Sent: Saturday, 1 April 2006 9:25 AM
> >>To: msp430@msp4...
> >>Subject: [msp430] Okay, now crossworks question
> >>
> >>Thanks everyone for the feedback on the terminal programs.
> >>
> >>New problem with crossworks. I'm trying to redefine
__putchar() to 
> >>send out the SPI port, instead of to the virtual terminal. So 
> >>according to the instructions, I should just be able to 
> redirect the 
> >>linker to use my function instead of the __putchar() 
> function, right? I did this:
> >>
> >>-D___putchar=_my_putchar
> >>
> >>in the additional linker options. This should utilize my_putchar() 
> >>instead of the standard one, right? However, when I 
> compile, I get a 
> >>duplicate __printchar error now.
> >>
> >>Any ideas? Is there a better way to do this?
> >>
> >>-Micah
> >>
> >>
> >>.
> >>
> >>
> >>Yahoo! Groups Links
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>.
> >>
> >>
> >>Yahoo! Groups Links
> >>
> >>
> >>
> >>
> >>
> >>
> >> 
> >>
> >>    
> >>
> >
> >
> >
> >.
> >
> > 
> >Yahoo! Groups Links
> >
> >
> >
> > 
> >
> >
> >
> >
> >
> >.
> >
> > 
> >Yahoo! Groups Links
> >
> >
> >
> > 
> >
> >
> >  
> >
> 
> 
> 
> .
> 
>  
> Yahoo! Groups Links
> 
> 
> 
>  
> 
> 
> 

Beginning Microcontrollers with the MSP430

Reply by Paul Curtis April 1, 20062006-04-01
Micah,

Yes.  Just define __putchar in your source code.

int __putchar(int ch)
{ 
  // do something...
}

The linker defines are something different...

-- Paul.

> -----Original Message-----
> From: Micah [mailto:micah@mica...] 
> Sent: 31 March 2006 23:25
> To: msp430@msp4...
> Subject: [msp430] Okay, now crossworks question
> 
> Thanks everyone for the feedback on the terminal programs.
> 
> New problem with crossworks. I'm trying to redefine 
> __putchar() to send out the SPI port, instead of to the 
> virtual terminal. So according to the instructions, I should 
> just be able to redirect the linker to use my function 
> instead of the __putchar() function, right? I did this:
> 
> -D___putchar=_my_putchar
> 
> in the additional linker options. This should utilize 
> my_putchar() instead of the standard one, right? However, 
> when I compile, I get a duplicate __printchar error now.
> 
> Any ideas? Is there a better way to do this?
> 
> -Micah
> 
> 
> .
> 
>  
> Yahoo! Groups Links
> 
> 
> 
>  
> 
> 
> 

Reply by Microbit March 31, 20062006-03-31
I'll have to look it up, maybe you're not supposed to declare the
prototype in common.h

-----Original Message-----
From: msp430@msp4... [mailto:msp430@msp4...] On Behalf Of Micah
Sent: Saturday, 1 April 2006 10:25 AM
To: msp430@msp4...
Subject: Re: [msp430] Okay, now crossworks question


Same error with or without the Crossworks io header file.

*grumble*

I'll just write my own printf routine..
-Micah

Microbit wrote:

>If you take over that function, you shouldn't
include the crossworks io header file,
>just use the prototype in your common.h file IIRC.
>It's been a while I've done this.
>I'd have to dig up old code to check.
>
>-- Kris
>
>-----Original Message-----
>From: msp430@msp4... [mailto:msp430@msp4...] On Behalf Of Micah
>Sent: Saturday, 1 April 2006 10:15 AM
>To: msp430@msp4...
>Subject: Re: [msp430] Okay, now crossworks question
>
>
>Yep, in main.c and common.c.
>
>
>-Micah
>
>Microbit wrote:
>
>  
>
>>Have you included the crossworks IO header file :
>>
>>#include <__cross_studio_io.h>
>>
>>???
>>
>>-- Kris
>>
>>
>>-----Original Message-----
>>From: msp430@msp4... [mailto:msp430@msp4...] On Behalf Of Micah
>>Sent: Saturday, 1 April 2006 10:10 AM
>>To: msp430@msp4...
>>Subject: Re: [msp430] Okay, now crossworks question
>>
>>
>>Still not working.
>>
>>Okay, so I added this function to common.c:
>>
>>int __putchar (int spi_data)
>>{
>>   if (spi_data == '\n')
>>   spi_data = 0x0a;
>> WRITE_TX_BUF2 (spi_data & 0xff);
>> WAIT_SPI_FREE2;
>>
>>return (spi_data);
>>}
>>
>>And this to common.h:
>>
>>int __putchar (int);
>>
>>and included <stdio.h> in common.c and main.c. And I still get the

>>duplicate __putchar error.
>>
>>What's up?
>>
>>-Micah
>>
>>
>>Microbit wrote:
>>
>> 
>>
>>    
>>
>>>Hello Micah,
>>>
>>>Simply use the __putchar() function with the same prototype as in
the library, and
>>>your own __putchar() code will be linked in, instead of the Library
code.
>>>
>>>You _must_ use the same prototype to have your own function linked
in ie.
>>>
>>>int __putchar (int);
>>>
>>>If you're using SPI, just return the parameter you were called
with :
>>>
>>>int __putchar (int spi_data)
>>>{
>>>	//.... do your SPI stuff
>>>return (spi_data);
>>>}
>>>
>>>If there's an error you can elect to return EOF or IOW (-1)
>>>
>>>
>>>B rgds
>>>Kris
>>>
>>>
>>>-----Original Message-----
>>>From: msp430@msp4... [mailto:msp430@msp4...] On Behalf Of Micah
>>>Sent: Saturday, 1 April 2006 9:25 AM
>>>To: msp430@msp4...
>>>Subject: [msp430] Okay, now crossworks question
>>>
>>>Thanks everyone for the feedback on the terminal programs.
>>>
>>>New problem with crossworks. I'm trying to redefine __putchar()
to send 
>>>out the SPI port, instead of to the virtual terminal. So according
to 
>>>the instructions, I should just be able to redirect the linker to
use my 
>>>function instead of the __putchar() function, right? I did this:
>>>
>>>-D___putchar=_my_putchar
>>>
>>>in the additional linker options. This should utilize my_putchar() 
>>>instead of the standard one, right? However, when I compile, I get a

>>>duplicate __printchar error now.
>>>
>>>Any ideas? Is there a better way to do this?
>>>
>>>-Micah
>>>
>>>
>>>.
>>>
>>>
>>>Yahoo! Groups Links
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>.
>>>
>>>
>>>Yahoo! Groups Links
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>   
>>>
>>>      
>>>
>>
>>.
>>
>>
>>Yahoo! Groups Links
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>.
>>
>>
>>Yahoo! Groups Links
>>
>>
>>
>>
>>
>>
>> 
>>
>>    
>>
>
>
>
>.
>
> 
>Yahoo! Groups Links
>
>
>
> 
>
>
>
>
>
>.
>
> 
>Yahoo! Groups Links
>
>
>
> 
>
>
>  
>



.

 
Yahoo! Groups Links



 




Reply by Micah March 31, 20062006-03-31
Same error with or without the Crossworks io header file.

*grumble*

I'll just write my own printf routine..
-Micah

Microbit wrote:

>If you take over that function, you shouldn't
include the crossworks io header file,
>just use the prototype in your common.h file IIRC.
>It's been a while I've done this.
>I'd have to dig up old code to check.
>
>-- Kris
>
>-----Original Message-----
>From: msp430@msp4... [mailto:msp430@msp4...] On Behalf Of Micah
>Sent: Saturday, 1 April 2006 10:15 AM
>To: msp430@msp4...
>Subject: Re: [msp430] Okay, now crossworks question
>
>
>Yep, in main.c and common.c.
>
>
>-Micah
>
>Microbit wrote:
>
>  
>
>>Have you included the crossworks IO header file :
>>
>>#include <__cross_studio_io.h>
>>
>>???
>>
>>-- Kris
>>
>>
>>-----Original Message-----
>>From: msp430@msp4... [mailto:msp430@msp4...] On Behalf Of Micah
>>Sent: Saturday, 1 April 2006 10:10 AM
>>To: msp430@msp4...
>>Subject: Re: [msp430] Okay, now crossworks question
>>
>>
>>Still not working.
>>
>>Okay, so I added this function to common.c:
>>
>>int __putchar (int spi_data)
>>{
>>   if (spi_data == '\n')
>>   spi_data = 0x0a;
>> WRITE_TX_BUF2 (spi_data & 0xff);
>> WAIT_SPI_FREE2;
>>
>>return (spi_data);
>>}
>>
>>And this to common.h:
>>
>>int __putchar (int);
>>
>>and included <stdio.h> in common.c and main.c. And I still get the

>>duplicate __putchar error.
>>
>>What's up?
>>
>>-Micah
>>
>>
>>Microbit wrote:
>>
>> 
>>
>>    
>>
>>>Hello Micah,
>>>
>>>Simply use the __putchar() function with the same prototype as in
the library, and
>>>your own __putchar() code will be linked in, instead of the Library
code.
>>>
>>>You _must_ use the same prototype to have your own function linked
in ie.
>>>
>>>int __putchar (int);
>>>
>>>If you're using SPI, just return the parameter you were called
with :
>>>
>>>int __putchar (int spi_data)
>>>{
>>>	//.... do your SPI stuff
>>>return (spi_data);
>>>}
>>>
>>>If there's an error you can elect to return EOF or IOW (-1)
>>>
>>>
>>>B rgds
>>>Kris
>>>
>>>
>>>-----Original Message-----
>>>From: msp430@msp4... [mailto:msp430@msp4...] On Behalf Of Micah
>>>Sent: Saturday, 1 April 2006 9:25 AM
>>>To: msp430@msp4...
>>>Subject: [msp430] Okay, now crossworks question
>>>
>>>Thanks everyone for the feedback on the terminal programs.
>>>
>>>New problem with crossworks. I'm trying to redefine __putchar()
to send 
>>>out the SPI port, instead of to the virtual terminal. So according
to 
>>>the instructions, I should just be able to redirect the linker to
use my 
>>>function instead of the __putchar() function, right? I did this:
>>>
>>>-D___putchar=_my_putchar
>>>
>>>in the additional linker options. This should utilize my_putchar() 
>>>instead of the standard one, right? However, when I compile, I get a

>>>duplicate __printchar error now.
>>>
>>>Any ideas? Is there a better way to do this?
>>>
>>>-Micah
>>>
>>>
>>>.
>>>
>>>
>>>Yahoo! Groups Links
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>.
>>>
>>>
>>>Yahoo! Groups Links
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>   
>>>
>>>      
>>>
>>
>>.
>>
>>
>>Yahoo! Groups Links
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>.
>>
>>
>>Yahoo! Groups Links
>>
>>
>>
>>
>>
>>
>> 
>>
>>    
>>
>
>
>
>.
>
> 
>Yahoo! Groups Links
>
>
>
> 
>
>
>
>
>
>.
>
> 
>Yahoo! Groups Links
>
>
>
> 
>
>
>  
>


Reply by Microbit March 31, 20062006-03-31
If you take over that function, you shouldn't include the crossworks
io header file,
just use the prototype in your common.h file IIRC.
It's been a while I've done this.
I'd have to dig up old code to check.

-- Kris

-----Original Message-----
From: msp430@msp4... [mailto:msp430@msp4...] On Behalf Of Micah
Sent: Saturday, 1 April 2006 10:15 AM
To: msp430@msp4...
Subject: Re: [msp430] Okay, now crossworks question


Yep, in main.c and common.c.


-Micah

Microbit wrote:

>Have you included the crossworks IO header file :
>
>#include <__cross_studio_io.h>
>
>???
>
>-- Kris
>
>
>-----Original Message-----
>From: msp430@msp4... [mailto:msp430@msp4...] On Behalf Of Micah
>Sent: Saturday, 1 April 2006 10:10 AM
>To: msp430@msp4...
>Subject: Re: [msp430] Okay, now crossworks question
>
>
>Still not working.
>
>Okay, so I added this function to common.c:
>
>int __putchar (int spi_data)
>{
>    if (spi_data == '\n')
>    spi_data = 0x0a;
>  WRITE_TX_BUF2 (spi_data & 0xff);
>  WAIT_SPI_FREE2;
> 
> return (spi_data);
>}
>
>And this to common.h:
>
>int __putchar (int);
>
>and included <stdio.h> in common.c and main.c. And I still get the 
>duplicate __putchar error.
>
>What's up?
>
>-Micah
>
>
>Microbit wrote:
>
>  
>
>>Hello Micah,
>>
>>Simply use the __putchar() function with the same prototype as in the
library, and
>>your own __putchar() code will be linked in, instead of the Library
code.
>>
>>You _must_ use the same prototype to have your own function linked in
ie.
>>
>>int __putchar (int);
>>
>>If you're using SPI, just return the parameter you were called with
:
>>
>>int __putchar (int spi_data)
>>{
>>	//.... do your SPI stuff
>>return (spi_data);
>>}
>>
>>If there's an error you can elect to return EOF or IOW (-1)
>>
>>
>>B rgds
>>Kris
>>
>>
>>-----Original Message-----
>>From: msp430@msp4... [mailto:msp430@msp4...] On Behalf Of Micah
>>Sent: Saturday, 1 April 2006 9:25 AM
>>To: msp430@msp4...
>>Subject: [msp430] Okay, now crossworks question
>>
>>Thanks everyone for the feedback on the terminal programs.
>>
>>New problem with crossworks. I'm trying to redefine __putchar() to
send 
>>out the SPI port, instead of to the virtual terminal. So according to 
>>the instructions, I should just be able to redirect the linker to use my

>>function instead of the __putchar() function, right? I did this:
>>
>>-D___putchar=_my_putchar
>>
>>in the additional linker options. This should utilize my_putchar() 
>>instead of the standard one, right? However, when I compile, I get a 
>>duplicate __printchar error now.
>>
>>Any ideas? Is there a better way to do this?
>>
>>-Micah
>>
>>
>>.
>>
>>
>>Yahoo! Groups Links
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>.
>>
>>
>>Yahoo! Groups Links
>>
>>
>>
>>
>>
>>
>> 
>>
>>    
>>
>
>
>
>.
>
> 
>Yahoo! Groups Links
>
>
>
> 
>
>
>
>
>
>.
>
> 
>Yahoo! Groups Links
>
>
>
> 
>
>
>  
>



.

 
Yahoo! Groups Links



 




Reply by Micah March 31, 20062006-03-31
If it helps, here's the error:

C:/Program Files/Rowley Associates Limited/CrossWorks MSP430 1.3/bin/hld 
HW_debug/nRF2401_MAC.hzo HW_debug/sys_init.hzo HW_debug/mulaw.hzo 
HW_debug/pn_tables.hzo HW_debug/interrupts.hzo HW_debug/common.hzo 
HW_debug/timers.hzo HW_debug/charging.hzo HW_debug/signal.hzo 
HW_debug/led.hzo HW_debug/main.hzo HW_debug/channel.hzo 
HW_debug/sys_debug.hzo HW_debug/crt0.hzo C:/Program Files/Rowley 
Associates Limited/CrossWorks MSP430 1.3/lib/lib_vfprintf_int_hf.hza 
C:/Program Files/Rowley Associates Limited/CrossWorks MSP430 
1.3/lib/lib_vfscanf_int_hf.hza -g C:/Program Files/Rowley Associates 
Limited/CrossWorks MSP430 1.3/lib/libc_hf.hza C:/Program Files/Rowley 
Associates Limited/CrossWorks MSP430 1.3/lib/libm_hf.hza -Oph -Ofl -Odc 
-Ojt -GCODE=L -GCONST=L -TINTVECe0 -GINTVEC=L -TCODE,CONST00-ffdf 
-GINFO=L -TINFO00-10ff -DRAM_Start_AddressQ2 -DRAM_Size 48 
-T.abs=0 -G.abs=L -TIDATA0,UDATA0 0-9ff -o HW_debug/FHSS_RC1.hzx

C:/Program Files/Rowley Associates Limited/CrossWorks MSP430 
1.3/bin/hld: duplicate symbol '___putchar'

-Micah


Micah wrote:

>Yep, in main.c and common.c.
>
>
>-Micah
>
>Microbit wrote:
>
>  
>
>>Have you included the crossworks IO header file :
>>
>>#include <__cross_studio_io.h>
>>
>>???
>>
>>-- Kris
>>
>>
>>-----Original Message-----
>>From: msp430@msp4... [mailto:msp430@msp4...] On Behalf Of Micah
>>Sent: Saturday, 1 April 2006 10:10 AM
>>To: msp430@msp4...
>>Subject: Re: [msp430] Okay, now crossworks question
>>
>>
>>Still not working.
>>
>>Okay, so I added this function to common.c:
>>
>>int __putchar (int spi_data)
>>{
>>   if (spi_data == '\n')
>>   spi_data = 0x0a;
>> WRITE_TX_BUF2 (spi_data & 0xff);
>> WAIT_SPI_FREE2;
>>
>>return (spi_data);
>>}
>>
>>And this to common.h:
>>
>>int __putchar (int);
>>
>>and included <stdio.h> in common.c and main.c. And I still get the

>>duplicate __putchar error.
>>
>>What's up?
>>
>>-Micah
>>
>>
>>Microbit wrote:
>>
>> 
>>
>>    
>>
>>>Hello Micah,
>>>
>>>Simply use the __putchar() function with the same prototype as in
the library, and
>>>your own __putchar() code will be linked in, instead of the Library
code.
>>>
>>>You _must_ use the same prototype to have your own function linked
in ie.
>>>
>>>int __putchar (int);
>>>
>>>If you're using SPI, just return the parameter you were called
with :
>>>
>>>int __putchar (int spi_data)
>>>{
>>>	//.... do your SPI stuff
>>>return (spi_data);
>>>}
>>>
>>>If there's an error you can elect to return EOF or IOW (-1)
>>>
>>>
>>>B rgds
>>>Kris
>>>
>>>
>>>-----Original Message-----
>>>From: msp430@msp4... [mailto:msp430@msp4...] On Behalf Of Micah
>>>Sent: Saturday, 1 April 2006 9:25 AM
>>>To: msp430@msp4...
>>>Subject: [msp430] Okay, now crossworks question
>>>
>>>Thanks everyone for the feedback on the terminal programs.
>>>
>>>New problem with crossworks. I'm trying to redefine __putchar()
to send 
>>>out the SPI port, instead of to the virtual terminal. So according
to 
>>>the instructions, I should just be able to redirect the linker to
use my 
>>>function instead of the __putchar() function, right? I did this:
>>>
>>>-D___putchar=_my_putchar
>>>
>>>in the additional linker options. This should utilize my_putchar() 
>>>instead of the standard one, right? However, when I compile, I get a

>>>duplicate __printchar error now.
>>>
>>>Any ideas? Is there a better way to do this?
>>>
>>>-Micah
>>>
>>>
>>>.
>>>
>>>
>>>Yahoo! Groups Links
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>.
>>>
>>>
>>>Yahoo! Groups Links
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>   
>>>
>>>      
>>>
>>
>>.
>>
>>
>>Yahoo! Groups Links
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>.
>>
>>
>>Yahoo! Groups Links
>>
>>
>>
>>
>>
>>
>> 
>>
>>    
>>
>
>
>
>.
>
> 
>Yahoo! Groups Links
>
>
>
> 
>
>
>  
>


Reply by Micah March 31, 20062006-03-31
Yep, in main.c and common.c.


-Micah

Microbit wrote:

>Have you included the crossworks IO header file :
>
>#include <__cross_studio_io.h>
>
>???
>
>-- Kris
>
>
>-----Original Message-----
>From: msp430@msp4... [mailto:msp430@msp4...] On Behalf Of Micah
>Sent: Saturday, 1 April 2006 10:10 AM
>To: msp430@msp4...
>Subject: Re: [msp430] Okay, now crossworks question
>
>
>Still not working.
>
>Okay, so I added this function to common.c:
>
>int __putchar (int spi_data)
>{
>    if (spi_data == '\n')
>    spi_data = 0x0a;
>  WRITE_TX_BUF2 (spi_data & 0xff);
>  WAIT_SPI_FREE2;
> 
> return (spi_data);
>}
>
>And this to common.h:
>
>int __putchar (int);
>
>and included <stdio.h> in common.c and main.c. And I still get the 
>duplicate __putchar error.
>
>What's up?
>
>-Micah
>
>
>Microbit wrote:
>
>  
>
>>Hello Micah,
>>
>>Simply use the __putchar() function with the same prototype as in the
library, and
>>your own __putchar() code will be linked in, instead of the Library
code.
>>
>>You _must_ use the same prototype to have your own function linked in
ie.
>>
>>int __putchar (int);
>>
>>If you're using SPI, just return the parameter you were called with
:
>>
>>int __putchar (int spi_data)
>>{
>>	//.... do your SPI stuff
>>return (spi_data);
>>}
>>
>>If there's an error you can elect to return EOF or IOW (-1)
>>
>>
>>B rgds
>>Kris
>>
>>
>>-----Original Message-----
>>From: msp430@msp4... [mailto:msp430@msp4...] On Behalf Of Micah
>>Sent: Saturday, 1 April 2006 9:25 AM
>>To: msp430@msp4...
>>Subject: [msp430] Okay, now crossworks question
>>
>>Thanks everyone for the feedback on the terminal programs.
>>
>>New problem with crossworks. I'm trying to redefine __putchar() to
send 
>>out the SPI port, instead of to the virtual terminal. So according to 
>>the instructions, I should just be able to redirect the linker to use my

>>function instead of the __putchar() function, right? I did this:
>>
>>-D___putchar=_my_putchar
>>
>>in the additional linker options. This should utilize my_putchar() 
>>instead of the standard one, right? However, when I compile, I get a 
>>duplicate __printchar error now.
>>
>>Any ideas? Is there a better way to do this?
>>
>>-Micah
>>
>>
>>.
>>
>>
>>Yahoo! Groups Links
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>.
>>
>>
>>Yahoo! Groups Links
>>
>>
>>
>>
>>
>>
>> 
>>
>>    
>>
>
>
>
>.
>
> 
>Yahoo! Groups Links
>
>
>
> 
>
>
>
>
>
>.
>
> 
>Yahoo! Groups Links
>
>
>
> 
>
>
>  
>


Reply by Microbit March 31, 20062006-03-31
Have you included the crossworks IO header file :

#include <__cross_studio_io.h>

???

-- Kris


-----Original Message-----
From: msp430@msp4... [mailto:msp430@msp4...] On Behalf Of Micah
Sent: Saturday, 1 April 2006 10:10 AM
To: msp430@msp4...
Subject: Re: [msp430] Okay, now crossworks question


Still not working.

Okay, so I added this function to common.c:

int __putchar (int spi_data)
{
    if (spi_data == '\n')
    spi_data = 0x0a;
  WRITE_TX_BUF2 (spi_data & 0xff);
  WAIT_SPI_FREE2;
 
 return (spi_data);
}

And this to common.h:

int __putchar (int);

and included <stdio.h> in common.c and main.c. And I still get the 
duplicate __putchar error.

What's up?

-Micah


Microbit wrote:

>Hello Micah,
>
>Simply use the __putchar() function with the same prototype as in the
library, and
>your own __putchar() code will be linked in, instead of the Library code.
>
>You _must_ use the same prototype to have your own function linked in ie.
>
>int __putchar (int);
>
>If you're using SPI, just return the parameter you were called with :
>
>int __putchar (int spi_data)
>{
>	//.... do your SPI stuff
> return (spi_data);
>}
>
>If there's an error you can elect to return EOF or IOW (-1)
>
>
>B rgds
>Kris
>
>
>-----Original Message-----
>From: msp430@msp4... [mailto:msp430@msp4...] On Behalf Of Micah
>Sent: Saturday, 1 April 2006 9:25 AM
>To: msp430@msp4...
>Subject: [msp430] Okay, now crossworks question
>
>Thanks everyone for the feedback on the terminal programs.
>
>New problem with crossworks. I'm trying to redefine __putchar() to send

>out the SPI port, instead of to the virtual terminal. So according to 
>the instructions, I should just be able to redirect the linker to use my 
>function instead of the __putchar() function, right? I did this:
>
>-D___putchar=_my_putchar
>
>in the additional linker options. This should utilize my_putchar() 
>instead of the standard one, right? However, when I compile, I get a 
>duplicate __printchar error now.
>
>Any ideas? Is there a better way to do this?
>
>-Micah
>
>
>.
>
> 
>Yahoo! Groups Links
>
>
>
> 
>
>
>
>
>
>.
>
> 
>Yahoo! Groups Links
>
>
>
> 
>
>
>  
>



.

 
Yahoo! Groups Links



 




Reply by Microbit March 31, 20062006-03-31
Huh ?
Weird that this works, you MUST match the prototype (or should have to) :
int __putchar (int);

I'll try this next time I'm on MSP430, I'm coding on ARM for the
moment.

-- Kris

-----Original Message-----
From: msp430@msp4... [mailto:msp430@msp4...] On Behalf Of Christopher Cole
Sent: Saturday, 1 April 2006 10:05 AM
To: msp430@msp4...
Subject: Re: [msp430] Okay, now crossworks question

On Fri, Mar 31, 2006 at 02:25:08PM -0800, Micah wrote:
> New problem with crossworks. I'm trying to redefine __putchar() to
send 
> out the SPI port, instead of to the virtual terminal. So according to 
> the instructions, I should just be able to redirect the linker to use my 
> function instead of the __putchar() function, right?

Micah,

What I have done to implement my own low level serial routine was to define
two functions, __putchar() and _putchar().  The first function here is the
one that Crossworks printf() function makes calls to:

void __putchar(int c)
{
#ifdef SERIAL_PORT
	_putchar(c);
#endif // SERIAL_PORT
#ifdef RADIO_PORT
	rf_send(c);
#endif // RADIO_PORT
}

Crossworks will use your __putchar() routine above if it exists, instead of
its own.

The second function is the actual low-level serial output routine that gets
called by the one above:

void _putchar(int c)
{
	...bleh
}

I did not define anything else, nor did I have to add any linker switches.
It just _works_. :)

Take care,
-Chris

-- 
 /> Christopher Cole                         <\                          
<\
<<  Cole Design and Development               \\  email: cole@cole...   \\
 \\ Computer Networking & Embedded Electronics \\ web: http://coledd.com   
>>
  \>                                            \>                        
</


.

 
Yahoo! Groups Links



 




Reply by Micah March 31, 20062006-03-31
Still not working.

Okay, so I added this function to common.c:

int __putchar (int spi_data)
{
    if (spi_data == '\n')
    spi_data = 0x0a;
  WRITE_TX_BUF2 (spi_data & 0xff);
  WAIT_SPI_FREE2;
 
 return (spi_data);
}

And this to common.h:

int __putchar (int);

and included <stdio.h> in common.c and main.c. And I still get the 
duplicate __putchar error.

What's up?

-Micah


Microbit wrote:

>Hello Micah,
>
>Simply use the __putchar() function with the same prototype as in the
library, and
>your own __putchar() code will be linked in, instead of the Library code.
>
>You _must_ use the same prototype to have your own function linked in ie.
>
>int __putchar (int);
>
>If you're using SPI, just return the parameter you were called with :
>
>int __putchar (int spi_data)
>{
>	//.... do your SPI stuff
> return (spi_data);
>}
>
>If there's an error you can elect to return EOF or IOW (-1)
>
>
>B rgds
>Kris
>
>
>-----Original Message-----
>From: msp430@msp4... [mailto:msp430@msp4...] On Behalf Of Micah
>Sent: Saturday, 1 April 2006 9:25 AM
>To: msp430@msp4...
>Subject: [msp430] Okay, now crossworks question
>
>Thanks everyone for the feedback on the terminal programs.
>
>New problem with crossworks. I'm trying to redefine __putchar() to send

>out the SPI port, instead of to the virtual terminal. So according to 
>the instructions, I should just be able to redirect the linker to use my 
>function instead of the __putchar() function, right? I did this:
>
>-D___putchar=_my_putchar
>
>in the additional linker options. This should utilize my_putchar() 
>instead of the standard one, right? However, when I compile, I get a 
>duplicate __printchar error now.
>
>Any ideas? Is there a better way to do this?
>
>-Micah
>
>
>.
>
> 
>Yahoo! Groups Links
>
>
>
> 
>
>
>
>
>
>.
>
> 
>Yahoo! Groups Links
>
>
>
> 
>
>
>  
>