Forum: Mikrocontroller und Digitale Elektronik AVR - Interrupt-Prioritäten


von Stefan (Gast)


Lesenswert?

Ich suche im Datenblatt (ATmega16) verzweifelt nach dem Register, mit
dem man die Interrupt-Prioritäten einstellen kann, aber ich find es
nicht. Ich komme aus der 8052er-Ecke. Wer kann helfen?

Stefan

von crazy horse (Gast)


Lesenswert?

keiner - die gibts beim AVR nicht.

von ttt (Gast)


Lesenswert?

Das scheint nicht zu gehen. Seite 11 ganz unten:

"... on page 43. The list also determines the priority levels of the
different interrupts. The lower the address, the higher is the priority
level. RESET has the highest priority, and next is INT0 - the External
Interrupt Request 0."

von Ralf (Gast)


Lesenswert?

Okay, ich geb auch mal was dazu ab. Da produziert Atmel wirklich einen
Haufen 8052-Derivate, dann bringen die eine eigene Architektur auf den
Markt, die zwar schön auf C optimiert ist, aber ansonsten meiner
Meinung nach gelinde ausgedrückt nicht das Gelbe vom Ei ist.
Okay, ich weiss, das Gelbe vom Ei gibt es auf dem Gebiet eh nicht, aber
solche Krücken zu produzieren... SFR-Handling ist schon Murks... Gibts
bei den Popel-Dingern nicht irgendeine Register-Adresse, bei dem das
MSB bestimmt, mit welchem physikalischen Register gearbeitet wird? So
ein Murks, und blos weil keiner daran dachte, genug SFR-Platz zu
lassen.
Wenn ich sowas schon sehe.
Es gibt 8052er, bei denen ging der Platz für die SFRs auch aus, weil
die Teile so viel onboard haben. Aber dort hat man das viel sauberer
gelöst (meine Meinung). Dort gibt es ein einziges Register, welches
bestimmt, auf welcher SFR-Page man gerade arbeitet.
Und wenn die AVR-Dinger nicht mal IPs haben... Naja, jeder so, wie er
es mag...
Hoffe, es fühlt sich jetzt niemand gekränkt, oder beleidigt...

Ralf

von Suzanna (Gast)


Lesenswert?

Mit Verlaub gesagt, ging den AVR der SFR-Bereich ja aus dem selben Grund
aus, wie den 51'ern. Mit einem speziellen Register zum Umschalten hast
du aber mehr Aufwand, als mit dem MSB, schliesslich musst du zwei
zusätzliche Zugriffe machen. Ob jetzt eine Lösung "sauberer" ist mag
jeder selbst entscheiden. Die einen schalten auch lieber Registerbänke
um, die anderen haben gleich so mehrere. Mancher geht für jede
Operation über ACC und zieht 500 Euro ein, die anderen haben mehr
Multifunktionsregister. Die Interruptpriorisierung ist bestimmt
"kaufmännischen" Argumenten zum Opfer gefallen...
Die fehlen unter Umständen wirklich, die anderen Punkte die du
bemängelst sind rein subjektiv.

von thkais (Gast)


Lesenswert?

Wenns nur darum geht, einen Interrupt zu priorisieren, dann kann man
in den anderen Interrupts per SEI den Interrupt wieder freigeben.
Mehrere Interrupts priorisieren ist sehr kompliziert. Habs auch noch
nie gebraucht.
@Ralf: Dieses eine Register wird so selten genutzt - da kommts dann
echt nicht mehr drauf an. Ist alles Geschmackssache, ich komme mit den
Atmels bestens zurecht. Für manche Projekte (z.B. Code aus dem RAM
ausführen) ist eben ein MCS-51 besser - dann nehme ich einen solchen.
Wo ist das Problem?

von Ralf (Gast)


Lesenswert?

@Suzanna:

Es stimmt was du sagst, klar wäre ich beim 51er froh, wenn ich nicht
jeden Furz mit dem Accu machen müsste, sondern wenn es mit jedem
Register ginge...
Bezüglich der Umschaltung der SFR-Pages muss ich fairerweise sagen,
dass der von mir angesprochene 51er so viele onboard-Funktionen hat,
dass die Umschaltung der Page wieder einfacher ist.

@thkais:

Es gibt kein Problem, nur Meinungen ;-)

Ralf

von A.K. (Gast)


Lesenswert?

"Dort gibt es ein einziges Register, welches
bestimmt, auf welcher SFR-Page man gerade arbeitet."

Brauchbare Lösung für Assembler-Programmierung.

Compiler jedoch haben dazu ihre ganz eigene Ansicht: jede Art von
Bank-Switching ist ihnen zuwider, egal ob ROM, RAM oder IO.

von peter dannegger (Gast)


Lesenswert?

Naja Atmel ist Zusammenschluß mehrerer Firmen.

Die AVR-, ARM- und 8051-Leute sitzen jeder für sich im stillen
Kämmerlein und gucken nicht über den eigenen Tellerrand hinaus.

Und dadurch kommt es eben, daß jeder ein paar gute Ideen hat, aber die
nicht in einem Brainstorming mit den anderen ausgetauscht werden.

Es fehlt sozusagen das Familiendenken.

Schade.


Wenigstens 2, besser 4 Interruptlevel würden dem AVR ganz schön auf die
Sprünge helfen und das Programmieren enorm erleichtern (langsame
Interrupts muß man dann nicht mühsam optimieren).


Und daß die neuen AVRs, zusätzlich IOs im SRAM-Bereich ablegen, ist ja
auch kein Fehler. Unverständlich ist bloß, warum dann im ehemaligen
IO-Bereich soviel frei bleiben muß (z.B. ATMega168: 25 IO-Register
komplett ungenutzt).


Peter

von Ralf (Gast)


Lesenswert?

> Naja Atmel ist Zusammenschluß mehrerer Firmen.

Echt? Hab ich gar nicht gewusst!!! Wieder was dazugelernt...

> Und dadurch kommt es eben, daß jeder ein paar gute Ideen hat, aber
die
> nicht in einem Brainstorming mit den anderen ausgetauscht werden.

Und genau deswegen hat es noch keiner geschafft, einen Controller
rauszubringen, der von allen das Beste vereint...

Naja, ich glaub, man könnte ewig über sowas diskutieren, und würde zu
keinem fertigen Ergebnis kommen...

Ralf

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.