Byte umwandeln
Dienstag, 22. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  CCS Compiler  |  AD-Wandler (CCS)  |  Byte umwandeln « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Byte umwandeln  (Gelesen 3203 mal)
 
Manfred
Newbie
*
Offline Offline

Beiträge: 14


Profil anzeigen
« am: März 26, 2008, 19:41:08 »


hallo!! Augen rollen

hab eine kleine frage in bezug auf ad- wandler:
wie kann das byte vom ad- wandler in einen wert(int) umgewandelt werden???

bitte um möglichst schnelle antwort

lg
manfred
Gespeichert
rambazamba
Newbie
*
Offline Offline

Beiträge: 13



Profil anzeigen
« Antworten #1 am: März 26, 2008, 22:30:22 »

Ich nehme an, du verwendest den CCS-Compiler..

Byte ist eigentlich (soviel ich weiss) nicht Standard,
aber 8bit lang, nicht ?

Der AD-Wandler schafft aber 10bit.. irgendwas ist da schief..

Bei meinem Compiler ist der Wert, welcher ich aus
den ADRESH/ADRESL-Registern lese genau der Wert,
der am Wandler ansteht.

Da du mit 10bit maximal 1024 Stufen unterscheiden kannst
(11 1111 1111 -> 1023 + 0 = 1024 Schritte ),
musst du nun deine maximale Eingangsspannung (Vref/VDD)
durch 1024 teilen und mit dem Ergebnis deines AD-Registers
multiplizieren :

Vgemessen = 3.2V
Vref / VDD = 5V
AD-Registerwert : 656


5V / 1024 = 0.0048828125

0.0048828125 * 656 = 3.203125 V

So errechnest du die exakte Spannung am Eingang
des AD-Wandlers..

Übrigens sind byte/int/char ganzzahlige Datentypen..
Gespeichert
Manfred
Newbie
*
Offline Offline

Beiträge: 14


Profil anzeigen
« Antworten #2 am: März 27, 2008, 13:28:10 »


hi!
danke für die schnelle antwort!

noch ne frage:
in adresh und adresl wir der binärcode gespeichert (bsp. 1010101011).
durch welche befehle des CCS kann man von diesem wert den dezimalwert errechnen bzw umwandeln?
Grund ist, dass ich den Wert vom AD in dezimalform auf einem lcd ausgeben will

lg
manfred
Gespeichert
rambazamba
Newbie
*
Offline Offline

Beiträge: 13



Profil anzeigen
« Antworten #3 am: März 27, 2008, 14:43:21 »

Versuch doch mal, den Wert direkt auszugeben,
z.B. mit Printf.

Binärcode ist nur eine andere Form einer Zahl.
Du beschreibst deine Register (PortA) ja auch
z.B mit 0b00011011, du könntest aber auch
0x1B (Hex) schreiben, oder 27 (Dez).

Vorsicht :

ADRESH stellt das obere 8bit-Segment dar,
ADRESL das untere.. Jenachdem, wie dein
Analog-Register konfiguriert ist, wird das
Resultat links/rechtsbündig ausgegeben.

Hast du das Datenblatt schon studiert ?
Gespeichert
Manfred
Newbie
*
Offline Offline

Beiträge: 14


Profil anzeigen
« Antworten #4 am: April 01, 2008, 11:47:18 »


  ja aber nur teilweise

  wenn ich direkt den wert ausgebe wird nur ein wert von 0 bis 50 angezeigt
 durch welche befehle kann ich auf adresh und adresl zugreifen??

 

Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.034 Sekunden mit 18 Zugriffen.
 
Top! Top!