Forum: Mikrocontroller und Digitale Elektronik AD Wandlergeschwindigkeit


von Nico (Gast)


Lesenswert?

Hallo

Ich habe mir vor längerer Zeit ein Bedienpult für meine Lichtanlage
gebaut welches von einer C-Controll gesteuert wird und Daten an den PC
sendet wo das eigentliche Programm läuft. Es besteht aus 8
Schiebepotis, 8Taster und 8 Leds. Die übertragung der Werte geschieht
mit 9600 Baud (ist mir zu langsam) und sieht folgendermassen aus:
PC sendet "1" > C-Controll AD-wert 1 einlesen und senden > PC sendet
wert zurück > AD-wert 2 einlesen und senden > PC sendet wert zurück
>.......> AD-wert 8 einlesen und senden > PC sendet ein Byte für die
Leds > C-Controll sendet stand der Taster >  warten bis alles von vorn
beginnt.
Das dauert alles viel zu lange jetzt will ich die ganze Sache von einem
AVR erledigen lassen. Nun meine Fragen:

1. sind die AD-Wandler im AVR schneller als in der C-Controll (leider
hab ich kein Datenblatt für die C-Controll)

2. wie mache ich aus den 10 Bit 8?(zweimal schieben und dann werte bit
9 und bit 10 in 7 und 8 packen geht das so oder gehts auch einfacher)

3. sollte ich vieleicht die Art meiner Übertragung ändern? Die
Geschwindigkeit herhöhe ich auf 38400 Baud oder noch schneller weiß ich
noch nicht genau.

Vielen Dank im voraus

Nico

von Rahul (Gast)


Lesenswert?

Hallo Nico,
zu deiner Kommunikation kann ich nur sagen: "Boaaa! Wie
umständlich!"
Du weisst duch, wie viele Bytes du zum PC schickst (9 Bytes?).
Prinzipell müsste es doch gehen, wenn du dein Bedienteil mit einem Byte
"triggerst" (LED-Status), woraufhin die Bedieneinheit ihre Daten an
den PC schickt.
Oder andere Lösung: Sobald sich etwas an der Bedieneinheit ändert,
werden die Daten an den PC geschickt und der "berechnet" das Byte für
die LEDs, was er dann wiederum schickt.

Wie schnell die AD-Wandlung der C-Control ist, kann ich nicht sagen.
Mit dem AD-Wandler des AVR habe ich auch noch nicht gearbeitet.

von Jörg Wunsch (Gast)


Lesenswert?

Die Wandlergeschwindigkeit der AVR ADC steht im Datenblatt.  Man muß
nur beachten, daß diese abhängig vom gewählten ADC-Takt ist, den man
für optimale Ergebnisse im Bereich 50 ... 200 kHz wählen muß (wird
durch einen Vorteiler aus dem Systemtakt gewonnen, man kann also mit
dem Vorteiler den Takt in Grenzen einstellen).

Es wurde auch schon berichtet, daß die ADCs bei nur 6 bit Genauigkeit
auch bis zu 2 MHz getaktet werden können (also gewissermaßen 10fach
übertaktet).

Prinzipiell macht man 8 bit aus 10 bit durch Rechtsverschiebung um 2
bit.  Kann man genausogut als Division durch 4 bezeichnen.

Wenn Du einen der neueren ATmegas nimmst, kannst Du aber ein nettes
Feature dieser Teile ausnutzen: die können das ADC-Ergebnis alternativ
statt in den unteren 10 bit auch in den oberen 10 bit des
16-bit-Ergebnisregisters abbilden.  Damit brauchst Du Dir anschließend
nur das obere der beiden 8-bit-Teilregister zu nehmen, dann hast Du
Deinen skalierten Wert.

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.