Forum: Mikrocontroller und Digitale Elektronik Atmega328P- ext.Interrupt


von blackheart (Gast)


Lesenswert?

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

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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.

von der alte Hanns (Gast)


Lesenswert?

>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).

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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.

von c-hater (Gast)


Lesenswert?

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.

von blackheart (Gast)


Lesenswert?

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.

von blackheart (Gast)


Lesenswert?

Allen anderen danke, für die Antworten !!

von Ingo (Gast)


Lesenswert?

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

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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