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
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."
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
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.
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?
@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
"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.
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
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.