Forum: Mikrocontroller und Digitale Elektronik Problem mit AD-Eingang


von Markus (Gast)


Lesenswert?

Hallo. Bin was Microcontroller anbelangt noch ein Anfänger, und stehe
vor einem Problem.

Habe am AD-Eingang einen Spannungsteiler, der eine Spannung zwischen 2V
und 4V gegen GND annimmt. Diese möchte ich ausgeben. Habe dazu folgendes
Programm in C++ geschrieben:

DEFINE Sensor1 AD[1]

DO

FUNCTION ErmittleTemp (t as BYTE)

   PRINT "Fühler: " & t
   PAUSE 50
END FUNCTION
ErmittleTemp (Sensor1)

LOOP
END

Leider gibt er mir immer den Wert 255 aus. Was habe ich falsch gemacht?
Habe die Spannungen nachgemessen: Uref gegen GND = 5V; AD1 gegen GND =
2,9V

Benutzte die UNIT 2.0 von Conrad. Könnte es auch sein, das der
Microcontroller schon einen Schaden hat?

Für Hilfe wäre ich dankbar.

von Rahul (Gast)


Lesenswert?

... das ist nie im Leben C++...
Ich kenne mich nicht mit der C-Control aus, aber ich gehe davon aus,
dass es auch da nicht zulässig ist, eine Funktion in einer Schleife zu
deklarieren. Zumindest wäre das nicht besonders sinnvoll.

von Markus (Gast)


Lesenswert?

Bitte mach mir einen Lösungsvorschlag.........oder wo kann ich soetwas
nachschlagen?

von Rahul (Gast)


Lesenswert?

Im C-Control-Handbuch...

von Markus (Gast)


Lesenswert?

Hab einen kleinen Fehler geschrieben. Programmiere nicht in  C++ sondern
in Basic++

sorry

von Rahul (Gast)


Lesenswert?

Selbst dafür wird Conrad irgendwo Dokumentation haben...

von Rahul (Gast)


Lesenswert?

Sonst solltest du mal die üblichen Suchmaschinen befragen.
Mein Ergebnis: über 10 Seiten bei Google, als ich dort "Basic++"
eingegeben habe...

von Sebastian Heyn (Gast)


Lesenswert?

wenn dann so:
aber wo ist deine function ermittletemp? ist das der ganze code?

DEFINE Sensor1 AD[1]
FUNCTION ErmittleTemp (t as BYTE)

DO
   PRINT "Fühler: " & t
   PAUSE 50
END FUNCTION
ErmittleTemp (Sensor1)
LOOP
END

von Rahul (Gast)


Lesenswert?

des glaube ich net!

Eher so:
DEFINE Sensor1 AD[1]
FUNCTION ErmittleTemp (t as BYTE)

   PRINT "Fühler: " & t
   PAUSE 50
END FUNCTION

DO
   ErmittleTemp (Sensor1)
LOOP
END

erst die Funktion deklarieren, und dann benutzen...
Und vorher noch das Handbuch/Befehlsreferenz benutzen...

von Markus (Gast)


Lesenswert?

Habe beide Varianten probiert.
Bekomme als Ausgabe immer den Wert 255. Schön langsam glaube ich, daß
mein Controller eine Macke hat............

von Markus (Gast)


Lesenswert?

Hat denn niemand mehr eine Idee, was noch falsch sein könnte?

von Hannes L. (hannes)


Lesenswert?

> Schön langsam glaube ich, daß
> mein Controller eine Macke hat............

Das lässt sich schnell durch ein kleines Testprogramm in ASM klären.
Die dazu erforderlichen Infos findet man im Datenblatt des verwendeten
Controllers.

...

von Rahul (Gast)


Lesenswert?

@Hannes: es ist C-Control, also keine ASM-kompatible Maschine, ohne den
Bootloader zu töten...
@Markus: Wenn du nicht endlich ins Handbuch guckst (da gibt es bestimmt
eine Anleitung zum Auslesen des ADC), komm ich vorbei und nehme dir die
C-Control weg...

von Hannes L. (hannes)


Lesenswert?

Ach du Schreck...

Sorry...

Ich werde mich nicht weiter dazu äußern, es könnte als Beleidigung
empfunden werden...

8-(

...

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.