Hallo,
letztes mal konntet ihr mir mit der ADC Wandlung gut helfen, so weit hat
bis her alles gut funktioniert.
Allerdings habe ich jetzt ein Phänomen, dass ich nicht erklären kann
bzw. in den Griff bekomme.
Ich hab an den Pins 28 und 29 des PIC24FJ128 jeweils eine Spannung
anliegen - mit dem Multimeter geprüft.
Pin 29 (AN14) - also Channel 14 kann ich mit folgender
selbstgeschriebenen Routine ohne Probleme wandeln (ADC_Read()):
1 | #include <p24FJ128GA006.h>
|
2 | #include "adc.h"
|
3 |
|
4 |
|
5 | void ADC_Init(void)
|
6 | {
|
7 |
|
8 | _ADON = 1; // AD Wanlder einschalten
|
9 | _VCFG = 0b001; // Nutze +VRef als Referenz
|
10 | _ADRC = 0; //Nutze SystemClock
|
11 | // Set analoge Eingänge als Input
|
12 | _TRISB2 = 1;
|
13 | _TRISB3 = 1;
|
14 | _TRISB4 = 1;
|
15 | _TRISB5 = 1;
|
16 | _TRISB8 = 1;
|
17 | _TRISB9 = 1;
|
18 | _TRISB10 = 1;
|
19 | _TRISB11 = 1;
|
20 | _TRISB12 = 1;
|
21 | _TRISB13 = 1;
|
22 | _TRISB14 = 1;
|
23 | _TRISB15 = 1;
|
24 | // Setzte Analoge Eingänge auf Analog
|
25 | _PCFG2 = 0;
|
26 | _PCFG3 = 0;
|
27 | _PCFG4 = 0;
|
28 | _PCFG5 = 0;
|
29 | _PCFG8 = 0;
|
30 | _PCFG9 = 0;
|
31 | _PCFG10 = 0;
|
32 | _PCFG11 = 0;
|
33 | _PCFG12 = 0;
|
34 | _PCFG13 = 0;
|
35 | _PCFG14 = 0;
|
36 | _PCFG15 = 0;
|
37 | _SSRC = 0b000; // Manual Conversation
|
38 | _ASAM = 0; // Auto Sampling off
|
39 | _CSCNA = 0; // Select Channel manualy
|
40 | _CH0NA = 0; // VSS is Negative Input
|
41 | _SAMP = 1; // S/H Mode
|
42 | _ALTS = 0; // Use MUX A
|
43 | _SAMC = 0b00010; // Zeit (Anzahl Clock cycles) zwischen Sample und Conversion
|
44 | _ADCS = 0b00000001; // 2xTCY
|
45 | _CH0SA = 0b00101; // Channel 5 ADC Wandlung
|
46 |
|
47 |
|
48 | }
|
49 |
|
50 |
|
51 | unsigned int ADC_Read(unsigned int channel)
|
52 | {
|
53 | _CH0SA = channel; // Channel zuweisen
|
54 |
|
55 | // Starte Sampling
|
56 | _SAMP = 1; // Starte Sampling
|
57 | _delay_us(100); // Warte Sample Time
|
58 | _SAMP = 0; // Beende Sampling und Starte Convertion
|
59 |
|
60 | while (!_DONE); // Warte hier bis Convertion Done
|
61 |
|
62 | return ADC1BUF0;
|
63 | }
|
Bei Channel 13 allerdings, Pin 28 (AN13) bekomme ich immer 0 als
Ergebnis - ich nutze die selbe Routine und das Multimeter zeigt die
Spannung an, die am Pin wirklich anliegt.
Wie kann das sein?
Kann so ein Eingang beim Einlöten zerstört werden? Ich habe mit einer
Dampfphasenlötanlage die Teile aufgelötet und musste am IC an dieser
stelle nur 2 kleine Lötbrücken entfernen, also eig. nicht kritisch in
meinen Augen.
Hat jemand eine Idee?
Dank und Gruß
Chris