AD-Wandler abfragen an ATtiny13 10bit

Gast #1090210
Lesenswert?

Hallo Spezis,

ich habe mir das Lernpaket Mikrocontroller mit einem ATtiny13 von 
Franzis gekauft, und habe zusätzlich einen ADXL202 
(Beschleunigungssensor). Anhand der mitgelieferten Übungsaufgaben habe 
ich mir eine Schaltung zusammengebaut (auf einem Bread board).

Nun zu meinem Problem:
der ADXL202 scheint gut zu funktionieren, ich Messe nur die Y-Achse. In 
Waage Messe ich eine Ausgangsspannung von 2.6V, wenn ich den Konstrukt 
um etwa 45° (links/rechts) kippe verändert sich die Spannung um +/-0,2V.
Nun diese Spannung lege ich dann an den µC. Die gemessene Spannung soll 
über die serielle Schnittstelle am Terminal sichtbar werden, soweit 
klappt das ja auch. Aber mein Ergebnis lautet immer nur ...3 255 3 255 3 
255...
Bei 10 bit Auflösung entspricht das Ergebnis dem digitalen Wert 3*256 + 
255 = 1023. Die gemessene Spannung beträgt dann 5V*1023/1023 = 5V.
Es sind aber (in der Waage) 2,6V ??? Wo ist der Fehler?

Im Anhang findet ihr den Code. Ich hoffe es kann mir einer helfen.

MfG
Rufus
Angehängte Dateien:
Gast #1090228
Lesenswert?

Ich dachte eigentlich die Referenzspannung beträgt VCC=5V (extern), weil 
die REFS0 im Register ADMUX nicht gesetzt ist. (s. Quellcode)

.
.
RdADC:
      out   ADMUX,A
      sbi   ADCSRA,ADSC   ;Wandlung starten
.
.


Die interne Referenzspannung würde 1,1V betragen, wenn

.
.
RdADC:
      out   ADMUX,A
      sbi   ADMUX,ADLAR   ;Left adjust
      sbi   ADMUX,REFS0   ;1,1V Refernz
      sbi   ADCSRA,ADSC   ;Wandlung starten
.
.
oder bin ich auf dem Holzweg?
Gast #1090879
Lesenswert?

Hallo nochmal,

hab mich nun mit dem Datenblatt des ATtiny13 etwas beschäftigt. Meine 
Feststellung war, dass ich doch nicht auf dem Holzweg bin :)

bis auf...

.
.
sbi   ADMUX,ADLAR   ;Left adjust
.
.

denn diese Zeile ist interessant bei 8 bit AD-Wandler abfrage.

Aber meine eigentliche Frage ist noch offen, ich wiederhole:

Die gemessene Spannung soll
über die serielle Schnittstelle am Terminal sichtbar werden, soweit
klappt das ja auch. Aber mein Ergebnis lautet immer nur ...3 255 3 255 3
255...
Bei 10 bit Auflösung entspricht das Ergebnis dem digitalen Wert 3*256 +
255 = 1023. Die gemessene Spannung beträgt dann 5V*1023/1023 = 5V.
Es sind aber (in der Waage) 2,6V ??? Wo ist der Fehler?

Bitte um hilfe

MfG
Rufus
Gast #1090911
Lesenswert?

Hallo Helmi,

das wird doch schon hier definiert..

->    .def   A      = r16

    ;Port B
->    .equ   Eingang    = 3


AdcInit:
->      ldi   A,3         ;Clock / 4
      out   ADCSRA,A
      sbi   ADCSRA,ADEN ;AD einschalten
.
.
RdADC:
->      out   ADMUX,A
      sbi   ADCSRA,ADSC   ;Wandlung starten

also "A" ist ADC3(PB3) oder nicht?
Gast #1090940
Lesenswert?

immernoch 3

hab gerade mit AVRStudio nochmal simuliert. A ist bis zum Einlesen des 
pinb3 = 3



ich glaube ich sollte vielleicht mit einem einfacherem AD-Wandler 
anfangen.

Ich steige jetzt selber überhaupt nicht mehr durch

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren