micha b
31.12.2005, 22:40
Hallo Jungs,
auch ich bin Newbie und habe es (auch teils wegen etwas rüdem Ton hier gegenüber Neulingen die zum 10.000 Mal die gleiche Frage stellen) noch nicht gewagt ein ebenso "dumme" Frage zu stellen.
Jetzt komm ich allerdings doch nicht mehr weiter und bitte um eure Hilfe.
Ich versuche seit Tagen einen M128 dazu zu bringen einen Spannungswert anzuzeigen. Die Threads zum Thema "Spannung", "ADC" etc kenn ich glaub ich inzwischen fast alle auswendig.
Leider hats noch nicht geholfen... :-(
Ich arbeitze mit der Vollversion von Bascom 1.11.8.0
Folgender Code funktioniert im Simulator, allerdings nicht nach Übertragung:
$regfile = "m128def.dat"
$crystal = 8000000
Config Portf = &B00000000 'vorsichtshalber alle mal auf Input
' Port F ist ja physikalisch der ADC-Port oder?
Dim Batt_result As Word
Dim Batt_voltage As Single
Dim Batt_reference As Single
Dim Lcd_string As String * 22
Batt_reference = 5.0
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Do
Batt_result = Getadc(0) 'es ist ein Poti zum Test angeschlossen an F.0, Wert Avcc bis 0 Volt, ca. 2.0 Volt eingestellt
Batt_voltage = Batt_result * Batt_reference '* Referenzspannung
Batt_voltage = Batt_voltage / 1024 ' teilen durch 1024
Lcd_string = Fusing(batt_voltage , "#.##") ' LCD_string sollte dann direkt aufs Display ausgegeben werden.
Print "Batt_result: " ; Batt_result zum Test zeigen
Waitms 50
Print "Batt_voltage " ; Batt_voltage zum Test zeigen
Waitms 50
Print "Lcd_string " ; Lcd_string ; " Volt" 'ein Traum im Simulator, ein Alptraum in echt..
Loop
End
Wenn ich " Reference = Avcc" angebe, rennt mir der Anzeigewert durch, d.h. er zeigt alle zufälligen / möglichen Werte an zwischen 0 und 5 Volt.
Wenn ich das "Reference"-Argument weglasse zeigt er ständig 4.99... Volt an, eben 5.0 durch 1024, und Batt_result steht auf 1023.
Mir kommt das so vor,als würde der ADC "frei" laufen, z.B. wie ein Messgerät ohne Masse, eben irgendwas anzeigen.
Es macht übrigens auch keinen Unterschied,ob ich den Poti an dem Pin angeschlossen habe der nicht.
Avcc ist direkt mit vcc verbunden, zusätzlich mit einem C gegen Masse gefiltert.
Das Board ist fertig geprüft von display3000.com gekauft und funktioniert sonst tadellos. AGND ist mit Masse GND verbunden
Muss man zusätzlich zum "Config" und "Start" noch irgendwas anderes initialisieren bevor das Ding läuft?
Da ich schon lange rumprobiere hab ich auch folgendes ohne Auswirkung auf die Anzeige ausprobiert:
- Ddrf = &B00000000 oder
- Portf.0 = 0 oder
- Config Pinf.0 = Input oder
- Ddrf.0 = 0
Auch wenn ich den Pinf.0 direkt auf Masse oder Vcc lege ändert sich nix.
Alle anderen Progs (Digitale Ebene, Inputs und Outputs) funktionieren einwandfrei.
Spannungsversorgung erfolt übrigens zwecks Ausschluss von Fehlerquellen über Akku.
Bin ratlos... :-(
auch ich bin Newbie und habe es (auch teils wegen etwas rüdem Ton hier gegenüber Neulingen die zum 10.000 Mal die gleiche Frage stellen) noch nicht gewagt ein ebenso "dumme" Frage zu stellen.
Jetzt komm ich allerdings doch nicht mehr weiter und bitte um eure Hilfe.
Ich versuche seit Tagen einen M128 dazu zu bringen einen Spannungswert anzuzeigen. Die Threads zum Thema "Spannung", "ADC" etc kenn ich glaub ich inzwischen fast alle auswendig.
Leider hats noch nicht geholfen... :-(
Ich arbeitze mit der Vollversion von Bascom 1.11.8.0
Folgender Code funktioniert im Simulator, allerdings nicht nach Übertragung:
$regfile = "m128def.dat"
$crystal = 8000000
Config Portf = &B00000000 'vorsichtshalber alle mal auf Input
' Port F ist ja physikalisch der ADC-Port oder?
Dim Batt_result As Word
Dim Batt_voltage As Single
Dim Batt_reference As Single
Dim Lcd_string As String * 22
Batt_reference = 5.0
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Do
Batt_result = Getadc(0) 'es ist ein Poti zum Test angeschlossen an F.0, Wert Avcc bis 0 Volt, ca. 2.0 Volt eingestellt
Batt_voltage = Batt_result * Batt_reference '* Referenzspannung
Batt_voltage = Batt_voltage / 1024 ' teilen durch 1024
Lcd_string = Fusing(batt_voltage , "#.##") ' LCD_string sollte dann direkt aufs Display ausgegeben werden.
Print "Batt_result: " ; Batt_result zum Test zeigen
Waitms 50
Print "Batt_voltage " ; Batt_voltage zum Test zeigen
Waitms 50
Print "Lcd_string " ; Lcd_string ; " Volt" 'ein Traum im Simulator, ein Alptraum in echt..
Loop
End
Wenn ich " Reference = Avcc" angebe, rennt mir der Anzeigewert durch, d.h. er zeigt alle zufälligen / möglichen Werte an zwischen 0 und 5 Volt.
Wenn ich das "Reference"-Argument weglasse zeigt er ständig 4.99... Volt an, eben 5.0 durch 1024, und Batt_result steht auf 1023.
Mir kommt das so vor,als würde der ADC "frei" laufen, z.B. wie ein Messgerät ohne Masse, eben irgendwas anzeigen.
Es macht übrigens auch keinen Unterschied,ob ich den Poti an dem Pin angeschlossen habe der nicht.
Avcc ist direkt mit vcc verbunden, zusätzlich mit einem C gegen Masse gefiltert.
Das Board ist fertig geprüft von display3000.com gekauft und funktioniert sonst tadellos. AGND ist mit Masse GND verbunden
Muss man zusätzlich zum "Config" und "Start" noch irgendwas anderes initialisieren bevor das Ding läuft?
Da ich schon lange rumprobiere hab ich auch folgendes ohne Auswirkung auf die Anzeige ausprobiert:
- Ddrf = &B00000000 oder
- Portf.0 = 0 oder
- Config Pinf.0 = Input oder
- Ddrf.0 = 0
Auch wenn ich den Pinf.0 direkt auf Masse oder Vcc lege ändert sich nix.
Alle anderen Progs (Digitale Ebene, Inputs und Outputs) funktionieren einwandfrei.
Spannungsversorgung erfolt übrigens zwecks Ausschluss von Fehlerquellen über Akku.
Bin ratlos... :-(