AD-Wandler abfragen an ATtiny13 10bit

Gast #1090210
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
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.