Forum: Compiler & IDEs ADC und Interrupt Problem


von Dieter (Gast)


Lesenswert?

Hallo, habe zwei Probleme mit dem AD Wandler, vieleicht hat ja einer von 
euch eine gute Antwort für mich die ich auch als Anfänger verstehe ;-).
Ich Programmiere in C auf einen Atmega32 mit LCD Display.

Mein erstes Problem ist das ich kein Komma zwischen den Werten habe, 
also 4,95V werden als 495 angezeigt.

xtr=buffer;
xtr = ((long)buffer*5000)/1024;
utoa(xtr,Buffer,10);
lcd_goto(0,1);
lcd_write_s( Buffer );


Mein zweites Problem ist das ich einen Interrupt auslösen will wenn die 
Spannung einen bestimmten Wert unterschreitet. Also wenn die Spannung zu 
niedrig ist das denn auf dem LCD "Niedrige Batterie Spannung" angezeigt 
wird. Nur leider hab ich gar keinen ansatz wie ich das machen kann?!


Danke schonmal im Vorraus für die Beantwortung meiner Fragen!

von Andreas K. (a-k)


Lesenswert?

Der ADC wird dir einen solchen Interrupt nicht liefern. Wenn also eine 
regelmässige Messung nicht ausreicht, dann ist der Analog Comparator 
dein Ding. Genau dafür gibt es ihn.

Wenn es allerdings nur darum geht, diesen misslichen Zustand anzuzeigen, 
dann ist ein Interrupt dafür ziemlich überflüssig. AB und zu mal messen 
und anzeigen reicht dann ja.

Und für das fehlende Komma sei dir etwas Phantasie im Umgang mit 
Division und Divisionsrest nahegelegt

von Dieter (Gast)


Lesenswert?

HAllo, kann ich denn die Spannung anzeigen lassen über den ADC und 
gleichzeitig die Spannung mit dem Analog Komperator vergelichen?

von Andreas K. (a-k)


Lesenswert?

Wenn die Spannung an beiden Pins liegt ja. Aber wie ich oben schon 
ergänzt habe: dafür braucht's keinen Interrupt.

von Dieter (Gast)


Lesenswert?

Hat einer von euch vieleicht ein Programmbeispiel für den Analog 
Komperator? finde so keinen im Tutorial

von Koster (Gast)


Lesenswert?

Hi Dieter,
Um ADC und einen Comparator gleichzeitig/nacheinander zu benutzen
Schliesst du die zu messende Spannung an einen ADC Pin an. anschliessend 
kannst du den Comparator über den ADC Multiplexer an den ADC Pin per 
software anschliessen!

von Koster (Gast)


Lesenswert?

Programmbeispiel? Im Datenblatt steht alles!

von Dieter (Gast)


Lesenswert?

ich verstehe das irgendwie nicht wie das funktionieren soll das was da 
im Datenblatt steht.

von Dieter (Gast)


Lesenswert?

Verstehe ich das richtig das der Atmega32 nur einen Analog Komperator 
hat und ich somit ansich nur eine einzige Spannung überwachen kann? Wenn 
ja ist das etwas ungünstig da ich insgesammt 2 Spannungen und 2 
Temperaturen überwachen muss!

von Andreas K. (a-k)


Lesenswert?

Nochmal: Man kann Spannungen auch durch regelmässige Messung mit dem ADC 
überwachen. Und der hat genug Kanäle.

von lkmiller (Gast)


Lesenswert?

@ Dieter
Für dich nochmal ein wilder Hack.
Damit das Komma Platz hat, werden die Zeichen einfach etwas umsortiert.
:
utoa(xtr,Buffer,10);
Buffer[4]=0;            // String-Ende
Buffer[3]=Buffer[2];    // Einer
Buffer[2]=Buffer[1];    // Zehner
Buffer[1]=',';          // last, but not least: das Komma
lcd_goto(0,1);
:

Da gäbe es noch etliche andere Arten,
auf eine wurde bereits hingewiesen:
Beitrag "ADC Wert auf LCD"
Die allerletzte Zeile verweist auf
http://www.mikrocontroller.net/articles/Festkommaarithmetik#Ergebnis_ausgeben

von Dieter (Gast)


Lesenswert?

@ lkmiller irgendwie ist das voll komisch! Ich habe 40% des speichers 
belegt. Aber wenn ich die Zeilen von dir einfüge sind auf einmal 133% 
belegt?! Wie kann das denn?! Hat einer darauf eine Antwort

von Andreas K. (a-k)


Lesenswert?

Bei einem Mega32? Respekt. Schau mal im Mapfile nach.

von Dieter (Gast)


Lesenswert?

HAllo, habe es hinbekommen... lag irgendwie am dem Projekt, habe den C
code einfach in ein neues Projekt rein kopiert und da ging es^^. Ich
kann Spannungen bis 9,99V super messen ( Also liegen mit einem
Spannungsteiler vorm Eingang des µC). Mein Problem ist im moment das ich
die Spannungen über 10V nicht richtig anzeigen kann... alles bis 10V
wird richtig angezeigt, nur wenn ich unte 9,9V komme wo er nun
eigentlich 09,9V oder halt nur 9,9V anzeigen sollte, zeigt er 99,9V an.

von Karl H. (kbuchegg)


Lesenswert?

Bitte mach nicht ständig neue Threads zum selben Thema auf.
Antwort auf deine letzte Frage findest du hier:
Beitrag "Re: ADC Wert auf LCD"

von Dieter (Gast)


Lesenswert?

Hallo, tut mir leid habe mich versehn! habe gerade was im anderen Theard 
gelesen und aus versehn da rein gepostet! Das hier ist ja eigentlich der 
Theard den ich deswegen aufgemacht habe.

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
Noch kein Account? Hier anmelden.