Hi, momentan komme ich irgendwie mit den externen Interrupts nicht wirklich zu recht... vielleicht überseh' ich ja was. (Bsp-Programm im Anhang) Wenn ich nun mit einen Drähtchen den INT0 auf High setze (AVR_MT-128: EXT1:PIN2 (5V) mit EXT1:PIN9 (INT0) verbinden) sollte ich doch die Schleife verlassen und im Programm weitermachen!? LG, Joe.
du wirst dich auch noch mit den INT-Registern auseinandersetzen müssen... INT0 muß noch freiggeben werden. Mit sei() werden einfach nur alle Interrupts freigegeben, die auch zugelasssen sind...
Ah --- hat nun doch ein bissl gedauert, bis ich alles zusammen hatte (+Flanken), aber immerhin... fg Etwas gewöhnungsbedürftig sich von einem Eck zum anderen zuhangeln :o) Vielen Dank, Joe.
möchtest du wirklich alle Interrupts zur gleichen Zeit eingeschaltet haben? Dann hättest du u.a. das Problem, dass du dauernd im UDRI-Interrupt festhängen würdest, da dieser Interrupt erzeugt wird, sobald kein Zeichen mehr im UART-Sendepuffer liegt...
Gast
#257573
Und wie schaltet man nur bestimmte Interrupts an? Ich habe so meine Probleme mit flankengesteuerten externen Interrupts, irgendwie will das nicht so richtig, ein Kumpel von mir hat unabhängig von mir die gleichen Erfahrungen gemacht. Hat da jemand einen Tipp?
> Und wie schaltet man nur bestimmte Interrupts an?
Man liest (und versteht!) das Datenblatt und setzt dann die
betreffenden Bits in den betreffenden I/O-Registern.
...
.. oder löscht diese... (Bits in den Registern)
;-) .. aber nur die (Bits in den Registern), deren Interrupts ausgeschaltet werden sollen. Es soll aber auch I/O-Register geben, mit denen man keine Interrupts schalten kann, weil sie andere Funktionen erfüllen. Das (vollständige!) Datenblatt könnte Aufklärung bringen. Achja, zu jedem aktivierten Interrupt muss auch ein Sprung in die Interrupt-Vektortabelle eingetragen sein, der zu einer ISR (Interrupt-Service-Routine) führt. Dort wird dann der Job erledigt. ...
man kann aber auch Interrupts abschalten, die man eigentlich braucht, und dann hier ein Thread starten...
Gast
#257578
Danke für den Tipp mit dem Datenblatt, da wäre ich selbst nicht drauf gekommen! Interrupt-Vektoren sind gesetzt, Interrupts sind aktiviert, die Flags für die Art der Auslösung sind gesetzt, realisiert im Prinzip nach dem Beispiel aus dem Tutorial.
Da fragt man sich, wieso Atmel (und die anderen Firmen) immer so ein Aufwand mit den Datenblättern treibt, wenn keiner reinguckt... Wieso Atmel immer zwei zu jedem Chip "verteilen" muß, ist mir allerdings auch nicht klar...
Das abgespeckte DB ist wahrscheinlich für Marketing-Strategen, die können mit dem vollständigen sowiso nix anfangen... ;-) ...
die brauchen doch nur die erste Seite (vielleicht noch die 2. wegen der Bilder...)
Gast
#257582
Also mal ganz ehrlich, wirklich leichte Lektüre sind die Datenblätter nicht, außerdem muß man erstmal ewig suchen, bis man einige Dinge gefunden hat.
Gast
#257583
nö! Im Acrobat Reader ist links doch ein schönes Inhaltsverzeichnis zu sehen. Da braucht man nur den entsprechenden Punkt auszuwählen. Wenn ich etwas auf dem Bildschirm nicht lesen kann (weil ich lieber Papier in den Händen halte), drucke ich mir die entsprechende Passage aus. Die Blätter kann ich dann auch im Bus lesen, und mir Notizen darin machen.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.