Hallo zusammen
Ich hab hier ein Problem mit dem ADC. Der liefert Werte zw. ca. 5 und 255 (Poti-Abhängig). Am ADC-Eingang kann ich damit die Spanung von 2,5V bis 3,0V variieren.
ADC-Referenz ist auf AVCC eingestellt und am Analog-Eingange 1 (ADC(6)) und am Analog-Eingang 2 (ADC(7)) sind Werte um 2,5V, die ich drauf gebe. Sollten also ADC-Werte kommen um die 500.
Ich komme nicht auf den Fehler.
Hier mal das Programm:
Alles anzeigen
Also die Spannung (2.5 ... 3.0V) kommt am ADC-Eingang an. Referenz-Spannung stimmt auch (AVCC = 5V, und AREF = 5V von intern).
Das ADMUX-Register wird lt. Simulator mit $40 konfiguriert. Stimmt also auch.
Controller hat saubere 5V ohne Brummen. ARef und AVCC auch sauber.
Controller auch mal ausgetauscht. Systemtakt stimmt auch, mit Oszi geprüft. Keine Änderung.
Programm mal mit Version 2.0.8.1 Compiliert und reingespielt. Keine Änderung.
Ich habe keine Idee mehr, wo der Fehler liegen könnte. Es scheint alles in Ordnung, aber es kommen immer Werte zw. 5 und 255 raus, egal was ich auch gemacht habe. Kein Wert über der Bytegrenze.
Prescaler (ADC) habe ich auch mal auf 64 von Hand gestellt. Keine Änderung.
Auch wenn ich die Formatierung der ADC-Werte weg lasse und die Werte direkt auf dem Display anzeige. Keine Änderung.
Das Phänomen ist echt rätselhaft.
Hat jemand eine Idee oder findet den Fehler?
Ich hab hier ein Problem mit dem ADC. Der liefert Werte zw. ca. 5 und 255 (Poti-Abhängig). Am ADC-Eingang kann ich damit die Spanung von 2,5V bis 3,0V variieren.
ADC-Referenz ist auf AVCC eingestellt und am Analog-Eingange 1 (ADC(6)) und am Analog-Eingang 2 (ADC(7)) sind Werte um 2,5V, die ich drauf gebe. Sollten also ADC-Werte kommen um die 500.
Ich komme nicht auf den Fehler.
Hier mal das Programm:
BASCOM-Quellcode
- $regfile = "m16def.dat"
- $hwstack = 40
- $swstack = 40
- $framesize = 40
- $Crystal = 8000000
- '$SIM
- Config SubMode = New
- Config Base = 0
- Dim tmpWord as Byte
- Dim tmpString as String * 16
- Dim tmpString2 as String * 16
- ' ----------------------------------------------
- ' Initialisierung
- ' ----------------------------------------------
- Config ADC = Single , Prescaler = 64 , Reference = AVCC
- Config Lcd = 16x3 , Chipset = Dogm163v5 ' Chipset = DOG 16 Zeichen/3 Zeilen/ 5V-Betrieb
- Config Lcdpin = Pin , Db4 = Porta.3 , Db5 = Porta.2 , Db6 = Porta.1 , Db7 = Porta.0 , E = Porta.4 , Rs = Porta.5
- Cursor Off , noblink ' Cursor aus
- InitLcd
- Cls
- ' Display Back-Light
- BackLight Alias portb.0 ' LCD-Backlight
- Config BackLight = Output
- BackLight = 1 ' LCD-Backlight Ein
- ' ----------------------------------------------
- ' Liest Analog-Eingang 1
- ' ----------------------------------------------
- Function getAnalog1() as Word
- getAnalog1 = GetADC(6)
- End Function
- ' ----------------------------------------------
- ' Liest Analog-Eingang 2
- ' ----------------------------------------------
- Function getAnalog2() as Word
- getAnalog2 = GetADC(7)
- End Function
- ' ----------------------------------------------
- ' Hauptschleife
- ' ----------------------------------------------
- Do
- tmpWord = getAnalog1() ' Analog1 lesen
- tmpString = Str(tmpWord)
- tmpString2 = Format(tmpString , " 0")
- Locate 2 , 2 : Lcd "CH1:" ; tmpString2;
- tmpWord = getAnalog2() ' Analog2 lesen
- tmpString = Str(tmpWord)
- tmpString2 = Format(tmpString , " 0")
- Locate 3 , 2 : Lcd "CH1:" ; tmpString2;
- Waitms 500
- Loop
Das ADMUX-Register wird lt. Simulator mit $40 konfiguriert. Stimmt also auch.
Controller hat saubere 5V ohne Brummen. ARef und AVCC auch sauber.
Controller auch mal ausgetauscht. Systemtakt stimmt auch, mit Oszi geprüft. Keine Änderung.
Programm mal mit Version 2.0.8.1 Compiliert und reingespielt. Keine Änderung.
Ich habe keine Idee mehr, wo der Fehler liegen könnte. Es scheint alles in Ordnung, aber es kommen immer Werte zw. 5 und 255 raus, egal was ich auch gemacht habe. Kein Wert über der Bytegrenze.
Prescaler (ADC) habe ich auch mal auf 64 von Hand gestellt. Keine Änderung.
Auch wenn ich die Formatierung der ADC-Werte weg lasse und die Werte direkt auf dem Display anzeige. Keine Änderung.
Das Phänomen ist echt rätselhaft.
Hat jemand eine Idee oder findet den Fehler?