Forum: Mikrocontroller und Digitale Elektronik Befehle an Int.adresse


von Uwe (Gast)


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

von Hannes L. (hannes)


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.

...

von Uwe (Gast)


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

von Hannes L. (hannes)


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

...

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.