Hallo,
ich weis die ist ungenau, ist auch nur eine Übung.
Welche 1,1V Reference aktiviert man?
Im ADMUXB Register oder die im ADMUXA Register?
Datenblatt Seite 144, 146.
Mit dem Code
1 | read_onboard_Temp(); // liest µC Temperatur aus
|
2 | message.wert[1] = ADCL; //
|
3 | message.wert[2] = ADCH; //
|
4 | message.wert[3] = ADC; //
|
bekomme ich momentan ausgelesen für
ADCL = 28
ADCH = 1
ADC = 28
Wenn die ADC = 28 der Rest vom Byte Überlauf ist, dann stimmt das
irgendwie nicht. Das müssten ca. 45 sein, wenn 25°C = 300 LSB sind.
1 | void set_onboard_Temp_Measurement()
|
2 | {
|
3 | ADCSRA = (1<<ADEN) |(1<<ADPS2) | (1<<ADPS1); // ADC enable und Prescaler 64 (125kHz)
|
4 | ADMUXA = (1<<MUX3) | (1<<MUX2); // enable Temp.Sensor
|
5 | ADMUXB = (1<<REFS0); // 1,1V Reference
|
6 | }
|
7 |
|
8 |
|
9 | void read_onboard_Temp()
|
10 | {
|
11 | ADCSRA |= (1<<ADSC); // Start A/D Wandlung
|
12 | while(ADCSRA & (1<<ADSC)); // warten auf fertige Wandlung
|
13 | }
|