AVR Attiny13 Assembler AD Wandler

#5812931
Lesenswert?

Hallo liebe Community,

Ich bin neu hier und hoffe auf die Rettung durch euch. :)

Ich habe ein Projekt (.TXT DATEI) mit einem AD Wandler aufgebaut.
Dabei soll das Programm folgenden Grundlegenden Ablauf haben:

Initialisierung
-> Wartezeit
-> Batteriespannung Kontrolle
-> Einstellung/Setting auslesen
-> | Set1 | Set2 | Set3 | Set4 | Set5 |
-> Einschalt
-> Ausschalt
-> wieder Batteriekontrolle ...


Es scheint alles zu funktionieren bis auf die letzten beiden Schritte.
Dort Soll der Controller die Spannung messen und einen MOSFET an den 
jeweiligen Schaltgrenzen an- (Einschalt) oder ausschalten (Ausschalt).
Dabei Rampt an dem Pin eine Spannung hoch. Er soll dann so lange in 
"Einschalt" bleiben, bis der Schwellwert aus dem Setting überschritten 
ist. Danach soll er zu "Ausschalt" weiter gehen und erst ausschalten, 
wenn die Spannung niedriger als im Setting definiert.

Komischerweise ist der AD- Wandler der gleiche Aufbau wie bei der 
Überprüfung der Batteriespannung. und da klappt es. Auch das Auslesen 
der Settings (auch AD Wandler) funktioniert.
Nur bei Ein- und Ausschalt geht es nicht.

Jetzt frage ich mich, ob ich irgendwo einen Fehler habe, den ich ich 
seit Wochen nicht finden kann.
+-----------
Fehlerbild:

Wenn ich die Spannung hoch rampe (0-VCC), schaltet er den PIN für den 
MOSFET nicht durch.
Wenn ich die Spannung bereits über dem Schwellwert anlege bevor der 
Controller an ist schaltet er den Pin für den MOSFET. Schaltet ihn aber 
nicht mehr aus wenn ich wieder runter rampe.

Ich habe auch schon mal eine Impuls auf einem Pin setzen lassen wenn er 
an bestimmten Stellen durch das Programm läuft. Dabei ist mir 
aufgefallen, dass er den Einschalt und Ausschalt Teil nicht als 
Schleifen durchläuft sondern immer nach einer Konvertierung wieder geht.

Ich hoffe ihr könnt mir helfen.
Danke schon mal im Voraus
Angehängte Dateien:
Gast #5812946
Lesenswert?

> in  r27,ADCH  ; einlesen des High-Teils
> in   r26,ADCL  ; einlesen des Low-Teils

Aus dem Datenblatt: "When ADCL is read, the ADC Data Register is not 
updated until ADCH is read. Consequently, if the result is left adjusted 
and no more than 8-bit precision is required, it is sufficient to read 
ADCH. Otherwise, ADCL must be read first, then ADCH."

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