PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SerWrite zum wiederholten Male



Vilem
30.05.2011, 16:43
Hallo,
ich verwende SerWrite, um einen gemessenen Zahlenwert auf dem Hyperterminal auszugeben. Dafür habe ich mit geringer Modifikation den Code von https://www.roboternetz.de/community/showthread.php?48265-ASURO-SerWrite-Problem übernommen. Das Programm funktioniert und gibt auch die richtigen Zahlenwerte aus, aber es kommt zu den beiden Code-Zeilen mit SerWrite die Warnung: "warning: pointer targets in passing argument 1 of 'SerWrite' differ in signednes"
Was habe ich da falsch gemacht ?


#include "asuro.h"
int main(void)
{
Init();

void PrintInt(int wert)
{char text [7];
itoa (wert, text, 10);
SerPrint(text);
}

void SerPrint (char *data)
{
unsigned char i = 0;
while (data [i] != 0x00);
UartPutc (data [i++]);
}
void UartPutc (unsigned char zeichen)
{
UCSRB = 0x08;
UCSRA |= 0x40;
while (!(UCSRA & 0x20)); UDR = zeichen;
while (!(UCSRA & 0x40)); UCSRB = 0x00;
}
int temperaturLinks = 50;
int temperaturRechts = 100;
SerWrite("Links:",6);
PrintInt(temperaturLinks);
SerWrite("Rechts:",9);
PrintInt(temperaturRechts);
while(1);
return 0;
}


Die gleiche Warnung kommt bei mir auch, wenn ich den Quellcode von radbruch: https://www.roboternetz.de/community/showthread.php?34201-Einen-Wert-%FCber-SerWrite-senden-klappt-nicht zu kompilieren versuche (Ich verwende die AsuroLib und WinAVR).
Anfänger dankt dem Profi fürs Drübergucken
Gruß Vilem

radbruch
30.05.2011, 17:06
Das Vorzeichen des Parameters wird angemotzt. In asuro.c und asuro.h habe ich deshalb den Parameter geändert:

/* function for serial communication */
void SerWrite(char *data, unsigned char length) // edit by mic 1.4.2011
{


Verursacher ist die aktuelle Version von WinAVR.

Vilem
31.05.2011, 18:15
Danke, Vilem