Forum: Mikrocontroller und Digitale Elektronik AD-Wandler


von Thomas Wk. (Gast)


Lesenswert?

Hi,
habe ein Programm geschrieben welches einen AD-Wandlereingang des 
ATmega128 einliest. Das Wandlerergebnis wird laut Datenblatt mit einer 
Genauigkeit von 10bit in den Registern ADCH und ADCL des Prozessors 
abgelegt. Den Inhalt dieser Register kann ich mir auf einem Grafik-LCD 
(EA-Ge240) anzeigen lassen, aber eben nur als Binärzahl wie z.B. 
0000001111111111. Um daraus eine Spannung zu berechnen muß ich dieses 
Ergebnis mit Vref multiplizieren und durch 1024 dividieren und alles mit 
16-bit Rechenoperationen sowie das Ergebnis so umwandeln, daß ich es 
über USART0 als Charakterfolge an das LCD übertragen kann. Bloß wie muß 
jetzt genau vorgehen ? Hat vielleicht jemand schon fertige Routinen in C 
z.B. für 16-Bit Multiplikation /Division?
Benutze den C-Compiler von Codevision. Bin für jeden Hinweis dankbar ...

von crazy horse (Gast)


Lesenswert?

Die Multiplikation/Division sollte doch kein Problem sein, oder? Arbeite 
aber mit long-Variablen, nach der Division kannst du wieder ins int 
(16bit)-Format wechseln.
Zum Display: es gibt die Funktion sprintf(), arbeitet im Prinzip genauso 
wie printf(), erzeugt aber einen String im RAM. Den kannst du 
anschließend mit lcd_puts() ans LCD schicken.

Bsp:
A2D=read_adc(channel);
sprintf (buffer,"%7d",A2D);
lcd_gotoxy(0,0);
lcd_puts (buffer);

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.