mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Befehle an Int.adresse


Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallöchen alle miteinander,
Nehmen wir einen Mega32, da sind doch die Int-Adressen 2 Worte breit.
Könnte ich da statt jamp bla_ISR auch SBI Portb,0 + reti schreiben?
Habe sowas unlängst probiert und es hat nicht funktioniert, musste
unbedingt die ISR anspringen. Fragt mich aber bitte nicht so genau wie
das war. Beim Testen ist auch ganz schnell was weggestrichen und
geändert. Ich hoffe trotzdem das mir das einer beantworten kann.

schönen Abend noch, Uwe

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Könnte ich da statt jamp bla_ISR auch SBI Portb,0 + reti schreiben?

'jamp' gibt es schonmal nicht. Du solltest schon 'jmp' schreiben.

Was du vor hast, müsste gehen. Ich würde es aber vermeiden.

Es gibt auch Leute, die setzen keinen Interrupt-Sprung ein, wenn das
Programm nur einen Interrupt nutzt. Sie platzieren einfach ihre ISR auf
die Adresse des Int-Vektors. Funktioniert auch. Vermeide ich aber auch.

Du kannst im Prinzip programmieren wie du willst, Hauptsache es
funktioniert, und es funktioniert auch dann noch, wenn du nicht mehr an
den speziellen Trick denkst und das Programm erweitern willst. Dann
rächt sich nämlich oft solcher Programmierstil.

...

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Ja Hans, du hast ja recht,aber das Verrückte war, es ging nicht, warum
auch immer.
<Ich würde es aber vermeiden.
Kannst du ja, aber es spart 8 Takte und 2 Worte. Manchmal kann eben
weniger auch mehr sein, wobei es bei mir nicht notwenig war. Ich
versuche das noch mal nachzuvollziehen, eventuell habe ich ja was
übersehen.

schönen Abend noch, Uwe

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Kannst du ja, aber es spart 8 Takte und 2 Worte.

Lach...
Ich versuche auch meist 'heizig' zu sein, stelle dann aber im
Nachhinein fest, dass ich dafür an anderen Stellen des Programms
verdammt verschwenderisch war.

Aber es stimmt schon, Aufrufe und Rücksprünge kosten schon ein paar
Takte. Das ist zum Beispiel ein Grund, weshalb ich in ISRs, die oft
aufgerufen werden (Timer, höhere Aufruf-Frequenz, z.B. für
Software-PWM) ungern Unterprogramme aufrufe oder Schleifen einsetze.
Dann schreibe ich lieber eine Sequenz mehrfach, das ist unterm Strich
'billiger'. ;-)

Schönen Abend noch, oder gute N8...

...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.