@ Pascal

Muss ich ganz ehrlich zugeben, das mit den Kanälen hab ich nicht gewusst... Muss ich mich noch einlesen.

@ Gast,

Danke für den Link, werd ich mir demnächst mal vornehmen


Ich hab in der zwischenzeit schon experimentiert und das Programm für die " 2-Pin-Variante" geschrieben. ist evtl. noch ein bisschen umständlich,

muss noch optimiert werden:


Code:
#include <avr/io.h>


typedef unsigned char  BYTE;
typedef unsigned int   WORD;

WORD	entladedauer;		// Variable für Entladungsdauer
WORD	entladen_1;			// Variable zum zählen der Entladungsdaue
WORD	poti_1;				// Variable zum zählen des Widerstandswertes





int main(void)
{

    outp (0x01,DDRA);	// PORT A:  PIN 0 als Ausgang, Rest Eingang
    outp (0xFF,DDRB);	// PORT B:  Ausgabe des ermittelten Wertes

entladedauer = 500;		// hier wird die entladedauer festgelegt...
entladen_1 = 0;			
poti_1 = 0;				


    
    for(;;)
    {
	
	if( entladen_1 >= entladedauer ) {		// Wenn lange genug entladen
		cbi (PORTA, 0); 						// entladung stoppen ( Pin0 auf LOW )
		
		if( !bit_is_clear (PINA, PIND1)) {		// solange der zählpin HIGH ist, zählen
		poti_1++;
		}
		if( bit_is_clear (PINA, PIND1)) {		//wenn Zählpin LOW wird,
		outp (poti_1, PORTB);						//Wert des Widerstands ausgeben
		poti_1 = 0;									//Wert zurücksetzen für neue Messung
		entladen_1 = 0;								//Wert zurücksetzten für neue Entladung
		}
    }else{									// ansonsten wenn Kondensator nicht genügend entladen,
		sbi (PORTA, 0); 					// entladen ( PIN0 auf HIGH )
		entladen_1++;
	}
	
	}
}

Bei einem Poti mit 10K und einem Kondensator mit 100nF
Erhalte ich am Ausgangsport Werte zwischen 0 und 40.

nicht gerade die beste Auflösung, aber ich werd mal mit den Kondensator und Potiwerten Experimentieren.


Ansonsten Funktioniert es einwandfrei.


Was meint ihr dazu?
ist es umständlicher oder einfacher als über A/D wandler?

(hier bin ich nicht pingebunden....)