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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.