adc 10bit
Mittwoch, 23. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  CCS Compiler  |  AD-Wandler (CCS)  |  adc 10bit « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: adc 10bit  (Gelesen 3940 mal)
 
scissor
Gast
« am: November 23, 2004, 14:12:38 »

hallo leute!

habe folgende frage:

wenn ich den ad-wandler so konfiguriere dass er mir ein 10bit ergebnis liefert, wie geht es dann dass ich diese 10 bit in 2 x 8bit Werte auftrenne?? und zum schluss wieder zusammensetze!??


mfg
Gespeichert
Bernd
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 3815



Profil anzeigen
« Antworten #1 am: November 23, 2004, 15:24:03 »

Hallo scissor,

Aufteilung von einem 16-Bit Wert in zwei 8-Bit Werte:
Code:
unsigned int8 highbyte, lowbyte;
unsigned int16 word;

lowbyte = word & 0xFF;
highbyte = (word >> 8) & 0xFF;


Umgekehrte Richtung und Einsatz einer Union: http://www.fernando-heitor.de/picforum/viewtopic.php?t=690


Viele Grüße

Bernd

@Fernando
Evtl. eine Frage für die FAQ-Liste
Gespeichert

Fernando Heitor
Administrator
Hero Member
*****
Offline Offline

Beiträge: 577


Der B


Profil anzeigen WWW
« Antworten #2 am: November 23, 2004, 19:25:30 »

Hallo Bernd,

ist erledigt und wurde in die FAQ-Liste hinzugefügt.

Fernando Heitor
Gespeichert

:lol: Gel
krusty
Jr. Member
**
Offline Offline

Beiträge: 55



Profil anzeigen
« Antworten #3 am: Dezember 10, 2005, 11:37:54 »

Hallo,

für was ist das & 0XFF

in der Zeile
Code:
highbyte = (word >> 8) & 0xFF;


nötig?

MfG
Gespeichert
Bernd
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 3815



Profil anzeigen
« Antworten #4 am: Dezember 10, 2005, 17:27:35 »

Das "& 0xFF" ist nicht unbedingt nötig, erinnert aber an die Tatsache, daß ein kleinerer Integer-Typ mit einem größeren belegt wird. Abhängig vom verwendeten Compiler kann es den generierten Code eventuell vergrößern (sollte es aber nicht).


Viele Grüße

Bernd
Gespeichert

Schoasch
Sr. Member
****
Offline Offline

Beiträge: 343



Profil anzeigen
« Antworten #5 am: Dezember 11, 2005, 21:43:32 »

Zum auftrennen: Wäre es nicht schneller direkt den AD-Wandler-Wert aus den beiden Register (ADRESH;ADRESL) auszulesen ?!

 
Code:

unsigned int8 highbyte, lowbyte;

lowbyte = ADRESL;
highbyte = ADRESH;



PS.: Die beiden Register müssen halt zuvor zugewiesen werden.

Code:

// gilt für den PIC18F2220
#byte    ADRESL       =         0xfc3
#byte    ADRESH      =         0xfc4
Gespeichert
Bernd
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 3815



Profil anzeigen
« Antworten #6 am: Dezember 12, 2005, 19:25:27 »

Zitat
zum auftrennen: Wäre es nicht schneller direkt den AD-Wandler-Wert aus den beiden Register (ADRESH;ADRESL) auszulesen ?!

Wenn man die CCS-Sonderfunktion nicht nutzt, kann man sich das Auftrennen natürlich sparen. Letztendlich macht diese Sonderfunktion nichts anderes, als ADRESH und ADRESL getrennt auszulesen und dann zu einen 16-Bit int zusammenzusetzen.

Die optimale Möglichkeit bleibt aber die Union, da damit je nach Belieben (und ohne zusätzlichen Code) auf die einzelnen 8-Bit Werte und den 16-Bit Gesamtwert zugegriffen werden kann.


Viele Grüße

Bernd
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.035 Sekunden mit 18 Zugriffen.
 
Top! Top!