Forum: Mikrocontroller und Digitale Elektronik attiny1614 und interner Temperatur-Sensor


von Raoul D. (raoul_d219)


Lesenswert?

Hallo zusammen,

ich möchte mit einem attiny1614 den internen Temperatur-Sensor lesen.

Im DB des attiny1614 steht zwar, wie man es macht, jedoch hat man wohl 
im DB bei MUXPOS den Eintrag für den internen Temp-Sensor dort 
vergessen. Im DB vom attiny412 steht hierfür ein Wert von 0x1e. Das 
steht auch im produzierten Code von Atmel-Start.

Nun lese ich allerdings von dieser MUXPOS  ADC-Resultatwerte im zwischen 
0...2. Das scheint nicht plausibel. Andere Kanäle funktionieren 
hingegen.

Hat das jemand mit dem attiny1614 schon einmal erfolgreich gemacht?

Danke für Hinweise!

von Einer K. (Gast)


Lesenswert?

Die Datei iotn1614.h sagt ganz klar:
> ADC_MUXPOS_TEMPSENSE_gc = (0x1E<<0),  /* Temp sensor/DAC1 */

von foobar (Gast)


Lesenswert?

In meinem Datenblatt für den Attiny1614 steht auf Seite 373 für MUXPOS:

> 0x1e   TEMPSENSE   ADC0: Temperature sensor / ADC1: DAC1

Falschen ADC benutzt?

von Raoul D. (raoul_d219)


Lesenswert?

Arduino Fanboy D. schrieb:
> Die Datei iotn1614.h sagt ganz klar:
>> ADC_MUXPOS_TEMPSENSE_gc = (0x1E<<0),  /* Temp sensor/DAC1 */

Ja, das hatte ich auch gefunden.

von Raoul D. (raoul_d219)


Lesenswert?

foobar schrieb:
> In meinem Datenblatt für den Attiny1614 steht auf Seite 373 für MUXPOS:
>
>> 0x1e   TEMPSENSE   ADC0: Temperature sensor / ADC1: DAC1
>
> Falschen ADC benutzt?

Auf der Seite steht bei mir was ganz anderes.

Welche Version des DB hast Du?

Bei mir ist es: 40001995B (2019)

von Einer K. (Gast)


Lesenswert?

Raoul D. schrieb:
> Ja, das hatte ich auch gefunden.

Vielleicht die Automotive Version erwischt?

foobar schrieb:
> In meinem Datenblatt für den Attiny1614
Dann hast du ein anderes, als Microchip.
http://ww1.microchip.com/downloads/en/DeviceDoc/ATtiny1614-DataSheet-DS40001995B.pdf

von Raoul D. (raoul_d219)


Lesenswert?

Arduino Fanboy D. schrieb:
> Raoul D. schrieb:
>> Ja, das hatte ich auch gefunden.
>
> Vielleicht die Automotive Version erwischt?

Wo/Wie sollte sich da was unterscheiden?

von foobar (Gast)


Lesenswert?

> Welche Version des DB hast Du?
> Bei mir ist es: 40001995B (2019)

Scheint älter: "Datasheet Preliminary - DS40001893B"

Im Kapitel 41 "Datasheet Revision History": Rev.B - 03/2017.

von Einer K. (Gast)


Lesenswert?

Raoul D. schrieb:
> Wo/Wie sollte sich da was unterscheiden?

Anderer ADC.
Ohne Temperatursensor.

von foobar (Gast)


Lesenswert?

Hast du denn auch ADC0 benutzt?

Auch wenn das neuere Datenblatt den MUXPOS-Wert 0x1e nicht erwähnt, 
sieht das mehr nach einem Copy/Paste-Fehler aus, da an anderen Stellen 
die Temperaturmessung spezifiziert ist, inkl Kalibrierwerten, Grafiken, 
etc.

von Dieter R. (drei)


Lesenswert?

Wie hast du den ADC initialisiert, wie fragst du ab? Kannst du bitte 
deinen Code posten? Man muss bei der Initialisierung des ADC für 
Temperaturmessungen einiges beachten, und das Datenblatt ist da je nach 
Version falsch bis widersprüchlich, auch die Errata sind nur bedingt 
hilfreich.

: Bearbeitet durch User
von Raoul D. (raoul_d219)


Lesenswert?

Nun ist es klar: das Datenblatt ist eindeutig falsch. Ich habe eine Case 
bei MicroChip aufgemacht, mal sehen wie die Antwort ausfällt.

Meine Erkenntnis: ADC1 kann nicht vom internen Temperatursensor lesen, 
sondern nur ADC0. Dies kann man so dem DB des 1617 entnehmen, das 
scheint damit korrekt in dieser Hinsicht. ADC1 liest mit der muxpos 0x1e 
den DCA1 Ausgang.

Die restlichen besonderen Einstellungen sind nun meiner Erfahrung nach 
recht unkritisch. Nur die VRef sollte natürlich bei 1,1V sein.

von Dieter R. (drei)


Lesenswert?

1. Die restlichen Einstellungen sind überhaupt nicht unkritisch, sie 
sind im Gegenteil sogar sehr kritisch. Wenn du das nicht beachtest, 
bekommst du zwar Werte, aber falsche. Poste bitte deinen Code.

2. Wo hast du denn gelesen, dass ADC 1 vom Temperatursensor lesen kann? 
Link? Die von die angegebene Nummer nützt nichts - wo findet man das?

von Raoul D. (raoul_d219)


Lesenswert?

Dieter R. schrieb:
> 1. Die restlichen Einstellungen sind überhaupt nicht unkritisch, sie
> sind im Gegenteil sogar sehr kritisch. Wenn du das nicht beachtest,
> bekommst du zwar Werte, aber falsche. Poste bitte deinen Code.

Das einzige, was hier einen erkennbaren Einfluss gegenüber den im DB 
vorgeschlagenen Einstellungen hat, ist wie immer die Taktrate des ADC.

(Den Code willst Du nicht sehen, ist C++). Der Code entspricht genau dem 
aus dem Atmel-Start. Dort steht übrigens auch fälschlicherweise bei ADC1 
und muxpos 0x1e Temperatursensor als Quelle.

>
> 2. Wo hast du denn gelesen, dass ADC 1 vom Temperatursensor lesen kann?
> Link? Die von die angegebene Nummer nützt nichts - wo findet man das?

Nochmal: die DB beschreibt ja beide ADCs.

1): Es fehlt im DB komplett der muxpos Code 0x1e für den TempSensor
2) Es fehlt der Hinweis, dass ADC0 bei 0x1e vom TempSensor und ADC1 vom 
DAC1 liest (wie beim 1617).

von Dieter R. (drei)


Lesenswert?

Gut, du weißt es besser. Musst du halt ggf. mit falschen Werten leben - 
oder auch zufällig richtigen, dein Code bleibt ja geheim und sowieso für 
andere unverständlich.

Atmel Start produziert (an dieser Stelle) übrigens den Code, den du mit 
deinen Eingaben vorgibst, und nicht den, der für den Temperatursensor 
erforderlich wäre. Atmel Start macht überhaupt viele schöne Dinge und 
einige völlig unbrauchbare dazu.

von Raoul D. (raoul_d219)


Lesenswert?

Dieter R. schrieb:

> Atmel Start produziert (an dieser Stelle) übrigens den Code, den du mit
> deinen Eingaben vorgibst, und nicht den, der für den Temperatursensor
> erforderlich wäre. Atmel Start macht überhaupt viele schöne Dinge und
> einige völlig unbrauchbare dazu.

Das siehst Du falsch. Man kann es selektieren ...

von Raoul D. (raoul_d219)


Lesenswert?

MicroChip hat es mittlerweile bestätigt: nur ADC0 liest mit muxpos 0x1e 
den internen Temp.-Sensor, ADC1 den DAC-Ausgang. Es ist also ein Fehler 
im DB, sie wollen ein neues Errata herausbringen. In der Zwischenzeit 
schaut man in das DB des 1617.

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.