Forum: Mikrocontroller und Digitale Elektronik AD-Wandlung mittels PIC


von Luki (Gast)


Lesenswert?

Hallo!

Ich hab ein Problem: und zwar wandle ich an drei verschiedenen Pins drei 
unterschiedliche AD-Werte und will diese anschließend weitersenden und 
dann verarbeiten.
Nun bin ich so weit, dass das Senden der restlichen Daten im String 
funktioniert, aber bei jedem AD-Wert spuckt der PIC (16F88) am PC "1E" 
aus!
Hab mich mal erkundigt, dass steht irgndwie für RS und soll soviel 
bedeuten, wie "record separator" und das steht für ein 
Informationstrennzeichen...

Weiß irgendwer wo der Fehler liegt bzw. hat jemand eine Idee warum 
gerade immer wieder 1E ausgegeben wird, hat das eine tiefere Bedeutung?

danke schon im Vorhinein,

lg luki

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Aus Deinen Infos würde ich mal texten:

Wenn Du den AD-Wandler nur mit 8 Bits ausliest, dann ist der angelegte 
Spannungswert nach der Wandlung eben "1E", es gibt noch 255 andere 
mögliche Werte, die Du zum Teil in ASCII-Tabellen wiederfindest.

Benutzt Du die volle 10-Bit-Auflösung des AD-Wandlers, dann hast Du 
vergessen, uns mitzuteilen, wie Du die Wandlung von 10-Bit-Wert in ASCII 
vornimmst. Da können wir nicht helfen.

...BTW: Doppelpostings sind in allen Foren nicht gern gesehen!

von Karl H. (kbuchegg)


Lesenswert?

Luki schrieb:

> Hab mich mal erkundigt, dass steht irgndwie für RS und soll soviel
> bedeuten, wie "record separator" und das steht für ein
> Informationstrennzeichen...
>
> Weiß irgendwer wo der Fehler liegt bzw. hat jemand eine Idee warum
> gerade immer wieder 1E ausgegeben wird, hat das eine tiefere Bedeutung?

Mal eine Gegenfrage. Angenommen du empfängst die Daten

1232653298

Welche Zahlenwerte verstecken sich in dieser Zahlenflut?

Und jetzt das Ganze nochmal

123 RS 26 RS 53 RS 2 RS 98

Welche Zahlenwerte verstecken sich jetzt in dieser Zahlenflut?

von Chris D. (m8nix)


Lesenswert?

Hi,

klingt nach RS232 Übertragung???

Falls ja, könnte der PIC die Spannungen schon richtig auslesen, nur beim 
Übertragen auf den PC kommt es zu Fehlern, da die Baudraten beider 
Systeme nicht "harmonieren".

Je nach Systemtakt (Quarz) können die erzeugten Baudraten einen 
erheblichen Fehler aufweisen.

http://www.micromagicsystems.com/#/pic-baud/4523812801

Gruss Chris

von Luki (Gast)


Lesenswert?

ich glaub zwar nicht dass es daran liegt - aber der Baudraten-Rechner is 
echt ein cooles ding =) danke für den tipp

lg

von Frank B. (frankman)


Lesenswert?

Luki schrieb:
> ich glaub zwar nicht dass es daran liegt - aber der Baudraten-Rechner is
> echt ein cooles ding =) danke für den tipp
>
> lg


Sag mal, hast du AD wert von Hex in ASCII umgewandelt?

von holger (Gast)


Lesenswert?

>Sag mal, hast du AD wert von Hex in ASCII umgewandelt?

Das möchte er uns nicht verraten.

Beitrag "ASCII "1E" ?"

von Luki (Gast)


Lesenswert?

OK - ich denke ich bin allen hier inzwischen eine genaue Erläuterung 
meines Problems schuldig (tut mir leid für die konfusen Beschreibungen, 
aber ich war gestern schon ein wenig hinüber und hab versucht eine 
Lösung aus dem Himmel zu zaubern).

Also: ich will die Daten eines Beschleunigungssensor (X,Y,Z Achse) 
mittels PIC16F88 auswerten und anschließend in einen ASCII-Code 
umwandeln und diesen dann weitersenden.

Die drei Achsen des Beschleunigungssensor sind am PIC am PORTA an den 
Pins 0, 1 und 4 angeschlossen. Der Sensor liefert eine Spannung, die ich 
mit dem PIC AD wandeln will. Und dabei war mein Problem, dass ich 
ständig "1E" erhalten habe - egal welche Achse, egal welche Position.

Da der Beschleunigungssensor aber richtig arbeitet und die Platine sonst 
auch einwandfrei funktioniert bin ich mir nun sehr sicher gewesen den 
Fehler in der Software zu finden.

Ich kann das gesamte erst morgen oder am Dienstag austesten - jedoch 
habe ich heute vormittag einen groben Anfängerfehler gefunden:
der Wert der AD-Wandlung wird in ein Register geschrieben und ich habe 
dieses Register mit einem Befehl ins WREG verschieben wollen. jedoch hab 
ich den falschen Befehl verwendet - ich hab ständig verlangt, das der 
PIC einen "Literal"-Wert ins WRGE schiebt - jedoch wollte ich ein sich 
ständig änderndes Register verschieben. Ich denke das könnte wirklich 
der Grund für das Problem gewesen sein.

Danke an euch alle für die Hilfe (trotz meiner chaotischen 
Beschreibungen).

von Sven S. (stepp64) Benutzerseite


Lesenswert?

Wenn dein Literal dann noch 1E lautet, wäre diese Überlegung sehr nahe 
liegend.

Du solltest aber auch noch folgendes beachten: Der PIC schreibt das 
Messergebnis in zwei Register, da es ein 10-Bit ADC ist. Irgendwo kannst 
du noch einstellen, ob du lieber die höheren 8 Bits im High-Register 
haben willst und die beiden restlichen im Low-Register oder ob du die 8 
niederen Bits im Lowregister haben willst und die beiden höchstwertigen 
Bits im Highregister. Außerdem musst du nach dem Umschalten auf einen 
anderen Port eine gewisse Zeit warten, bevor du die Messung startest. 
Lies dir mal die Hinweise zum ADC bei sprut.de durch. Da wird dann 
einiges klarer.

Sven

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.