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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.