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!
Die Datei iotn1614.h sagt ganz klar:
> ADC_MUXPOS_TEMPSENSE_gc = (0x1E<<0), /* Temp sensor/DAC1 */
In meinem Datenblatt für den Attiny1614 steht auf Seite 373 für MUXPOS:
> 0x1e TEMPSENSE ADC0: Temperature sensor / ADC1: DAC1
Falschen ADC benutzt?
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.
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)
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
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?
> 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.
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.
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
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.
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?
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).
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.
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 ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.