Interrupts deaktivieren

Gast #95352
Hi!

Ich habe hier schon oft gelesen das die Int-Routinen möglichst kurz
sein sollen.
Ich will Parameter über die Serielle vom Pc auf den yC übertragen.
während ich das mache soll der yC sonst nichts machen. Es handelt sich
nur um 15 Byte.
Ist es besser das ganze in der Hauptschleife zu machen oder schalte ich
am Anfang der Int-Routine alle Ints aus und polle bis ich die 15Byte
habe?

Ciao
  hmann
Gast
Im Zeitraster eines modernen µC dauert die Übertragung von 15 Bytes
über eine RS-232 eine mittlere Ewigkeit.  Für die Übertragung selbst
kannst Du ja Interrupts benutzen.  Selbst wenn Du das nicht willst,
ist es aber nicht dienlich, in dieser langen Zeit die Interrupts zu
sperren.
Gast
Es kommt immer auf das zu lösende Problem an. Wenn Du nur alle 2 Stunden
eine LED über einen Interrupt toggeln willst, und sonst absolut nichts
in Deinem Programm passiert, dann darf die ISR ruhig etwas länger sein.
;-)

Ernsthaft: Wenn Du Dir sicher bist, dass der MC während des Empfangs
der 15 Byte keinerlei andere Aufgaben zu erledigen hat - und auch
niemals zu erledigen haben wird - dann kannst Du die ISR so schreiben,
wie es für den Empfang nötig ist, egal wie lange das dauert.

ABER: Dein Kunde, Dein Chef oder Murphy wird in der Regel bereits kurze
Zeit nach Fertigstellung Deines Programms mit Erweiterungen kommen, die
ja "problemlos parallel zum seriellen Empfang abgewickelt werden
können, da der MC doch schnell genug ist und über reichlich ungenutze
Kapazität verfügt". Siehst Du, wo die Gefahr lauert? Deshalb sollte
man sich grundsätzlich einen professionellen Programmierstil angewöhnen
und der heißt bei ISR nun mal: So kurz wie möglich und so selten wie
nötig.

Gruß, Frank

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.