Hallo! Hab da eine Verständnisfrage zu den ext. Interrupts bei einem AtMega328P. Habe eine LCD Anzeige in meinem Jeep Wrangler für den Treibstoffverbrauch gebastelt. Die Funktion ist, das ich Durchflussmesser in der Zu- und Rückleitung eingebaut habe. Die Impulse zum zählen, gehen auf die beiden Interrupt Eingänge. Beide Zählen einen Wert aufwärts und bei erreichen der Vorgabe (Impulse pro Liter), wird die Differenz zwischen Zu- und Rücklauf berechnet und als Verbrauch am LCD angezeigt. Nun meine Frage: Wie verhalten sich die Interrupts bei gleichzeitigem auftreten, geht einer verloren, wird vorrangig abgehandelt, oder werden gleichzeitig ausgeführt?? Beim Stadtfahren stimmt die Anzeige ca. bis auf 3%, bei längerer Autobahnfahrt jedoch ist die Abweichung bis zu 20%. Kann das an der Abhandlung der Interrupts liegen ??? Danke für die Antworten. Lg Michael
blackheart schrieb: > Wie verhalten sich die Interrupts bei gleichzeitigem auftreten, geht > einer verloren, wird vorrangig abgehandelt, oder werden gleichzeitig > ausgeführt?? Also, gleichzeitig gibt es wohl kaum, einer ist immer ein bisschen schneller. Und nein, es geht keener verloren, der wird halt nur nach dem schnellerem Interrupt abgehandelt. blackheart schrieb: > Beide Zählen einen Wert aufwärts und bei erreichen der Vorgabe (Impulse > pro Liter), wird die Differenz zwischen Zu- und Rücklauf berechnet und > als Verbrauch am LCD angezeigt. Vorgabe zu klein ? Versuche mal die LCD-Ausgabe zeitgesteuert ablaufen zu lassen, Rücklauf Impulse mit Timer-Eingang zählen. P.S. Natürlich zählt der andere Interrupt nur die Impulse, alles andere soll ausserhalb gemacht werden.
>Beim Stadtfahren stimmt die Anzeige ca. bis auf 3%, bei längerer >Autobahnfahrt jedoch ist die Abweichung bis zu 20%. Man könnte auch erstmal der Referenz misstrauen (wie auch immer diese aussieht).
qwertz schrieb im Beitrag #3783974: > Puuhhhh, wenn du mit der Erkenntnis deine Projekte umsetzt, sehen wir > dich hier bald wieder mit "unerklärlichen Erscheinungen". ;-) War noch nie hier mit "unerklärlichen Erscheinungen". qwertz schrieb im Beitrag #3783974: > Natürlich können Ereignisse genau zum gleichen Zeitpunkt eintreffen. Und Natürlich kann das nicht passieren. Die können nur zeitlich so nahe beieinander liegen, das es für uC so aussieht. Vor 100 Jahren war eine mikrosekunde "gleichzeitig". Und da bei AVR die Interruptabarbeitung nicht unterbrochen werden kann, ist Prioritätsliste für wartende, nicht für auftretende Interrupts gedacht.
qwertz schrieb im Beitrag #3784026: > Lies dir den Satz bitte noch einmal in Ruhe durch (bevor ich ihn > zerfetze). ;-))) Lassen wir das Ganze lieber sein, du hast ja eh keine Ahnung wovon du sprichst.
blackheart schrieb: > Die Funktion ist, das ich Durchflussmesser in der Zu- und Rückleitung > eingebaut habe. > Die Impulse zum zählen, gehen auf die beiden Interrupt Eingänge. > Beide Zählen einen Wert aufwärts und bei erreichen der Vorgabe (Impulse > pro Liter), wird die Differenz zwischen Zu- und Rücklauf berechnet und > als Verbrauch am LCD angezeigt. Schwachsinniger Ansatz. Natürlich würde man das sinnvollerweise so lösen, daß beide Durchflußmesser (zumindest effektiv) auf einen gemeinsamen Zähler arbeiten, der eine Zweig zählt vorwärts, der andere rückwärts. Zum Ausgleich von Exemplarstreuungen könnte man dann eventuell noch in einen der beiden Signalzweige eine entsprechende Skalierung einbauen. Sprich: KS-Pumpe an, Korrekturfaktor solange abgleichen, bis konstant immer etwas zwischen -1..+1 als Zählerwert rauskommt (jeweils über den Zeitraum einer geplanten Aktualisierung des Displays). Nötig wird das aber wohl nicht wirklich sein... > Nun meine Frage: > Wie verhalten sich die Interrupts bei gleichzeitigem auftreten, geht > einer verloren, wird vorrangig abgehandelt, oder werden gleichzeitig > ausgeführt?? Gleichzeitig wird überhaupt nix ausgeführt, jedenfalls nicht, solange der verwendete Controller nur einen Rechenkern hat. Denk doch einfach mal nach: Womit sollte er es gleichzeitig ausführen? Vorrangregelungen hingegen gibt es oft. Allerdings spielen diese in dieser Anwendung absolut keine Rolle, denn es ist hier unwichtig, welcher Interrupt zuerst abgearbeitet wird, solange nur keiner verloren geht. Und das passiert nicht, weil die entsprechende Interruptanforderung erhalten bleibt. Jedenfalls, wenn die Abarbeitung der Interrupts niemals länger dauert aus zwei aufeinander folgende Anforderungen des gleichen Interrupts, was bei der simplen Aufgabe des Inkrementierens/Dekrementierens eine Zählers erst bei Interruptfolgefrequenzen vorkommen wird, die ein Durchflußsensor kaum jemals ereichen kann. Deinen µC wirst du ja wohl nicht mit 100Hz Systemtakt oder so betreiben? Dann könnte es allerdings eng werden... Ich würde also einfach mal davon ausgehen, daß dein Code absolut nix taugt. Das ist bei Anfängern sowieso immer die natürliche Vermutung. Schwächen der Hardware kommen erst viel, viel, viel, viel... später als mögliche Ursache in Frage.
Schwachsinniger Ansatz, Code taugt überhaupt nix...... solche Antworten braucht das Land, in jedem Forum wird um höflichen Umgangston ersucht, nur gilt das vermutlich nicht für solche Nerd's wie dich, die die Weisheit mit Löffeln gefressen hat.
blackheart schrieb: > Wie verhalten sich die Interrupts bei gleichzeitigem auftreten, geht > einer verloren, wird vorrangig abgehandelt, oder werden gleichzeitig > ausgeführt?? Grundsätzlich wird bei absolut zeitgleichem Auftreten von Interrupts der zuerst abgearbeitet, der in der ISR-Adresstabelle als erstes auftaucht. Somit ist eine Pseudo-Priorität gegeben... Ingo
blackheart schrieb: > Schwachsinniger Ansatz, Code taugt überhaupt nix...... > solche Antworten braucht das Land, in jedem Forum wird um höflichen > Umgangston ersucht, nur gilt das vermutlich nicht für solche Nerd's wie > dich, die die Weisheit mit Löffeln gefressen hat. Beleidigende Äußerungen überspringen, aufs wesentliche konzentrieren... Meistens kommt bei ihm, allerdings erst nach solchen Sprüchen, etwas gescheites und fundiertes raus.
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.