Hallo Leute!

Meine Frage bezieht sich auf den A/D-Converter. Ich würde gerne eine Analoge Spannung digitalisieren. Und da hab ich zu Übungszwecken ganz einfach nen Spannungsteiler aufgebaut. Der geht von 0,5V - 5V. Na und dann hab ich den Code (in C) geschrieben. Hab auf die Parameter geachtet und na ja, das ganze läuft einmal. Aber blöderweise funktioniert VREF- nicht. Also ich kann schon den Analogwert digitalisieren, aber halt nicht von 0-1023. Da müsst ich halt VREF- auf ca. 0,5V legen. Das tu ich auch. Nehm nen Spannungsteiler mit etwas weniger als 0,5V (man ist ja vorsichtig) und häng ihn an den VREG- PIN. Nur Blöderweise ist die Spannung wenn ich am Pin messe 0V. Wenn ich den Draht wieder wegnehme, hab ich an meinem Spannungsteiler wieder meine ca. 0,5V. Jetzt frag ich mich halt, wieso am PIN 0V anliegen, obwohl ich eh 0,5V anlege. Ich versteh das nämlich nicht ganz.

Also ich schicke noch den Programmcode mit

Code:
/** I N C L U D E S **********************************************************/ 
 #include <p18cxxx.h> 
 #include <adc.h>
 #include <pwm.h> 
 #include <timers.h> 
 #include <stdlib.h> 
 #include "delays.h"                        // für die Warteschleife 
   

 /** Configuration ********************************************************/ 
 #pragma config FOSC = INTOSC_XT   //Ich verwende interne Clock (HS für 20MHz, allerdings sind 22pF Kondis nötig)
 #pragma config PWRT = ON 
 #pragma config BOR = OFF 
 #pragma config WDT = OFF  //Watchdog Timer 
 #pragma config LVP = OFF  //Low Voltage ICSP 
 //#pragma config PBADEN = OFF  

 /** D E C L A R A T I O N S **************************************************/ 
 #pragma code

 

 void main(void) 
 {
            int result;
	   unsigned int pwmwert=0;	   
 
	   LATB = 0;     // Port B wird 0 gesetzt 
	   TRISB = 0;     //Port B wird als Ausgang gesetzt
	   PORTC = 0;    //PORT C wird 0 gesetzt
	   TRISC = 0;    //PORT C wird als Ausgang gesetzt
	   TRISA = 1;     //PORT A wird als Eingang gesetzt

		OpenTimer2(TIMER_INT_OFF & T2_PS_1_1 & T2_POST_1_1);
		OpenPWM1(255);
		

   while(1) 
   { 
		
		OpenADC(ADC_FOSC_RC & ADC_RIGHT_JUST, ADC_CH0 & ADC_INT_OFF & ADC_VREFPLUS_VDD & ADC_VREFMINUS_EXT, 15);
	
		Delay10TCYx(5);
		ConvertADC();
		while( BusyADC() );
		result = ReadADC();
		CloseADC();
		
		pwmwert=result;		

		SetDCPWM1(pwmwert);
		SetOutputPWM1(SINGLE_OUT,PWM_MODE_1);
				
   }//end while
	
	ClosePWM1();
	CloseTimer2(); 

 }//end main
So ich hoffe da weiß wer Rat. Ich weiß nämlich nicht mal obs am Code liegt oder nicht.