AVR Controller Interrupts und USI

Gast #427475
Lesenswert?
• ▲
▼
Hallo,

Ich hab zwei kleinere Fragen:
1) Gibt es bei den AVR Controllern eine Möglichkeit, wie bei den C51ern, 
die Interuptpriorität festzulegen? Was passiert wenn zwei Interrupts 
gleichzeitig auftreten, bzw. einer in Bearbeitung ist und ein zweiter 
auftritt. Wird dann der niederwertige Interruptvektor ausgeführt? also 
dessen Speicheradresse im ROM geringer ist?

2)Ich würde gerne mal die USI etwas austesten. Im Datenblatt habe ich 
zwar schon einiges gefunden, aber so direkte Beispielalgorithmen und 
Programme waren da nicht dabei. Ich schreibe in AVR Assembler. Mir ist 
noch etwas unklar wie das mit dem Takt läuft. Hat jemand zufällig ne 
Routine als I2C Master, das würde erstmal verständnishalber reichen.

ciao
Lars
Gast #427480
Lesenswert?
• ▲
▼
1: nein
Bei gleichzeitigem Auftreten wird der mit der niedrigeren Int-Adresse 
zuerst ausgeführt. Läuft erstmal ein Int, kann kein anderer 
dazwischenfunken, bzw nur, wenn dies ausdrücklich von dir so sein soll:
-es müssten alle Interrupts, die diese ISR nicht unterbrechen sollen 
gesperrt werden, der unterbrechen darf, bleibt enabled.
-in der ISR wird das wird das I-flag per Software gesetzt
Man muss aber ziemlich aufpassen mit dem SREG und dem Stack, ohne 
wirklich zwingenden Grund würde ich es lassen
Gast #427507
Lesenswert?
• ▲
▼
Ich habe jetzt mal etwas herum probiert. Wenn ein Interrupt aufgerufen 
wird, wird das Bit I des SREGs automatisch gelöscht und erst wieder 
gesetzt wenn der Interrupt mit RETI verlassen wurde. Man muss also das 
I-Flag von Hand im Interrupt setzen um im Interrupt einen erneuten 
Interrupt zuzulassen. Ich denke das wolltest du mir sagen. jetzt hab 
ichs begriffen. ;-)

Ok jetzt wäre noch das I2C Problem, hat jemand einen kleine 
Beispielroutine da für Assembeler? Oder nen schönen Link zu nem 
Algorithmus.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.