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
Wie ist denn Deine Referenzspannung festgelegt und wie ist sie beschaltet?
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?
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
Die Frage ist welchen Kanal wandelst du eigentlicht ? Setze deine Variable A (also deine Kanalnummer) mal auf einen festen Wert. Also auf den Kanal wo der Sensor dran haengt. Gruss Helmi
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?
>also "A" ist ADC3(PB3) oder nicht?
Nein !
Du rufst RdADC doch so auf
rcall RdCOM
rcall RdADC
und in RdCOM aenderst du doch A oder etwa nicht.
Was steht dann in A ?
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
Vorsicht mit dem Simulator ! Bei den IOs ist dem nicht immer zu trauen. Was macht die richtige Hardware denn ? Setze das Register A in der ADC Routine mal auf 3 und probier das dann mal aus nicht im Simulator.
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.