PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AD Wandler richtig benützen



ShadowPhoenix
29.04.2004, 00:43
Hallo!

Ich wollte unter Bascom mit dem Befehl PRINT einen AD-Port in einem Terminal ausgeben.
Mein Code sah so aus:

Config PortC = Input
Do
Print PortC.5
Loop

Aber das fuktionierte irgendwie nicht.
Dann versuchte ich, den Wert von PortC.5 in einer Variable zu speichern, und diese auszugeben:

Config PortC = Input
Dim printvar as integer
printvar = PortC.5
Do
Print printvar
Loop

Aber da kamen auch nur Fehler.
Wie kann ich einen AD-Wert eines Pins in einem Terminal ausgeben?

Mfg,
ShadowPhoenix

PS: Statt PORTC funktionierte es auch NICHT mit PINC.

29.04.2004, 04:08
Aber da kamen auch nur Fehler.


Was heisst "da kamen nur Fehler" ?

Beim compilieren kommen bei mir in Bascom bei beiden Versionen deines Codes keine Fehler.

Oder kommen bei der Ausgabe Fehler, wenn du das Programm im Controller ausführst?

Was das Programm angeht, würde ich da eine kleine Pause in die Schleife einfügen. So schnell wie der Controller die Schleife durchlaufen kann ist eine serielle Schnittstelle nicht, d.h. der Controller muss immer warten bis die Übertragung fertig ist. Da ist es glaube ich besser die Wartezeit selber zu definieren.
Ausserdem liest du´in Version 2 nur einmal den Eingang ein und gibst dann in der Schleife immer denselben Wert aus. Besonders viel Sinn ergibt das nicht, einen Fehler sollte es allerdings auch nicht verursachen.

Dino Dieter
29.04.2004, 12:18
Hallo

Schau doch mal in der Hilfe von BASCOM unter getadc.

Du mußt den AD Wandler erst einstellen und starten.

Danach kannst du halt mit getadc den Wert deines gewünschten AD port einlesen.

MFG
Dieter

ShadowPhoenix
29.04.2004, 15:01
@Gast

Bei Code2 kommen bei mir sehr wohl Fehler: (hmm)
-Error: Can't find HW-register [DDRC ]
-Error: Invalid Datatype [0]

@Dino

Wenn mein Code nun so aussieht, könnte das dann funktionieren?

Config Adc = Single , Prescaler = Auto
Start Adc
Dim W As Word , Channel As Byte

Channel = 0
Do
W = Getadc(channel)
Print "Channel " ; Channel ; " value " ; W
Incr Channel
If Channel > 7 Then Channel = 0
Loop
End


MfG,
ShadowPhoenix

Frank
29.04.2004, 15:13
Abfrage und Anzeige des Wertes über RS232 z.B. beim RNBFRA Board



Const Ref = 5 / 1023

Dim I As Byte
Dim W As Word
Dim Volt As Single

Config Adc = Single , Prescaler = Auto

$baud = 9600
$crystal = 8000000 'Quarzfrequenz
Portd.6 = 0 'Schrittmotoren erst mal ausschalten


Start Adc
Do
W = Getadc(4)
Volt = W * Ref
Volt = Volt * 5.2941
Print "Spannung: " ; Volt

Waitms 200
Loop

End

Michael
29.04.2004, 15:19
Hallo ShadowPhoenix,

Bei Code2 kommen bei mir sehr wohl Fehler: (hmm)
-Error: Can't find HW-register [DDRC ]
-Error: Invalid Datatype [0]

Du hast den Chip falsch eingestellt -->Options->Compiler->Chip

Wenn mein Code nun so aussieht, könnte das dann funktionieren?

klar, den hast du ja direkt aus der Hilfe kopiert.
Hast du ihn auch verstanden?
Gruss, Michael

Dino Dieter
29.04.2004, 15:23
Hallo Gast

Der Code sollte so schon gehen. Du kennst aber den Simulator in Bascom. Der kann auch AD Wandler simulieren. Drücke doch mal F2 in Bascom.

MFG
Dieter