Forum: Mikrocontroller und Digitale Elektronik Interrupts deaktivieren


von hmann (Gast)


Lesenswert?

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

von Jörg Wunsch (Gast)


Lesenswert?

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.

von Frank Linde (Gast)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.