verfaßt von Mr. Teflon, 11.08.2009, 18:34:03
Hallo,
würdet Ihr mir helfen?
Folgende Abarbeitung soll zur Funktion gemacht werden. So wie es ist funktioniert es.
#include \"sfr_r813.h\" // SpecialFunctionRegister des R8C/13
#include \"math.h\"
#define uint unsigned int // Abkürzungen
#define uchar unsigned char
uchar chan; // Mess-Kanal chan = 4 ... 6
long SensorMin; // Bsp. A/D Digitwert 231 bei Temperatursensor bei 0°C
long SensorMax; // Bsp. A/D Digitwert 386 bei Temperatursensor bei 100°C
float wert2;
unsigned char D;
// ********** Temperaturberechnung aus A/D und Ausgabe an COM ********** \\\\
SensorMin = 231; // Bsp. A/D Digitwert 231 bei Temperatursensor bei 0°C
SensorMax = 386; // Bsp. A/D Digitwert 386 bei Temperatursensor bei 100°C
wert2 = (float) ad_in(4); // Bsp. wert2 = 609
if(wert2 < 231) // 231 Digit = 0°C
wert2 = 231; // Werte unter 0°C werden auf 0°C gesetzt
wert2 = (wert2-SensorMin)/(SensorMax-SensorMin)*100; // Temperaturberechnung, wert2 = 243,8
wert2 = wert2 / 100; // wert2 = 2,438
D = wert2; // Ganzzahl D = 2
com_txd (D + 48); // Hunderter Stelle als Ganzzahl an COM
wert2 = wert2 - D; // 2,438 - 2 = 0,438
wert2 = wert2 * 10; // 0,438 * 10 = 4,38
D = wert2; // Ganzzahl D = 4
com_txd (D + 48); // Zehner Stelle als Ganzzahl an COM
wert2 = wert2 - D; // 4,38 - 4 = 0,38
wert2 = wert2 * 10; // 0,38 * 10 = 3,8
D = wert2; // Ganzzahl D = 3
com_txd (D + 48); // Einer Stelle als Ganzzahl an COM
com_txd (0x2e); // Dezimalpunktausgabe an COM
wert2 = wert2 - D; // 3,8 - 3 = 0,8
wert2 = wert2 * 10; // 0,8 * 10 = 8
D = wert2; // Ganzzahl D = 8
com_txd (D + 48); // erste Kommastelle als Ganzzahl an COM
// com_txd (176); // Zeichen ° an COM
com_txd (\'C\');
com_print(\"\\n\\r\"); // Zeilenende
Wenn ich versuche dieses zur Funktion zu machen, meckert immer der Compiler an der Deklaration der Funktion. Egal ob void oder unsigned int etc. davor steht. Die A/D Kanalnummer wird beim Aufruf übergeben. chan wäre in dem Fall Kanal 4.
void com_Temperatur (uchar chan)
{
...
wert2 = (float) ad_in(chan);
...
}
com_Temperatur(4);
Was ist falsch?
Bei anderen Funktionsaufrufen steht es auch void davor und funktioniert.
Ich verstehe es nicht.
Das hier funktioniert zum Bsp.
//************************* Ausgabe an COM
void com_integer2 (long data)
{
long byt;
if ( data >= 1000000 ) {data = 999999; }
byt = data / 100000;
data = data - byt * 100000;
com_txd(byt + 48);
byt = data / 10000;
data = data - byt * 10000;
com_txd(byt + 48);
byt = data / 1000;
data = data - byt * 1000;
com_txd(byt + 48);
byt = data / 100;
data = data - byt * 100;
com_txd(byt + 48);
byt = data / 10;
data = data - byt * 10;
com_txd(byt + 48);
com_txd(data + 48);
}
com_integer2(Temperatur3);
--
___________
Tschau
Mr. Teflon
gesamter Thread: