Ich möchte am ATtiny15 den Differenzeingang des ADC verwenden. Funktioniert soweit auch, aber es gibt da ein paar Unklarheiten, über die sich das Datenblatt und div. App-Notes bisher ausschweigen. Im Datenblatt steht, dass bei Verwendung als Diffenz-ADC die Auflösung nur 8bit (normal 10bit) ist. Wie sind dann aber die Werte in den beiden Registern (ADCL und ADCH) gespeichert? Wird dann nur ADCL verwendet? Was passiert, wenn die Differenz bei der Messung negativ wird? Kommt dann Null heraus, wird ein signed-Wert ausgegeben? Hat da schon mal jemand was mit gemacht? Sven
Da bin ich auch drüber gestolpert. Wenn du dir ADCH und ADCL ausgibst, dann wirst du feststellen, dass der Differenz-ADC doch 10 Bit kann. Mir haben 8 Bit gereicht, deshalb hab ich links justiert und nur ADCH ausgewertet. Seither glaub ich nicht mehr alles was im Datenblatt steht :-( Wies mit dem Vorzeichen aussieht weis ich nicht, schätze aber dass Null bei negatver Differenz raus kommt (wegen den internen Clamp-Dioden). signed geht schlecht bei 8 Bit Auflösung. Sind ja sonst nur noch 7. Grüß, Michael
Also ich interpretiere das Datenblatt so: Bei negativer Differenz sollten negative Zahlen heraus kommen. Das Ergebnis ist als Zweierkomplement zu interpretieren. Da der Wertebereich -128...+127 beträgt, sind es doch 8 Bit und nicht nur (wie vermutet) 7 Bit. Die beiden zu vergleichenden Spannungen müssen sich im Bereich zwischen 2V und Vcc-0,2V befinden, also weit weg von GND. ...
@Hannes Wo steht das? Habe bis jetzt nur das Datenblatt Rev 1 gehabt, mir jetzt Rev F geholt. Man kann halt in den Tiny15 so schlecht reinschauen, aber wenn ich mir die AD-Werte seriell rausschiebe und auf den Oszi ausgebe, sieht es so aus, als wäre es ein unsigned 10bit-Wert, wo alles Negative zu Null wird. Ich hab hier Ärger, weil der Wandler manchmal nach Einschalten oder Reset völlig unsinnige Werte bringt, und ich weiss noch nicht, worans liegt. (Interne Referenz, Differenzeingang mit Gain 20x) Ist sowas bei euch schonmal aufgetreten? Sven
Siehe Appnote AVR120 Seite 4 oberer Absatz... Wenn, wie beim Tiny15, die nutzbare Auflösung auf 8 Bit reduziert wurde, dann gilt natürlich -128...+127 als nutzbarer Wertebereich. ...
"Note that some devices cannot measure negative differences, e.g. ATiny26" und wohl auch der Tiny15. Im Datenblatt steht 0...2,56V Differential Input Range und nicht -2,56V...0...+2,56V. Meine Messung hat aber gezeigt, dass es von 0...5V funktioniert. 0...2,56V wären 8Bit, 0...5V sind dann 10 Bit. Zu dem Thema: Was ist denn das für eine Auflösung "16 LSB"?? Bedeutet das, dass ich die letzten 4 Bit vergessen kann? Das kann ja fast nicht sein, oder? Wegen den unsinnigen Werten; hast du eine Dummywandlung zum initialisieren eingebaut? Die erste Wandlung nach einem Kanalumschalten ist Schrott und muss verworfen werden! Michael
Mit einer negativen Differenz meinte ich nicht, dass eine der beiden Spannungen negativ gegenüber GND ist, sondern dass die Differenz der beiden Spannungen negativ ist. Also dass V+ negativer ist als V-, beide aber positiver als GND. Die angelegten Spannungen müssen schon innerhalb des Betriebsspannungsbereiches liegen. An die Eingänge eines OPV legt man ja auch keine Spannungen außerhalb des Betriebsspannungsbereiches an. ...
>>Wegen den unsinnigen Werten Nee, war mal wieder was ganz anderes: Das Programm begann mit einem RJMP über den Interrupt-Vector-Bereich, dann die Eingänge enablen und OSCCAL setzen. Bei einigen Starts wurden (trotz Brown-Out und Slow-Start mit Verzögerung 65ms) die Eingänge falsch gesetzt. Wenn ein ADC-Eingang nun als Ausgang oder mit Pull-Up gesetzt wird, ist klar, dass dann Mist rauskommt. Hab ich es rumgedreht: Erst OSCCAL, dann Eingänge setzen. Funktioniert, aber jetzt wird OSCCAL nicht immer richtig gesetzt. Hab ich den RJMP weggelassen und gleich am Anfang OSCCAL gesetzt, dann die Eingänge. Interrupt-Vectoren brauch ich (vorerst) nicht. Jetzt funktionierts. Frag nich warum... >>Mit einer negativen Differenz Also, bei mir bringt der ADC im Differenz-Modus für negative Differenz Null, 2.56V Differenz sind 10bit (mit interner Ref) (ADCH,ADCL rausgeschoben und auf Oszi angesehen). Laut des Schematic im Datenblatt kann er eigentlich auch nur positive Differenzen messen. Frag mich nur, wie dann der Nullabgleich (beide Diff-Eingänge gleicher Kanal, um Offset rauszurechnen) funktionieren soll, wenn der Offset zufällig negativ ist... Komische Sache das! Sven
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.