Forum: Mikrocontroller und Digitale Elektronik ADC mit Bascom Basic


von Michael (Gast)


Lesenswert?

Moin!

Erstmal muß ich ein Lob loswerden: Diese Seiten haben mich auf das
basteln mit dem ATMega8 gebracht und es macht mir viel Spaß!

Nun habe ich irgendwie ein nicht lösbares Problem:

Nachdem ich schon Assembler ausprobiert habe um eine am ADC Eingang
gemessene Spannung auf dem LCD ausgzugeben und dies auch klappt bin ich
ein wenig "faul geworden" und nutze BASCOM Basic um die gleiche
Funktion darzustellen.

Mit folgendem Programm, daß bis auf die LCD Ausgabe dem des Beispieles
in BASCOM Basic entspricht hab ich es versucht:


$regfile = "4433def.dat"
Config Adc = Single , Prescaler = Auto , Reference = Avcc

Start Adc

Dim Messspannung As Word
Dim Kanal As Byte
Kanal = 0

Cls
Lcd "Der Widerstand ="
Wait 1

Do
  Messspannung = Getadc(Kanal)
  Lowerline                            'select the lower line
  Lcd Messspannung
  Lcd "  Kanal "
  Lcd Kanal
  Incr Kanal
  If Kanal = 8 Then Kanal = 0
  Wait 1
Loop
End




FAZIT: Er zeigt immer 1023 als Wert an. Was mache ich falsch?

Danke für Eure Hilfe, Michael

von Ratber (Gast)


Lesenswert?

Das Programm ist ok aber ich vermute mal das du irgendwo in der
Schaltung was vergessen hast.

Sind die Pinne 20 und 22 richtig angeschlossen ?

Wie gibst du dein Messsignal am Port an ?

von Bernd Schmidt (Gast)


Lesenswert?

Im Programm steht das Du den 4433 benutzt, schreibst aber was von M8.

Ich würde die Zeile löschen und unter Option/Compiler/Chip den M8
eintragen.

Bernd

von Ratber (Gast)


Lesenswert?

Yo,jetzt wo de es sagst.
Kann ja nicht funzen.

von Michael (Gast)


Lesenswert?

JUHU!

Es funzt wenn ich die erste Zeile herausnehme. Bleibt die Frage warum
dies so ist? Beim Assembler Programmieren nutze ich diese
"4433def.dat" doch auch. Und ich habe diese Datei aus dem Tutorial
für den Atmega8...

könnt ihr mir das kurz erklären?

dane für diese schnelle antworten! supi!

von Ratber (Gast)


Lesenswert?

Ganz einfach.

Beim M8 liegen die AD's woanders als beim 4433 deswegen gibt das mit
der falschen Def probleme.

Immer die passende zum Controller gehöhrende Def nehmen.

Schließlich würdest du nen Porsche nicht nach VOLVO-Tabelle einstellen
oder ? ;)

von Bernd Schmidt (Gast)


Lesenswert?

Die Zeile im BasicProgramm überschreibt die Einstellung die über das
Menu gemacht wird.
Das gilt auch für andere Einstellungen wie Pin-Configuration, Baudrate,
Quarzfrequenz usw.

Bernd

von anfänger (Gast)


Lesenswert?

wie kann ich eigentlich kommazahlen auf dem display ausgeben? beim adc
hat man ja werte von 0 bis 1023. aber wie kann ich daraus jetzt ne
voltzahl (also 0 bis 5 Volt) machen, die auch kommastellen hat???
double gibts ja bei bascom nicht als variablen-typ.

von Ratber (Gast)


Lesenswert?

Nimm "Single"

Ich nehme zum Anzeigen immer String da kann ich die Single gleich
richtig Formatieren und die Ausgab siehht schön aus

von anfänger (Gast)


Lesenswert?

also ne single-variable kann zahlen mit kommastellen aufnehmen? und dann
soll ich den inhalt der single-variable in nen string schreiben und
dann aufs lcd? welchen konvertierungsbefehl brauch ich denn dafür? geht
das mit

String = Fusing(Single , "#.##") ???
Lcd String

von Ratber (Gast)


Lesenswert?

Mit der Formatierung ist nur nen Vorschlag.

Da man ja meist nur einige Nachkommastellen braucht kann man sich den
Rattenschwanz auch gleich schön zurecht machen.
Schließlich ist auf nem Display nie genug platz und Springende Anzeigen
sind auch nicht schön.

Single ist der Variablentyp

Also zb.

Dim X as Single
Dim y as String*5    (oder je nachdem wieviele Zeichen du brauchst)

Und dann zb.

Y=Fusing(x , "#.##")

LCD Y

In der (immernoch schlecht organisierten) Hilfe zu Bascom findest du
auch alle weiteren Infos wie man den Text Formatiert und welche
Optionen es dazu noch gibt.

Ich kann eh nur empfehlen die ganze Hilfe mal einfach abzugrasen.
Alle behält man zwar nicht aber irgendwie weiß man bei nem Problem
später das es da ne Möglichkeit gab.
Dann fällt die Suche einfacher aus ;)

von anfänger (Gast)


Lesenswert?

ok, vielen dank!

von Ratber (Gast)


Lesenswert?

Kein Problem

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
Noch kein Account? Hier anmelden.