Ich habe jetzt angefangen mich mit dem ADC vom Mega8 vertraut zu machen und wollte einen simplen Code mit dem man ledeglich den Wert des ADC in Putty anschauen kann. Ich habe dazu einige Tutorials angeschaut und disen Code bei RN-Wissen gefunden: ' Die gemessene Spannung wird in der Variablen W gespeichert. ' Channel ist der Pin, an dem die Spannung gemessen werden soll. $baud = 9600 $crystal = 1000000 $regfile "m32def.dat" Config Adc = Single , Prescaler = Auto Start Adc Dim W As Word , Channel As Byte Channel = 0 Do W = Getadc(channel) Print "ADC-Pin " ; Channel ; ": Wert " ; W Incr Channel If Channel > 7 Then Channel = 0 Waitms 800 Loop End ich habe diesen dann zu abgeändert um ihn für meine zwecke zu nutzen : $baud = 9600 $crystal = 8000000 $regfile "m8def.dat" Config Adc = Single , Prescaler = Auto Start Adc Dim W As Word , Channel As Byte Channel = 0 Do W = Getadc(channel) Print "ADC-Pin " ; Channel ; ": Wert " ; W Incr Channel If Channel > 7 Then Channel = 0 Waitms 800 Loop End Ich habe den Code auf meinen Mega 8 geladen und einen Poti mit 10KO an PC0, GND und Avcc angeschlossen. Wenn ich nun Putty öffne wird mir nichts angezeigt, weiss aber nicht wieso ??? Hoffe ihr könnt mir helfen mfd daniel
Daniel S. schrieb: > Ja und es hat funktioniert. Und was hast du dort anders gemacht > Ich habe nur Probleme mit dem ADC. Nö, hast du nicht. Der Aufruf von GetADC liefert eine Zahl. Was immer diese Zahl auch ist, sie verhindert nicht, dass der UART den Text "ADC-PIN .... " etc ausgibt. Wenn du Probleme mit dem ADC hast, dann würde dort meinetwegen stehen, dass der ADC Pin 0 einen Wert von 8257 geliefert hat, was nicht sein kann. Oder dass der Wert auf Dauer 0 ist, wenn du am Poti drehst. Das wären Indizien dafür, dass du Probleme mit dem ADC hast. Wenn aber gar nichts am Terminal erscheint, dann hast du ein Problem mit der UART. Geh halt mal schrittweise vor. Schreib ein neues Programm, welches erst mal nur Text und eine Variable ausgibt. Die Variable setzt du auf 0. Wenn dieser Ausgabe klappt, dann nimmst du den ADC mit dazu und lässt dir vom ADC den gelesenen Wert in die Variable schreiben.
> Geh halt mal schrittweise vor. > Schreib ein neues Programm, welches erst mal nur Text und eine > Variable ausgibt. Die Variable setzt du auf 0.
1 | $crystal = 8000000 |
2 | $regfile "m8def.dat" |
3 | $baud = 9600 |
4 | |
5 | Dim W As Word |
6 | |
7 | W = 0 |
8 | Print "Starting" |
9 | |
10 | Do |
11 | Print "Wert " ; W |
12 | Waitms 800 |
13 | Loop |
14 | End |
klappt oder klappt nicht? Wenn klappt, dann > Wenn dieser Ausgabe klappt, dann nimmst du den ADC mit dazu > und lässt dir vom ADC den gelesenen Wert in die Variable schreiben.
1 | $crystal = 8000000 |
2 | $regfile "m8def.dat" |
3 | $baud = 9600 |
4 | |
5 | Config Adc = Single , Prescaler = Auto |
6 | Dim W As Word |
7 | |
8 | W = 0 |
9 | Print "Starting" |
10 | |
11 | Do |
12 | W = getadc( 0 ) |
13 | Print "Wert " ; W |
14 | Waitms 800 |
15 | Loop |
16 | End |
klappt oder klappt nicht?
@ Kerl Heinz Wenn ich mir das überlege könnte es doch gut sein dass es am UART liegt da der erste Code nicht geht. Putty müsste eigentlich auch richtig eingestellt sein ... Wie kann ich das überprüfen / den UART erstzen ??? Ich benutze das Eavulations-Board von Pollin. Ich habe aber auch schon versucht es nicht auszugeben und direkt als wert für einen PWM zu nutzen. Das hat auch nicht geklappt.
Daniel S. schrieb: > @ Kerl Heinz > Wenn ich mir das überlege könnte es doch gut sein dass es am UART liegt > da der erste Code nicht geht. Putty müsste eigentlich auch richtig > eingestellt sein ... Wie kann ich das überprüfen / den UART erstzen ??? Du sagtest doch, du hättest den UART schon mal mit putty in Betrieb gehabt. Und genau deshalb hab ich gefragt, was du damals anders gemacht hast :-)
Ohne Stacks und Frame im Code werden die Vorgaben aus den IDE-Einstellungen verwendet, welche zu niedrig sein können. Also erst mal passende Werte dafür in den Code rein, denn sowas kann die komplette Funktion verhindern.
So in etwa:
1 | $hwstack = 32 |
2 | $swstack = 32 |
3 | $framesize = 24 |
Oder einfach mal in den Beispielen der Hilfe dazu nachsehen. Andere auch gern genommene Fehler: - Prozessortakt anders als $crystal-Angabe - kein Quarz, dann sollten aber wenigstens unsinnige Zeichen ausgegeben werden - Einstellungen in der Systemsteuerung zum Com-Port falsch / anders als eingestellte Baudrate Dann gäb's noch: - Pegelwandler für RS232 vergessen oder kaputt - falsch herum angeschlossen, µC-TXD-Ausgang auf MAX232-TXD und umgekehrt - gibt sicher noch mehr...
Ok danke erstmal :-) Habe die Einstellungen im Geräte-Manager richtig gestellt und jetzt bekomme ich wirre nicht deutsche Buchstaben . Also fehlt ein Quar, oder ? Aber was für eine und ich dachte auf dem Evaluarionsboard von Pollin wäre einer ? (entschuldigt die Rechtschreibung, bin gerade nur mit dem Hand online)
Daniel S. schrieb: > jetzt bekomme ich wirre nicht deutsche Buchstaben . Tatsächlichen Takt, der per Fuses vorgegeben wird, mit dem $crystal-Wert vergleichen, Baudrate kleiner machen, je kleiner die ist, desto geringer macht sich der Fehler des R/C-Oszillators bemerkbar. > ich dachte auf dem > Evaluarionsboard von Pollin wäre einer ? (entschuldigt die Wenn Du das glaubst, solltest Du die Anleitung durchsehen, um sicher zu sein. Wenn ein Quarz angeschlossen ist, dann müssen die Fuses auch auf externem Quarz gestellt werden. Nicht auf externen Oszillator stellen, sonst ist der Käfer erst mal tot.
Danke erstmal. :-) Ich werde einmal nach den Frequenzen usw. schauen. Ich gebe Bescheid wenn ich den Fehler gefunden habe.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.