Interruptroutine beim XMEGA

Gast #3355838
Lesenswert?
• ▲
▼
Hallo Atmel Fans,

ich arbeite gerade mit einem XMEGA 256A3U. Als IDE kommt der Codevision 
Compiler zum Einsatz.

Mein Programm sieht wie folgt aus:

1. Im Mainprogramm werden mehrere Schrittmotoren über 2 seperate I2C 
Schnittstellen angesteuert. Ich habe z.B. Funktionen geschrieben wie 
SetNewPosition oder GetStatus. Diese Funktionen müssen z.B. 8 Bytes an 
ein externes Schrittmotor IC übertragen. Das IC2 Interface arbeitet mit 
100kHz. Demnach benötigt man schon recht viel Zeit bis alle Daten an das 
externe IC übertragen sind. Das I2C Interface ist nicht Interrupt 
gesteuert. Sondern ich schreibe das zu übertragene Byte in das I2C Data 
Register und warte polle so lange bis die Übertragung abgeschlossen ist.

Außerdem habe ich eine RS232 Interruptroutine geschrieben. Diese 
Interruptroutine empfängt Daten mit 115200 Bauts.

Nun zu meinem Problem:

Wenn ich gerade Daten an den externen Schrittmotortreiber per I2C 
übertragen trift eine RS232 Interrupt ein. Demnach wird die RS232 
Interruptroutine ausgeführt und unterbricht die I2C Übertragung. Und 
genau hier habe ich bedenken.

Erzeugt die RS232 Interruptroutine ein Backup von ALLEN ALU Registern 
(R1 bis 32)? Die Interruptroutine hat der Codevision Wizard erstellt. 
Demnach weis ich nicht was alles auf dem Stack gesichert wird. Hierzu 
müste ich den Assemble Code genauer analysieren. Jedoch kann die dies 
nicht interpretieren :-). Auf was muss ich denn genau achten. Ich könnte 
auch zu bestimmten Zeitscheiben den globalen Interrupt deaktivieren. 
Jedoch weis ich halt nicht wann dies sinnvoll ist.

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.