ich bin absoluter uC Neuling,und mir ist jetzt ein elektor Board mit dem R8C in die Hände gefallen. Tolle Sache - gleich ausprobiert. Ich habe das in der Elektor abgedruckte Programm zur AD-Wandlung modifiziert, um alle 12 Channels zu messen. Dazu habe ich zwei Routinen:
unsigned int ad_in(unsigned char ch)
{
adcon0 = 0x80+ch;// Port 0 einschalten
adgsel0 = 0;
adcon1 = 0x28;// 10 Bit AD-Wandler Modus
adst = 1;// start conv.
while (adst==1)// warten bis fertig
{
return ad;// wert ausgeben
}
}
unsigned int ad_in2(unsigned char ch)
{
adcon0 = 0x90+ch; //Port P1 group
pd1_0 = 0; // AN8 input
pd1_1 = 0; // AN9 input
pd1_2 = 0; // AN10 input
pd1_3 = 0; // AN11 input
pu02 = 0;
adgsel0 = 1;
adcon1 = 0x28; //10-bit mode
adst = 1; //Conversion start
while(adst == 1) //Wait A/D conversion
{
return ad; //AD value
}
}
..die dann so aufgerufen werden:
void voltmeter(int port)
{
float u;
unsigned char c;
u = (float) ad_in(port);// AD-Port verwenden
u = u / 1023.0 * 5.0;
c = u;
comport_senden(port+0x41);// Portnummer in Großbuchst. senden
comport_senden(0x3A);// Doppelpunkt senden
comport_senden(c+48);// Vor dem Komma
comport_senden (0x2c);// Komma senden
u = u - c;
u = u * 10;
c = u;
comport_senden (c+48);// 1.Stelle nach dem Komma senden
u = u - c;
u = u * 10;
c = u;
comport_senden (c+48);// 2 Nachkommastelle senden
}
void voltmeter2(int port)
{
float u;
unsigned char c;
u = (float) ad_in(port2);// AD-Port verwenden
u = u / 1023.0 * 5.0;
c = u;
comport_senden(port+0x41);// Portnummer in Großbuchst. senden
comport_senden(0x3A);// Doppelpunkt senden
comport_senden(c+48);// Vor dem Komma
comport_senden (0x2c);// Komma senden
u = u - c;
u = u * 10;
c = u;
comport_senden (c+48);// 1.Stelle nach dem Komma senden
u = u - c;
u = u * 10;
c = u;
comport_senden (c+48);// 2 Nachkommastelle senden
}
Durch die Buchstaben kann ich dann die Werte zu den Ports zuordnen, was besseres ist mir nich eingefallen.
... Im Hauptprogramm dann mit Voltmeter(0)..(7)..usw. und Voltmeter2(4) ...(7)
und hier beginnen meine Fragen.
Voltmeter läuft so, wie es soll.
Aber Voltmeter2 macht nix. Liefert nur zufällige Werte, als ob die Ports "in der Luft" hängen.
Ich hab schon viel rumprobiert, aber ich komm nich drauf. Was mache ich falsch ? Wäre um einenTip sehr dankbar.
