Hallo!
Ich möchte folgendes realisieren, bin mir aber nichts sicher, dass das so richtig ist. Bei einer AD-Wandlung im Atmega8 hab ich ein 10bit Ergebnis, den ich per UART versenden möchte.
Die Funktion der AD-Wandlung sieht so aus:
Das Ergebnis liegt also in der Variable result, die als 16bit int deklariert wird.Code:uint16_t ReadChannel(uint8_t mux){ ADMUX=mux; ADMUX|=(1<<REFS1) | (1<<REFS0); ADCSRA |= (1<<ADSC); while ( ADCSRA & (1<<ADSC) ) {} //uart_putc(ADCL); //uart_putc(ADCH); return ADCW; }
Versenden möchte ich das aus dem Hauptprogramm folgendermassen:
Ist das so richtig? Also wird hiermit zuerst das Low-Byte, dann das High-Byte versendet, oder ist das schwachsinn? Wie würdet ihr das lösen?Code:uint16_t result; result=ReadChannel(3); uart_putc((uint8_t)(result)); uart_putc((uint8_t)(result >> 8));
Danke für die Hilfe, mfg
pongi







Zitieren

Lesezeichen