PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : rn-control-board und analoge Ports in c



Speedking
29.06.2006, 19:43
Hallo Forum,

hier wieder ein Schnipsel für die Portabfrage (analog).



uint16_t RN_Control_Board::analog(uint8_t i)
{
uint8_t ad_wert = 0;

if ((i<0) || (i>7)) return -1; //falsche Eingabe

ADMUX=i; // Eingang wählen
cbi(ADCSRA, ADFR); // single-Wandlung einstellen
cbi(ADMUX, ADLAR); // left adjust ist nicht aktiv
sbi(ADCSRA, ADEN); // ADC enable

sbi(ADCSRA, ADSC); // A/D-Wanldung starten
while (ADCSRA & 64); // auf 0 warten, dann ist Wandlung beendet
ad_wert = ADCW; // Low- und High-Byte in einem Schritt kopieren.
// In ad_wert (16 Bit) steht jetzt der 10-Bit-A/D-Wert (0...1023)
return ad_wert;
}


In diesem Programm (eine c++ Funktion) wird der integer-wert des Einganges übergeben, der ausgewertet werden soll.
Danach erfolgt die Initioalisierung des A/D-Wandlers und die Wandlung selbst.

Ich denke, man kann das noch "schicker" machen, aber mir reichts.

Bis denn... Klaus 8-[