Gast
#2094173
Hallo zusammen,
ich habe eine Programm, womit ich einfach einen analogen Wert einlesen
möchte. Folgendes habe ich programmiert:
#include "p18f1320.h"
#include "delays.h"
#pragma config OSC=HS
#pragma config PWRT=ON
#pragma config BOR=OFF
#pragma config WDT=OFF
#pragma config LVP=OFF
#pragma code
void main(void)
{
int ADWERT;
ADWERT=0;
ADRESH=0;
ADRESL=0;
PORTA=0x00;
PORTB=0x00;
ADCON0bits.ADON=0; //ADC ist deaktiviert
TRISAbits.TRISA0=1; //AN0 ist als Eingang definiert
ADCON2=0x3C; //Frequenz und Zeitverzögerung
ADCON2bits.ADFM=1; //Rechtsbündig
ADCON0bits.VCFG0=0; //Referenzspannung
ADCON0bits.VCFG1=0; //Referenzspannung
ADCON0bits.CHS0=0; //Kanalauswahl
ADCON0bits.CHS1=0; //Kanalauswahl
ADCON0bits.CHS2=0; //Kanalauswahl
ADCON0bits.ADON=1; //ADC ist aktiviert
ADCON1bits.PCFG0=0; //AN0 ist aktiviert
while(PORTAbits.RA4==1);
TRISBbits.TRISB5=0;
ADCON0bits.GO=1;
if(ADCON0bits.NOT_DONE==0)
{
PORTBbits.RB5=1;
ADWERT=ADRESH;
ADWERT=ADWERT<<8;
ADWERT=ADWERT+ADRESL;
}
}
Es funktioniert leider nur genau mit diesem Code. In die if-Schleife
kommt er gar nicht erst rein.
Wenn ich eine Anweisung hinter die if-Abfrage stelle, ist das Register
ADRESH und ADRESL leer. Genau das gleiche passiert, wenn ich das
ADCON2-Register verändere.
Woran könnte das Problem liegen? Ich bitte um Hilfe.
Gruß
Peter