Hallo Forum,
hier wieder ein Schnipsel für die Portabfrage (analog).
In diesem Programm (eine c++ Funktion) wird der integer-wert des Einganges übergeben, der ausgewertet werden soll.Code: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; }
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![]()







Zitieren

Lesezeichen