10-Bit ADC (Arduino) einlesen und 10-Bit DAC (TLC5615) ausgben

Gast #3514449
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"?
Gast #3514457
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
#3514485
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren