PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mega128 Grundlegende Einstellungen ADC



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... :-(

Ratber
01.01.2006, 02:23
Überprüf mal folgendes:


AVcc angeschlossen ?

Aref mit Kondensator (ca. 100nF) nach Masse geschaltet ? (Nicht unbedingt nötig aber Sinvoll.

Läuft der M128 auch als 128 oder steht das Fusebit noch auf Mega 103 ?

micha b
01.01.2006, 20:44
Ja,
wie bereits beschrieben ist avcc direkt mit vcc verbunden und zusätzlich mit einem C abgeblockt. Der war bereits "ab Werk" eingebaut, also kann ich nichts über dessen Wert sagen (SMD).
Habe zusätzlich jetzt noch einen 100n hingehängt - keine Änderung...

Spannungsschwankungen am Referenzwert dürften aber auch nicht solch gravierenden Anzeigeschwankungen ergeben.

Habe seit Kauf (war bereits vorprogrammiert) nix an den Fusebits geändert, und nach der Professionalität der Platine und auch der telefonischen Unterstützung des Herstellers gehe ich davon aus, das das Bit richtig gesetzt ist.
Anyway ...
Wie lese ich dieses Fusebit aus?

Wie gesagt, das Ding "zählt" einfach durch... wie ein Zähler, der keinen Stop bekommt und zu bestimmten Zeiten eben ausgelesen wird... Werte z.B. 212 , 762, 810, 1023, 189 usw. werden in wilder Reihenfolge angezeigt

Ratber
01.01.2006, 21:04
Wie lese ich dieses Fusebit aus?

Über deine Programiersoft also in diesem Falle Bascom wie ich annehme ?

Oben ist die Iconleiste und ziemlich weit rechts ist das grüne Symbol für den eingebauten Programmer.
Klick drauf und du kannst wählen zwischen "Program" und "Manual Program"
Wähle "Manual Program".

Jetzt hast du den internen Programmer vor dir.

Über dem Fenster hats due drei Karteireiter.
Wähle "Lock an Fusebits".
Jetzt liest er die Bits aus und du kannst schauen was Eingestellt ist.
Du kannst dir das alles mal ansehen (Klapmenüs).
Solange du nicht rechts die "Write" buttons betätigst passiert nix.

Kleiner Tip:
Hüte dich davor ein Bit zu ändern wenn du nicht sicher bist was es bewirkt.
Man kann sich damit auch vorläufig komplett ausschließen (Es gibt noch nen Trick aber der benötigt andere Hardware)

Wenn du eine andere Programiersoft eingebunden hast (zb. Ponyprog) dann mußte da mal nachsehen wo die Fusebuts sind.




Wie gesagt, das Ding "zählt" einfach durch... wie ein Zähler, der keinen Stop bekommt und zu bestimmten Zeiten eben ausgelesen wird... Werte z.B. 212 , 762, 810, 1023, 189 usw. werden in wilder Reihenfolge angezeigt

Hmmm,kann ich mir jetzt nur schwer einen Reim drauf machen.

Sieht für mich aus als ob der Eingang schwimmt.
Mal nachgemessen was an dem Eingang los ist wärend er läuft ?

Marco78
01.01.2006, 21:57
Wie sieht die Schaltung zum messen der Spannung denn aus?

Wenn es ein Poti ist, dann Widerstandsbahn an GND und (A)VCC und den Schleifer an ADCx

micha b
01.01.2006, 23:08
@Ratber und Marco 78:

Vielen Dank für eure Hilfe, Problem ist gelöst!

Leider hat der Hersteller wohl etwas Probleme mit rechts und Links, bzw. weiß nicht wo oben und unten ist....

Die in der Hardwaredokumentation aufgelistete Pinbelegung auf der Platine war leider falsch dokumentiert! Dies habe ich allerdings erst gemerkt, als ich im ausgeschalteten Zustand mit Lupe und Multimeter bewaffnet alle Pins des M128 bis zur Steckerleiste einzeln durchgemessen habe.
So waren Pinf.0 mit Pinf.7 vertauscht, Pinf.1 mit Pinf.6 usw., allerdings nur bei diesem Port...

Bitte entschuldigt, daß ich euch mit diesem Thread so die Zeit gestohlen habe. Mich hat das jetzt auch ca. 5 Tage und sehr (!) viele Nerven gekostet. Wenn ich den Kerl jemals persönlich treffe.... =;

Trotzdem Herzlichen Dank für die kompetente Hilfeleistung hier im Forum. Hoffe, ich kann mich irgendwann revanchieren !!!

So long und HAPPY NEW YEAR !!!

Ratber
01.01.2006, 23:26
Die in der Hardwaredokumentation aufgelistete Pinbelegung auf der Platine war leider falsch dokumentiert! ..................

Ja,das ist Ärgerlich wenn man für die Nachlässigkeit anderer Zeit verballert.
Ich kann das nechempfinden denn das hatte ich auch schon mal hir und dort.


Wenn ich den Kerl jemals persönlich treffe.......


Unwarscheinlich.Das sind meist Leute die man nie sieht weil se nur inkognito unterwegs sind :mrgreen: :wink:



Trotzdem Herzlichen Dank für die kompetente Hilfeleistung hier im Forum. Hoffe, ich kann mich irgendwann revanchieren !!!

So long und HAPPY NEW YEAR !!!

Yo,kein Problem