ATMega16 ADC Abfrage macht Probleme

#3685642
Lesenswert?

Hallo Kenner des Fachs !
Ich habe in einem grösserem Projekt mit serieller Ausgabe der Werte , 
Probleme mit der ADC Abfrage...Neben der Zeitabfrage,mit 
TWI/DS1307,Temperaturmessung mit 1-Wire DS18B20, benötige ich eine ADC 
Umwandlung für eine Füllstandsmessung.

Nun Habe ich ein Problem, dass, wenn ich die ADC Funktion aktiviere, die 
RTC Afrage oder(?) die serielle Ausgabe versagt.

Ich hab den Code auf meinem Webspace als Zip gelegt:
(es ist ein AVR-Studio 4.xx Projekt)
http://oderlachs.de/forum/ATM_16_Clock.zip

Hier ist nur RTC, USART und ADC bislang eingebunden..
Vielleicht schaut es sich mal wer an und kann mir helfen..irgendwie hab 
ich da "Brett vorm Kopf" ;)

Gruss & Danke

Gerhard

Ich hoffe das ich alles gut kommentiert habe im Code
#3685892
Lesenswert?

Auf Deutsch:
vergiss doch bitte den Free Running Modus. Den braucht keiner!

Deine Start_ADC Funktion sieht doch auf den ersten Blick nicht schlecht 
aus. Wird die Funktion aufgerufen, dann startet sie den ADC, wartet bis 
der fertgi ist und liefert das Ergebnis. Wozu brauchst du da noch einen 
Free Running Modus?

Das Problem ist in deiner Funktion der Teil "Warten auf das Ergebnis". 
Diese Abfrage funktioniert im Free Running Modus nicht. Denn in diesem 
Modus wird der ADC nie "fertig". Sobald er ein Ergebnis hat, startet er 
die nächste Wandlung. Wenn du also den ADC abfragst, dann meldet der 
pflichtbewusst: Ich buddle (noch). Woraufhin deine Start_ADC darauf 
wartet, das der ADC sich mal melden würde "So, isch haben fertig". Nur 
passiert das eben nie.

Vergiss den Free Running Modus. Den braucht man nur ganz selten und nur 
dann, wenn es wirklich wichtig ist, dass man so schnell wie möglich und 
so kurz hintereinander wie möglich Messwerte kriegt. Aber dann muss man 
das ganz anders programmieren (mit Interrupts).
In deinem Beispiel bringt dir Free Running genau gar nichts.
Gast #3686052
Lesenswert?

Karl Heinz schrieb:
> vergiss doch bitte den Free Running Modus. Den braucht keiner!

Schon das zweite Mal in fünf Jahren, daß ich Dir widersprechen muß :-). 
Ich finde den total nützlich, wenn ich eine möglichst schnelle Regelung 
implementieren will. Dann stellt der ADC-Interrupt auch direkt den 
Systemtimer, aus dem alle anderen periodischen Funktionsaufrufe 
"herausgeteilt" werden.

Aber das war OT. Für das Beispiel oben taugt der wirklich nicht.
#3686399
Lesenswert?

Euch Allen sag ich vielen herzlichen Dank für alle Hinweise !!

Ich werde mal alle Hinweise berücksichtigen...und weiter versuchen.
Ich arbeite nach dem Buch von Sven Feldkord :
"Einführung in die C_Programmierung mit dem ATMega32"...danach habe ich 
meine Beispiele ausgearbeitet.
Natürlich habe ich auch die ATMEL-Datenblätter verwendet, da sind ja 
auch Codebeispiele drinnen..nur eben die englische Beschreibung verstehe 
ich nicht immer so ganz..

Danke und Gruss

Gerhard
#3686580
Lesenswert?

Vielen Dank Heinz !

Kann sein das mein flüchtiger Speicher im Kopf wieder was durcheinander 
gebracht hatte, ich habe noch mals die Funktionen/Routinen aus meinem 
"Lehrbuch" für Init_ADC und Start_ADC genommen und nun klappt es mit der 
ADC-Messung, der SerienAusgabe und dem TWI-RTC. Die Auwertung befindet 
sich noch im Debug/Testmodus noch mit LEDs auf dem STK500.
ich habe nochmals den neuen Code auf meinen Webspace geladen zur 
allgemeinen Kontrolle und Begutachtung.
Gewiss gibt es noch was zu Verbessern, aber ich lerne ja noch...

Hier der Code : http://oderlachs.de/forum/ATM_16_Clock_ADC.zip

ja für mich ist es furchtbar immer wieder längere Pausen zwischen dem 
Programmschreiben machen zu müssen..da die Speicherbatterie im Koppe 
nicht mehr so OK ist.. ;)

Vielen Dank , es hat mich besonders die rege Beteiligung an den 
Hinweisen gefallen. Das ist positiv fürs Forum, auch wenn ein gewisser 
Gast, unrühmliche Worte schrieb, die der Mod (Danke !!) schnell entfernt 
hatte.

Gruss

Gerhard

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