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