achso. daran hab ich gar nicht gedacht.
wie lang sollt ich denn nach dem start der konvertierung warten?
Woher weist du das die Konvertierung fertig ist? So wie ich das sehe liest du unmittelbar nach dem Start aus.
achso. daran hab ich gar nicht gedacht.
wie lang sollt ich denn nach dem start der konvertierung warten?
Das mit dem C-Programmieren sollte auch noch etwas geübt werden,
Edit: ich wollte ja sagen, in dei Header-Datei kommt normalerwese kein Code, da gibts die .cpp-Datei dafür,
dann hätten wir hier auch schöne Unterforen die speziell dem Programmieren dienen, und nicht der Elektronik !
Dann zum ADC, Du schaltest den ADC immer aus beim starten der Messung, so kann da nix rauskommen, und wie Hubert.G schon sagte, muss man noch auf das Ende der Messung warten bevor man die Werte ausliest.
Man wartet nicht eine bestimmte Zeit, sondern bis der ADC sagt, das er fertig ist.
sorry, den einwand mit dem programmiern hab ich nich verstanden.
ok. dass man warten, bis der adc sagt, dass er fertig ist, hab ich grad nachgelesen.
warum schalt ich denn den adc aus, wenn ich ne messung starte?
am Anfang setzte Du dieses Bit zum aktivieren des ADC:
passt so,Code:ADCSRA = (1<<ADEN);
eine Zeile weiter setzt Du diese Bits:
da diese im gleichen Register stehen wie ADEN, dieses aber hier nicht mehr gesetzt wird, ist es 0, also wird der ADC wieder deaktiviert, genauso bei den anderen Zeilen in denen ADCSRA bearbeitet wird.Code:ADCSRA = (1<<ADPS2) | (1<<ADPS0);
Am einfachsten zu lösen lässt es sich wenn bei weitern Bits das Register so behandelt wird:
wichtig ist das | vor dem =Code:ADCSRA |= (1<<ADSC);
so bleiben alle andern Bits gesetzt die vorher schon gesetzt waren.
hm. eigentlich ganz schön logisch.
muss ich gleich mal ausprobiern.
danke.
Am schönsten geht es meiner Ansicht nach mit dem Interrupt
und wie gehts ohne interrupt?
Also das Datenblatt eines AVR hat alle Infos die man dazu braucht, und im Wiki sind auch ziemlich viel Infos und Beispiele enthalten.
Einfach warten bis der ADC fertig ist, das gibt das Bit ADIF in ADCSRA an, wenn das gesetzt ist, ist er fertig:
danach muss man das Bit ADIF setzen, damit es gelöscht wird um ein weitersmal messen zu können.Code:while (!(ADCSRA & (1 << ADIF))); // wait for conversion complete
Lesezeichen