Forum: Mikrocontroller und Digitale Elektronik 10-Bit ADC (Arduino) einlesen und 10-Bit DAC (TLC5615) ausgben


von Tom23 (Gast)


Lesenswert?

Ich möchte ein Signal bei meinem Arduino MEGA über ADC (10-Bit) einlesen
und über meinen 10-Bit DAC TLC5615 per SPI wieder ausgeben..


Das Problem ist dass ich über SPI so senden muss:

16-Bit:   xxxx + 10bit Wert + 00
12-Bit:   10bit Wert + 00

Also 4 Dummy bits (MSB), dann den 10bit - Wert und anschließend noch 00.


So funktioniert das ganze mit 16-Bit:
----------------------------------------

SPI.transfer(B00001111);        (0000 --> dummy bits)
SPI.transfer(B11111100);

----------------------------------------
Ausgang geht bei einer REF von 2.5V auf 5V (V=2 DAC)!


Nur wie sende ich jetzt den ADC Wert 0-1023 ?

1. Wie wandle ich ihn auf 10-bit Binär um?
2. wie teile ich ihn auf bzw. füge vor die MSBs "0000" hinzu
   und nach den LSBs noch "00"?

von Marcel (Gast)


Lesenswert?

Tom23 schrieb:
> 1. Wie wandle ich ihn auf 10-bit Binär um?
Dein Controller kennt nur Binär und ist in der Lage diesen in 0 ... 1023 
umzuwandeln, damit du es einfacher lesen kannst. Soll heißen du musst 
nichts umwandeln.

> 2. wie teile ich ihn auf bzw. füge vor die MSBs "0000" hinzu
>    und nach den LSBs noch "00"?

Einfach in einer 16-Bit Variablen zurechtschieben mit | und <<. Dann wie 
bisher die oberen, dann die unteren 8-Bit senden. Siehe auch 
Bitmanipulation

von Max H. (hartl192)


Lesenswert?

Er muss nur 2 mal shiften. Die LSBit werden 0, da immer eine 0 
nachgeschoden wird und die MSBit sind irrelevant.
Dann msst du erst das MSByte und dann das LSByte über SPI versenden.

OT: Steht MSB eigentlich für bit oder Byte?

von Niklas W. (wurstknifte)


Lesenswert?

Max H. schrieb:
> OT: Steht MSB eigentlich für bit oder Byte?

Kommt auf den Kontext an. Bei Betrachtung eines Bytes oder weniger geht 
man davon aus dass es sich um Bits handelt, bei Wörtern von mindestens 
zwei Bytes nimmt man es eher als Bytes.

Meiner Meinung nach sollte man das einfach MSb und MSB schreiben, dann 
gäbe es keine Verwechslungsgefahr, aber Menschen sind ja faul was Groß- 
und Kleinschreibung angeht.

von Max H. (hartl192)


Lesenswert?

Danke. Ich habs zur Sicherheit  eindeutig gemacht.

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.