Interrupts und Ringbuffer

Gast #570854
Lesenswert?
• ▲
▼
Hallo zusammen,

ich beschaeftige mich immer noch mit der MIDI-fizierung meiner Yamaha 
Orgel und denke das ich bei der Benutzung der Interrupts des mega88 
einen Gedankenfehler habe.

Die Orgel sendet mit 1 Mhz Daten in Blöcken von 54 Bytes, die ich per 
externem Interrupt einlesen möchte. Die Daten wiederholen sich nach 10 
Blöcken a 54 Byte. Bisher gehe ich her und warte auf das Kennungsbyte 
und schalte dann das I-Bit im SREG ein. Das Lesen erfolgt in der ISR. 
Nach Erreichen des Ende der ersten 54 Bytes, verlasse ich die ISR und 
kümmere nicht weiter um den Interrupt. Ich hole mittels 2-mal POP die 
alte Ruecksprungadresse vom Stack und werte die Daten aus. Soweit 
theoretisch!

Ich denke nun über einen Ringbuffer zum senden der MIDI-Daten nach und 
stelle fest, das es besser wäre das EXT0 Interrupt Enable Bit ein- und 
auszuschalten um den externen Interrupt abzufangen und das I-Bit im SREG 
immer oben zu lassen. Den Buffer würde ich beim Versenden dann auch über 
das UDRE0 und UDRIE0 Bit steuern muessen. Oder? Also alternativ auf die 
Daten per EXT0 warten oder auswerten und im Hintergrund die MIDI Daten 
senden. Ich fuerchte nur das die Interrupts kollidieren werden?!

Gruss

Roman


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.