Hilfe bei A/D Wandlung

Gast #499705
Lesenswert?

Hallo!

ich brauche Hilfe bei einem Problem: Eine do/while-Schleife soll dann 
starten wenn ein bestimmter Spannungswert am A/D Wandler meines Atmel 
mega16 Microcontrollers ereicht ist.


Wie müssen die Programmschritte aussehen, mit denen ich die Spannung 
meines Solarpanels (0 bis 2V) über den A/D - Wandler am 
Microcontrollerboard einlesen und weiterverarbeiten kann ?




Danke Björn



Gast #499981
Lesenswert?

Vielleicht bringt dir was in der Art:

ADC im free running mode, ISR schreibt den ADC Wert in ne volatile 
Variable raus. Dann musst du im Hauptprogramm ja nur noch sowas wie
while(ADC_WERT < 2Volt) {} machen.
Also warten bis Bedingung erfüllt und danach dann die eigentliche 
Aufgabe.

Bei beiden Versionen muss halt noch eine Endloschleife außen rum.

while(true) {
  while(ADC_WERT < 2.0 Volt) {} //warten
  hier steht das, was du sonst so machen willst
  ADC_WERT=0; //sicherheitshalber
}
Gast #504150
Lesenswert?

> Muss ich nicht den AD erst initialisieren??
Wenn Du willst, dass der ADC was ausspuckt, dann wirst Du das wohl tun 
müssen. Wenn Du auch noch erzählst, mit was für einem µC und in welcher 
Programmiersprache Du arbeitest, dann kann Dir vielleicht sogar jemand 
dabei helfen. Wenn es ein AVR ist, dann schau bitte ins Tutorial auf 
dieser Seite. Da steht das alles schön verständlich beschrieben.
Gast #504207
Lesenswert?

> und in einer Do While schleife einbinden damit meine schleife aktiviert
> wird.
Du weißt hoffentlich, dass eine do...while-Schleife immer mindestens 
einmal durchlaufen wird, auch wenn die Schleifenbedingung nicht erfüllt 
ist? Das nur am Rande... Für den Fall, dass Du vielleicht doch eher ne 
while-Schleife meintest.
Gast #504223
Lesenswert?

Wenn du nur einen Spannungspegel überwachen willst, dann nimm lieber den 
Analog-Comparator. Da brauchste keinen Code zum Überwachen, der ist 
schnell und meldet sich per Interrupt, falls gewünscht.

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