Moin Moin,
kann mir eventuell jemand sagen wo mein Fehler liegt ich bekomme keinen
Wert in den ADC (AN1) eingelesen. Verwendet wird ein "PIC16F873A" mit
externem 4MHz Quarz und als Vref. soll VDD/VSS dienen.
1 | void SetupPORT_PINS(void){
|
2 | /*Definitionen, PORT Register (0 = AUSGANG / 1 = EINGANG) */
|
3 | //PIN = 76543210 PORT Einstellungen
|
4 | TRISA = 0b11111111; //PORT A
|
5 | TRISB = 0b00000001; //PORT B
|
6 | TRISC = 0b00000000; //PORT C
|
7 |
|
8 | /*PIN Definitionen*/
|
9 | #define InterruptPin RB0
|
10 | #define LED1 RB5
|
11 | // und so weiter
|
12 | }
|
13 |
|
14 | void Setup_ADC(void){
|
15 |
|
16 |
|
17 | ADCON0bits.ADCS0 = 1;
|
18 | ADCON0bits.ADCS1 = 0;
|
19 |
|
20 | ADCON0bits.CHS0 = 1;
|
21 | ADCON0bits.CHS1 = 0;
|
22 | ADCON0bits.CHS2 = 0;
|
23 |
|
24 | ADCON1bits.PCFG = 0b00000000;
|
25 |
|
26 | ADCON0bits.ADON = 1;
|
27 | }
|
28 |
|
29 | int ADC_Read(){
|
30 |
|
31 | int l_Ergebniss;
|
32 |
|
33 | while (ADCON0bits.GO_nDONE);
|
34 |
|
35 | l_Ergebniss = (ADRESH<<8)+ADRESL;
|
36 |
|
37 | //l_Ergebniss = 500;
|
38 |
|
39 | return l_Ergebniss;
|
40 | }
|
Die Funktion "SetupPORT_PINS" und "Setup_ADC" werden einmal beim start
des Controllers aufgerufen. Die Funktion "ADC_Read" Wir in der main
"While(1)" aufgerufen. Werte Werden auch richtig zurückgegeben aus der
ADC_read aber im Register "ADRESH" und "ADRESL" ist nichts drin!
Danke für Eure Hilfe =)