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