Hallo! Ich benutze den ADC eines Mega8 um Strom zu Messen. Den ADC-Wert brauche ich fortlaufend für die Berechnung anderer Größen. Gleichzeitig möchte ich aber den AC nutzen um einen Interrupt beim überschreiten eines Spannungswertes zu erhalten. In meinen Überlegungen tauche ich jetzt auf folgendes Problem. Angenommen ich messe alle ms den Strom. Die Wandlung dauert eine gewisse Zeit. Das heißt würde wärend dieser Zeit ein Spannungswert die Schwelle überschreiten, würde kein Interrupt ausgelöst werden. Das heißt aber im Folgeschluss: Ich darf den Strom nicht zyklisch messen. Aber wie dann? Irgendwelche Ideen? Hinzuzufügen ist, dass ich auf den Interrupt möglichst schnell reagieren muss. Würde ich erst nach einer AD-Wandlung auf einen Interrupt reagiern, wäre dies zu spät. MfG Hias
Eder Matthias wrote: > In meinen Überlegungen tauche ich jetzt auf folgendes Problem. > Angenommen ich messe alle ms den Strom. Die Wandlung dauert eine gewisse > Zeit. Das heißt würde wärend dieser Zeit ein Spannungswert die Schwelle > überschreiten, würde kein Interrupt ausgelöst werden. Sagt wer? Der ADC ist eine Peripherie-Einheit, die quasi unabhängig vom Programm und sonstigen Komponenten vor sich hintuckert. Während die Wandlung läuft kann der Rest des AVR machen, was er will. Und selbstverständlich kannst Du auch den Analog-Komparator benutzen, um auf Schwellwerte zu reagieren. Der Komparator hat primär nichts mit dem ADC zu tun (außer, wenn Du den Mulitplexer für den Komparator brauchst oder den ADC mit dem Komparator triggern willst).
Ja...aber ich denk, er macht sich sorgen, wenn ne Stromspitze während der Approximation des ADC auftritt, die womöglich untergeht. Der Vergleicher arbeitet meines Wissens nach doch nicht zeitdiskret, der vergleicht doch in echtzeit und ohne "Wandlungsphasen", in denen was untergehen könnte.
@Compy: Ich verstehe das derzeit so, dass Metthias denkt, dass während einer Analog-Digital-Wandlung kein Analog-Komparator-Interrupt bearbeitet werden kann (siehe letzter Absatz im OP). Dem ist aber nicht so.
Ach mensch ich Dummkopf
>den AC nutzen
hab mich verlesen, nä. Klar schmeißt der AC (AC!) mit Unterbrecher um
sich, wenn er was zu vermelden hat...
Allerdings gewinnt im Zweikampf der ADC (aDc!), dessen Unterbrecher sind
nämlich wichtiger (Prioritäten...)
Compy wrote: > Allerdings gewinnt im Zweikampf der ADC (aDc!), dessen Unterbrecher sind > nämlich wichtiger (Prioritäten...) Sollte im Normalfall kein Problem sein, wenn der ADC-Interrupt-Handler ausreichend kurz ist... (was für Interrupt Handler generell ratsam ist). Und wenn es extrem wichtig ist, dann kann man auch den ADC-Handler unterbrechbar machen, dann gehen höchstens ein paar wenige Takte verloren. Da der ADC als eher langsam anzusehen ist, sollte nicht die Gefahr bestehen, dass er seinen eigenen Interrupt-Handler unterbricht und so Stackprobleme verursacht.
Wenn man die ADC-Werte zyklisch pollt und nicht den ADC-Ready-Interrupt nutzt, kann man dem Analog-Komparator das Zepter in die Hand geben und mit dessen Interrupt sehr schnell auf Peaks reagieren.
Ich hab euch den entscheidenden Teil nicht gesagt. Ich brauch den Multiplexer um die Vergleichsspannungen auszuwählen. Ich habe 4 Spannungen die ich mittels ADMUX mit einem Wert vergleiche. Davon wird immer nur eine Spannung mit der Referenzspannung verglichen. Das Problem besteht also darin: Falls ich mittel zyklischer Abfrage den ADC-Wert abfrage, muss ich den richtigen Pin mittels ADMUX auf den AD Wandler schalten. Somit muss ich den AC schonmal deaktivieren um nicht falsche Ergebnisse zu erhalten. Ich kann erst nach der Wandlung wieder den AD einschalten und mit ADMUX den entsprechenden PIN mit dem AC "verbinden". Welche Lösungen gibts für dieses Problem? MfG Hias
Eder Matthias wrote:
> Welche Lösungen gibts für dieses Problem?
Das Problem überhaupt erstmal feststellen!
Ob der ADC oder der Komparator schneller ist, ist vollkommen irrelevant.
Du mußt erstmal festlegen, wie lang ist der Spannungsimpuls minimal, der
erkannt werden soll.
Und dann, wie lang kann die Reaktionszeit darauf maximal sein.
Erst danach kann man feststellen, ob der ADC oder Komparator es wuppen
kann oder keiner von beiden.
Peter
>Welche Lösungen gibts für dieses Problem?
Einen guten Programmierstil ;-) Es kommt immer drauf an, was man machen
will und ob das Timing noch hinhaut. Wenn nicht, muß ein externer MUX
her.
Peter Dannegger wrote: > Eder Matthias wrote: > >> Welche Lösungen gibts für dieses Problem? > > Das Problem überhaupt erstmal feststellen! > > > Ob der ADC oder der Komparator schneller ist, ist vollkommen irrelevant. > > Du mußt erstmal festlegen, wie lang ist der Spannungsimpuls minimal, der > erkannt werden soll. > Und dann, wie lang kann die Reaktionszeit darauf maximal sein. > > > Erst danach kann man feststellen, ob der ADC oder Komparator es wuppen > kann oder keiner von beiden. > > > Peter Um nochmal genauer zu werden: Wann einer der 4 Spannungen den Schwellwert überschreitet kann man nicht vorhersehen. Theoretisch dürfte dieses "Signal" nicht über 10kHz liegen. Das ganze ist aber keinesfalls regelmäßig. Es kann doch also immer passieren, dass während einer AD-Wandlung die Schwellspannung überschritten wird. Oder liege ich da falsch? Hias
Eder Matthias wrote: > Um nochmal genauer zu werden: > Wann einer der 4 Spannungen den Schwellwert überschreitet kann man nicht > vorhersehen. Theoretisch dürfte dieses "Signal" nicht über 10kHz liegen. "theoretisch" und "dürfte" haben in einer Projektbeschreibung nichts verloren. Wir kennen Dein Signal nicht. Wenn Du Deine Anforderungen nicht genauer beschreibst, kann man nichts dazu sagen. > Es kann doch also immer passieren, dass während einer AD-Wandlung die > Schwellspannung überschritten wird. Passieren kann vieles, solange Du es nicht spezifizierst und nachrechnest. Wenn Du den Multiplexer umschaltest, hast Du immer Abtastpausen, egal ob mit ADC oder Komparator. Wenn Du keine Lust zum Ausrechnen hast, mußt Du eben extern nen LM339 ranpappen. Peter
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.