ATtiny841, onboard Temp auslesen

OP #4632622
Lesenswert?
• ▲
▼
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
}
Gast #4632638
Lesenswert?
• ▲
▼
Aus ADCL = 28 und ADCH = 1 (BYTE)

würde ich ADC (WORD)
ADC = ADCL + 256 * ADCH = 28 + 256 * 1 = 284
zusammensetzen. Das ist etwas unter 300 (< 25 °C)

Keine Ahnung, wie deine Prog-Bibliothek den Wert ADC
zusammenwurstelt...
Gast #4632659
Lesenswert?
• ▲
▼
Zur Auswahl des Temperatursensors muss ADMUX richtig gesetzt werden:
MUX[5:0] bits in ADMUX register to “111111”

Zur Auswahl der Referenzspannungsquelle 1,1 V intern gehören
REFS0, REFS1 und REFS2:
REFS0 = 0
REFS1 = 1
REFS2 = 0
ADMUX  Bits 7:6 – REFS[1:0]: Voltage Reference Selection Bits
ADCSRB Bit 4 – REFS2: Reference Selection Bit

Könnte ja sein, dass es hilft, wenn alle Einstellungen passend
gewählt sind ;-)
Gast #4632668
Lesenswert?
• ▲
▼
Hallo Veit,

deinen Code habe ich jetzt nicht geprüft.
Noch ein Hinweis in anderen Datenblättern zur internen 
Referenzspannungsquelle findet man noch einen Hinweis, dass nach dem 
Einschalten der Referenzspannungsquelle eine Wartezeit im 100 µs Bereich 
notwendig ist !

Evtl. ist das hier auch noch der Fall.
OP #4632689
Lesenswert?
• ▲
▼
Hallo,

okay, ADC ist ein 10Bit Wert. Kann mit Byte nicht stimmen. Mein 
Lesefehler. Den kann ich so nicht übertragen. Muß demzufolge die 
Einzelbytes nehmen, übertragen und dann zusammensetzen. Demnach müßten 
meine Settings stimmen, wenn du auf 284 kommst. Hat ja 10% Toleranz das 
Ding.

Aber wie kommst du auf deine Registersettings?
Hast du ins ATtiny841 Datenblatt geschaut?
http://www.atmel.com/Images/Atmel-8495-8-bit-AVR-Microcontrollers-ATtiny441-ATtiny841_Datasheet.pdf

Temperatursensor ADMUXA: MUX Bit 3 und 2  setzen
1,1V Reference ADMUXB: REF0 Bit   setzen

ist meine Interpretation

Was ist dann mit der 1,1V Reference im ADMUXA Register? Was ist das?
Table 16-3
OP #4632723
Lesenswert?
• ▲
▼
Hallo,

wenn die 284 LSB stimmen beim auslesen, dann liegt das Teil ja wirklich 
hoffnungslos daneben. Im Grunde muß ich nur 275 vom LSB abziehen und 
habe die Temp. in Grad Celius. Dann lande ich bei 9°C statt 25°C.
Das wären mehr als +/- 10°C.

Primär gehts mir darum ob ich die richtigen Bits in den richtigen 
Registern setze.
Gast #4632906
Lesenswert?
• ▲
▼
Vielleicht mal den 'ADC Noise Reduction Mode' versuchen, der hat bei 
meinem ATtiny84A (ich weiß, ist ein anderer Chip) eine deutliche 
Verbesserung gebracht (wobei allerdings 'gut' noch immer etwas anderes 
ist).
OP #4633218
Lesenswert?
• ▲
▼
Hallo,

gut, ohne Nachkalibrierung gehts also nicht. Auch gut, ist kein Problem.
Hauptsache meine Settings stimmen erstmal.
Kann mir noch jemand sagen was die 1,1V Reference im ADMUXA Register zu 
bedeuten hat? Normalerweise nimmt man doch die Auswahl im ADMUXB 
Register.
Seite 144, 146.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.