Hallo,
habe einen IC von Silikon Labs C8051F340. Benutze das Programm Keil
Nun wollte ich den über den ADC Spannugnswerte meines Potis einlesen.
Das Problem ist allerdings Springt der Wert zwischen 0 und dem
Maximalwert hin und her. Habe eine 8-bit Auflösung gewählt. Wenn ich Das
Poti auf max drehe bekomme ich ca. 4 Messwerte hintereinander 255 ca. 4
mal wieder 0 ganz komsich und Werte zwischen drin bekomme ich gar nicht.
Port ist als Analog Input intialisiert
1 | P1MDIN = 0x00;
|
2 | P1SKIP = 0x02;
|
Init AD
1 | AMX0P = 0x13; // Port 1.1 1 0011b
|
2 | AMX0N = 0x13; // Port 1.1 1 0011b
|
3 | AD0CM2 = 0; // 0 0 0 mode 0 ADBUSY
|
4 | AD0CM1 = 0; // 0 0 1 mode 1 timer 0 overflow
|
5 | AD0CM0 = 1;
|
6 | AD0TM = 1; // track-hold-mode
|
7 | AD0EN = 1;
|
8 | ADC0CF = 0xFC; // 1111 1100 Abtasterate und ad0ljst = 1 fuer 8-bit aufloesung
|
9 | EIE1 = 0xF8; // enable interrupt EADCO
|
10 |
|
11 |
|
12 | TMOD = 0x01; // Mode 1: 16-Bit Timer
|
13 | // Timer start Wert
|
14 | // 48Mhz clock ~ periode 0.0208ms
|
15 | // 48 Perioden pro ms
|
16 | // Timer 48 Zyklen fuer eine ms
|
17 | // 16bit 65535 - 48 -> 65487 -> 0xFFC9
|
18 | // gesplittet LSB 0xC9 = 11001001b
|
19 | // MSB 00xFF = 11111111b
|
20 | TH0 = 0xC9; // MSB
|
21 | TL0 = 0xFF; // LSB
|
22 |
|
23 | //pre-scaler
|
24 | // CKCON |= 0x00; // timer pre-scale
|
25 | ET0 = 1; /// enable interrupt
|
26 | EA = 1;
|
ADC Wandlugn start über Timer funktioniert sowie der AD Inerrupt nach
Wandlung
1 | void ISR_AD() interrupt 10
|
2 | {
|
3 | gMittelwert = ADC0H;
|
4 | hunderter = gMittelwert/100;
|
5 | zehner = gMittelwert/10;
|
6 | einser = gMittelwert % 10;
|
7 | AD0INT = 0;
|
8 | TR0 = 1; // start timer
|
9 | }
|
10 |
|
11 | ISR_COUNTER() interrupt 1// 1 für timer 0
|
12 | {
|
13 | AD0BUSY = 1; // start adc
|
14 | TH0 = 0x00; // MSB
|
15 | TL0 = 0x00; // LSB
|
16 | }
|
Umrechnung in Spannung habe ich rausgenommen, da ich ja noch nicht
einmal die richtigen Werte bekomme. Weiß jemand wo mein Denkfehler ist
was habe ich vergessen?
Habe nun alles Versucht was mir eingefallen ist jedoch kein Erfolg. ich
hoffe mir kann jemand weiter helfen.
Vielen Dank im Voraus
Viele Grüße Niklas