H: putchar problem i CodeComposer för MSP430

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
ChristianS
Inlägg: 229
Blev medlem: 7 januari 2009, 11:13:58
Ort: Limhamn

H: putchar problem i CodeComposer för MSP430

Inlägg av ChristianS »

Sitter med MSP430F2274 och Code composer från texas, har lite problem med att få min putchar rutin att fungera.
i stdio.h är den putchar definierad som extern _CODE_ACCESS int putchar(int _x); alltså med integer. Således skrev jag min rutin efter det

int void putchar(int _x)
{
_x -=32; // remove offset in ascii table
char n,data;
for(n=0;n<5;n++)
{
data=characters[_x * 5 + n];
send_data(data);
}
return(0);
}

Compilatorn svarar då med:
invalid combination of type specifiers Battmeter HDSP2911.c line 139 1296405214312 36
(line 139 är första raden i kodexemplet ovanför)
pvovat med att byta till char men får lite andra bekymmer då den är deklarerad som int i stdio.h

Hoppas att det finns hjälp här, har kollat lite på TI's forum och hittat att andra haft problem men det har inte presenterats någon lösning i trådarna.
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: H: putchar problem i CodeComposer för MSP430

Inlägg av vfr »

Använd gärna "CODE"-taggar för koden. Det blir så mycket lättare att läsa då.
Användarvisningsbild
Icecap
Inlägg: 26656
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: H: putchar problem i CodeComposer för MSP430

Inlägg av Icecap »

Det går ju inte att ha en "int void putchar(int _x)"

Antingen är den int, annars är den void! Välj!
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: H: putchar problem i CodeComposer för MSP430

Inlägg av vfr »

Naturligtvis helt rätt. Jag lyckades givetvis missa detta uppenbara.
Användarvisningsbild
ChristianS
Inlägg: 229
Blev medlem: 7 januari 2009, 11:13:58
Ort: Limhamn

Re: H: putchar problem i CodeComposer för MSP430

Inlägg av ChristianS »

Har hittat lite exempelkod och de skriver faktiskt

Kod: Markera allt

int void(int c){}
och som jag sade innan är den deklarerad i stdio.h som

Kod: Markera allt

extern _CODE_ACCESS int     putchar(int _x);
int före är för att returnera ett värde, om man nu vill det men jag kör enligt exemplet.

jag har provat lite olika kombinationer av ändringar men inget hjälper det blir bara mer fel om jag ändrar.

:humm:
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: H: putchar problem i CodeComposer för MSP430

Inlägg av vfr »

Men du skriver inte

Kod: Markera allt

int void(int c){}
i koden, utan

Kod: Markera allt

int void putchar(int _x)
enligt standard är det väl

Kod: Markera allt

int putchar(int _x)
Användarvisningsbild
ChristianS
Inlägg: 229
Blev medlem: 7 januari 2009, 11:13:58
Ort: Limhamn

Re: H: putchar problem i CodeComposer för MSP430

Inlägg av ChristianS »

Amen va f-n vad trött jag blir på mig själv :doh: Tips: sitt aldrig och programmera med hög feber, det tar lång tid att fatta till och med när man blir skriven på näsan.

Tack för hjälpen :bravo:
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: H: putchar problem i CodeComposer för MSP430

Inlägg av vfr »

He he. Ja, bra att det löste sig iallafall. Har man väl sett någonting på ett sätt, så kvittar det ibland hur många ggr man läser om det. Det ser ändå rätt ut...
Användarvisningsbild
ChristianS
Inlägg: 229
Blev medlem: 7 januari 2009, 11:13:58
Ort: Limhamn

Re: H: putchar problem i CodeComposer för MSP430

Inlägg av ChristianS »

Jo så är det, fast nu kommer nya problem med putchar förmodligen någon inställnings grej.
Nu kvider kompilatorn om att putchar finns i min fil för displayen samt i någon fputc.obj. Suck jag som trodde att printf skulle förenkla det inte krångla till det.
Jag funderar starkt på att gå tillbaka till min ursprungliga röriga men fungerande kod.
Användarvisningsbild
stekern
Inlägg: 453
Blev medlem: 2 november 2008, 08:24:18
Ort: Esbo, Finland

Re: H: putchar problem i CodeComposer för MSP430

Inlägg av stekern »

Har du läst det här?
http://processors.wiki.ti.com/index.php ... ned_device

Du kan även skriva din egen "printf" med hjälp av vsprintf:

Kod: Markera allt

void lcd_putchar(char _x)
{
    _x -=32; // remove offset in ascii table
    char n,data;
    for(n=0;n<5;n++)
    {
        data=characters[_x * 5 + n];
        send_data(data);
    }
}
void lcd_putstr(char *str)
{
    while(*str) {
        lcd_putchar(*str++);
    }
}
#define TMPSTRSIZE	80
static char tmpstr[TMPSTRSIZE];
void lcd_printf(const char *format, ...)
{
	va_list args;
	va_start(args, format);
	vsnprintf(tmpstr, TMPSTRSIZE, format, args);
	lcd_putstr(tmpstr);
}
Användarvisningsbild
Icecap
Inlägg: 26656
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: H: putchar problem i CodeComposer för MSP430

Inlägg av Icecap »

Jag har också testat att ändra putch() i några projekt men har inte lyckats då den egentligen bara är en #define av något annat, exakt vad beror på kompilern.

Lite störande då det ville vara enklare i många tillfällen.

Nu använder jag sprintf() och skriver till en buffer och detta skickar jag sedan till den buffer som behövs för att interrupten ska kunde klarar resten. Då kan jag köra UART, LCD och allt direkt.

Den ena gång jag faktisk har lyckats med att göra egen putch() hade jag en växel som jag ställde, den växel avgjorde om utdata gick till LCD, UART eller annat.
Användarvisningsbild
ChristianS
Inlägg: 229
Blev medlem: 7 januari 2009, 11:13:58
Ort: Limhamn

Re: H: putchar problem i CodeComposer för MSP430

Inlägg av ChristianS »

Frågade en kollega idag som programmerat embedded i många år jag citerar "Om du inte nödvändigtvis behöver printf's olika funktioner så undvik det och skriv egna rutiner i stället". Så det blir väl tillbaka till min gamla kod, får helt enkelt städa upp den på npgot annat sätt.
Skriv svar