PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Interrupt's beim Mega8L mit Assembler progr.!



papuadive
07.09.2007, 08:00
Hallo an alle,
bin gerade dabei, mich im AVR-Studio 4 in Assembler zu probieren.
Wo ich überhaupt nicht durchblicke, wie das mit den Interrupt's funktioniert!
Ich weiß nur dass es 2 gibt, PortD2 u.3 , aber das ist schon alles, leider!
Jedoch wie aktivieren-Programmcode......., keine Ahnung!

Vielleicht kann mir jemand weiterhelfen
Danke
Gruß papua

A.Hoffmann
07.09.2007, 08:48
Hallo papuadive.

Unter der Adresse www.mikrocontroller.net findest Du ein
AVR - Tutorial. Dort findest Du alle Antworten auf Deine Fragen.

Mfg
A.Hoffmann

papuadive
07.09.2007, 17:15
hallo a.hoffmann!
hab mal im avr-tutorial nachgesehen, aber so richtig fündig bin ich nicht geworden, trotzdem vielen dank
gruß papua

A.Hoffmann
07.09.2007, 17:59
Hallo
Na da würde ich doch nochmal genau nachschauen.
In dem tutorial gibt es einen Abschnitt mit dem Titel - Interrupts -
und wie kann ich sie verwenden. Es Beschreibt die Verwendung von Interrupts beim Atmega8.

Mfg
A.Hoffmann

wkrug
08.09.2007, 10:32
Der erste Schritt ist, die Interruptvektortabelle mit den richtigen Sprungzielen zu versorgen.
Als nächstes muß das EICRA und das EIMSK Register mit gültigen Werten versorgt werden.
Nun musst Du noch deine Interruptroutine schreiben und auf den Speicherplatz plazieren auf den der zugehörige Interruptvektor zeigt.
Das macht man üblicherweise mit Labels.
Am Ende bzw. beim Aussprung aus der Interruptroutine muss der Assemblerbefehl RETI stehen.
Nun solltest Du den Stack initialisieren, sonst läuft weder ein Interrupt, noch funktionieren Unterprogramme die mit CALL bzw. RCALL aufgerufen werden richtig.
Wenn Du jetzt im Hauptprogramm die Interrupts mit dem Assembler Befehl SEI frei gibst, sollte eigentlich alles funktionieren.
Vergiss nicht am Anfang der Interruptroutine die benötigten Register, sowie das SREG zu sichern.
Vor dem Verlassen der Routine müssen die Werte wieder zurück geschrieben werden.
Ein GIMSK Register hat dieser Chip anscheinend nicht.

Die nötigen Informationen kannst Du dem Datenblatt des ATMEGA88 entnehmen - da sind sogar Code Beispiele mit bei.

Ansonsten - schau dir halt mal an wie andere Assembler Programmierer das gemacht haben.

papuadive
09.09.2007, 18:52
vielen dank, die seite ist super....
hab sie beim ersten überflug einfach nicht entdeckt..
jetzt weiß ich, wie der hase bezüglich interrupt's...
danke nochmals lieber a.hoffman
gruß papua

papuadive
09.09.2007, 18:56
danke auch lieber wkrug für die zusammenfassung....
gruß papua

A.Hoffmann
10.09.2007, 18:20
Hallo papua.

Das von wkrug angesprochene Datenblatt des ATmega8(L) findest
Du auf der Homepage von www.atmel.com.
Gib dort in das Suchfenster einfach doc2486 ein.
Diese kleine Datenblatt ist ein PDF Dokument von 308 Seiten.

MfG

A.Hoffmann

wkrug
10.09.2007, 20:12
Diese kleine Datenblatt ist ein PDF Dokument von 308 Seiten.
Richtig.
Und in einzelne Rubriken unterteilt.
Das Kapitel Interrupts umfasst aber "nur" 14 Seiten und ist somit schon einigermassen Überschaubar.
Ausserdem wird da wirklich jedes Bit en detail erklärt.

Wenn Du dich wirklich mit den AVR Controllern ersthaft beschäftigen willst, wird Dir mit Sicherheit das gelegentliche nachschauen im Datenblatt des entsprechenden Controllers nicht erspart bleiben.