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:
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;
}
Das Ergebnis liegt also in der Variable result, die als 16bit int deklariert wird.
Versenden möchte ich das aus dem Hauptprogramm folgendermassen:
Code:
uint16_t result;
result=ReadChannel(3);
uart_putc((uint8_t)(result));
uart_putc((uint8_t)(result >> 8));
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?
Danke für die Hilfe, mfg
pongi
Lesezeichen