Hallo, ich möchte eine Spannung (0 bis 5V) aus dem Netzgerät mit einem Attiny26 Mikrocontroller (ADC Wandler) messen. Da ich keine Erfahrungen bezüglich Mikrocontroller habe, habe ich bereits das Datenblatt (ADC) durchgelesen und auch schon viel gegoogelt. Gibts eventuell Quellcode (Assembler), welche ich mir durchlesen könnte. Kann jemand mir Tipps geben wie ich am besten an diese Aufgabe herangehen soll? Danke im Voraus
Danke ich habe es mir durchgelesen.Ich habe bis jetzt nicht ganz verstanden warum ich ein ADSC Bit brauche. Kann ich diesen Bit (Bit 6) auf Null setzen?
Hi >Ich habe bis jetzt nicht ganz >verstanden warum ich ein ADSC Bit brauche. Damit startet man eine Messung und stellt fest, wann der ADC damit fertig ist. Eigentlich eines der wichtigsten Bits. MfG Spess
Ich meine was ist der Unterschied zwischen die beiden codes 1. ldi temp, 0b10000000 out ADSCRA, temp 2. ldi temp, 0b11000000 out ADSCRA, temp
Susi schrieb: > Ich meine was ist der Unterschied zwischen die beiden codes Keiner. Beides ist falsch, da es kein ADSCRA-Register gibt. Du meinst das Bit6 (ADSC) im ADCSR-Register. Das zweite Beispiel startet den ADC, das erste Beispiel tut gar nichts, allenfalls aktiviert es, sofern nicht schon geschehen, über Bit 7 den ADC.
:
Bearbeitet durch User
Vielen dank für die Antwort. Heißt das, (2.) wenn ich den Bit 6 im ADSCR Register nicht setze (ADSC=0), keine Messung vorgenommen wird. Muss ich immer diesen Bit setzen (ADSC=1)?
Susi schrieb: > Muss ich immer diesen Bit setzen (ADSC=1)? So wird es wohl sein, wenn auf S.96 im Datenblatt steht: "A conversion is started by writing a logical one to the ADC Start Conversion bit, ADSC. ".
Susi schrieb: > Muss ich immer diesen Bit > setzen (ADSC=1)? Ja, das Rücksetzen erledigt der ADC selbst, als Zeichen dafür, dass die Messung fertig ist. Du kannst und sollst das per Software nicht machen. Es gibt da auch noch die Möglichkeit, dass der ADC nur einmal über das ADSC Bit angestossen wird, und dann fortlaufend von selbst wandelt. Dieser Modus wird über Bit5 ADFR angewählt.
Susi schrieb: > ich möchte eine Spannung (0 bis 5V) aus dem Netzgerät mit einem Attiny26 > Mikrocontroller (ADC Wandler) messen. Ich würde dir auch empfehlen, diese Spannung mittels Spannungsteiler etwas zu reduzieren, z.B. auf 4V, damit du auch bei Überspannung noch gültige Messwerte bekommst.
Auf der Seite von AVR- Mikrocontroller. Link: http://www.mikrocontroller.net/articles/AVR-Tutorial:_ADC Code: ; ADC initialisieren: ADC0, Vcc als Referenz, Single Conversion, Vorteiler 128 ldi temp1, (1<<REFS0) ; Kanal 0, interne Referenzspannung 5V out ADMUX, temp1 ldi temp1, (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0) out ADCSRA, temp1 ist ADSC im ADSCR Register auch nicht gesetzt. Ist da ein Fehler unterlaufen? Da im Datenblatt steht, dass ADSC gesetzt werden soll. Mfg
Susi schrieb: > ist ADSC im ADSCR Register auch nicht gesetzt. Ist da ein Fehler > unterlaufen? Da im Datenblatt steht, dass ADSC gesetzt werden soll. Jo, das ist ja auch nur die Voreinstellung. Ein paar Zeilen darunter wird der ADC dann per Setzen von ADSC gestartet:
1 | ; neuen ADC-Wert lesen (Schleife - 256 mal) |
2 | |
3 | sample_adc: |
4 | sbi ADCSRA, ADSC ; den ADC starten |
5 | |
6 | wait_adc: |
7 | sbic ADCSRA, ADSC ; wenn der ADC fertig ist, wird dieses Bit gelöscht |
8 | rjmp wait_adc |
und per Abfrage des ADSC Bits wird solange gewartet, bis der ADC fertig ist, denn das Bit wird vom ADC gelöscht, sobald die Messung beendet ist. Dann darf aus den Ergebnisregistern der neue Messwert gelesen werden. Denke daran, das die Registerbezeichnungen und auch manchmal die Bitpositionen zwischen verschiedenen AVRs variieren, du nimmst also die Bezeichnungen aus dem Datenblatt, was für deinen MC gilt.
:
Bearbeitet durch User
Matthias S. schrieb: > ... du nimmst also die Bezeichnungen aus dem Datenblatt, was für > deinen MC gilt. Und wenn dann irgendetwas hakt, kann es - auch wenn das sinnvollerweise nicht passieren sollte - ggf. auch an Abweichungen zwischen Datenblatt und prozessorspezifischer Header-Datei liegen.
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.