Dir ist aber schon klar das in der Wartezeit das komplette Programm steht. Es sind weder Eingaben noch Ausgaben möglich.
Für diese Aufgaben sind die Timer vorgesehen.
Druckbare Version
Dir ist aber schon klar das in der Wartezeit das komplette Programm steht. Es sind weder Eingaben noch Ausgaben möglich.
Für diese Aufgaben sind die Timer vorgesehen.
Klares "Jein" dazu.
Das kommt auf den Anwendungsfall an. Ich persönlich finde es grausam, ein Konstrukt über einen Timer zu entwerfen, dass mir z.B. das Blinken einer einfachen Betriebs-LED im Sekundentakt erlaubt (am Blinken über die Wait-Routine siehst Du sogar, wie Deine IRQ-Auslastung ist).
Alles in IRQs auzulagern, während das Hauptprogramm sich bei
Main: jmp Main
in der Nase bohrt, ist auch Kappes.
Timer verwendest Du, wenn Du ein Timing (nach oben und nach unten, z.B. UART-Emulation) einhalten willst. Die Verwendung von einfachen Warteschleifen zur Einhaltung von Mindestzeiten (z.B. Tastenentprellen, I2C-Emulation,...) ist meiner Ansicht nach legal.
Das ist wohl etwas Ansichtssache. Ich verwende wait-Routinen ausschließlich nur vor dem main um zu warten bis externe Geräte oder Bauteile Ready sind oder um auf dem Display Programmname und Versionsnummer anzuzeigen.
Innerhalb der main gibt es nur Timer, wenn es ein ernst gemeintes Programm ist. Ein "blinky" zählt nicht dazu.
Das ist weder ein klares noch ein hartes Urteil. Eher die Erfahrung aus der Praxis, die zeigt, dass auch von Anfängern zusammengefummelte Lösungen neben der Norm exzellent laufen können, dass man Anfängern ihre Lernkurve und die verbundenen Fehler zugestehen muss. Die Ansprüche steigen mit der Zeit automatisch, damit die Wissbegierde und der Kenntnisstand. Dazwischen aber müssen erst einmal spielerische Erfolgserlebnisse her.
Schau mal im AVR-Tutorial bei Mikrocontroller.net (oder in Dein altes AVR-Assembler-Buch im Regal), in welchem Kapitel Timer angesprochen werden. Über den didaktischen Sinn, diese Infos in die zweite Hälfte des Lehrinhaltes zu schieben, mag ich mich mit Dir nicht streiten (und Du sicherlich auch nicht mit den Autoren).
Einem Anfänger zu empfehlen er könnte sich zwecks schneller Teilerfolge einen schlechten Stil angewöhnen und davon auszugehen seine Ansprüche würden noch steigen halte ich für ein Gerücht.
Wie soll so jemand den Ansprüche entwickeln, wenn er bereits am Anfang keinen Wert auf Qualität und Normen legt?
Kein Gerücht, siehe Hubert G.:
Noch 2014 hat Hubert G. bei einem LED-Problem geholfen, siehe https://www.roboternetz.de/community...ight=Hubert+G.
Damals hielt er die Verwendung der _delay_ms-Funktion in der Main für legitim,
Heute schließt er dies quasi aus.
Der hat sich weiterentwickelt.;)
Übrigens: Lass mich bitte nicht dumm sterben: Wo steht diese Norm? Ist das schon ISO-zertifiziert? Ich lerne gern.
Ein bischen länger darfs schon sein:
Bei den meisten Betriebssystemen sieht die Mainloop so aus.Code:while(1) {
sleep();
}
Alles, was der Compiler schluckt, ist legal, trotzdem gibt es einen Unterschied zwischen Lehrlingsarbeit und Meisterwerk. Die meisten Delays kann man in einem regelmäßigen Timertick abhandeln, insbesondere das Einhalten von Mindestzeiten und gerade das Entprellen von Tasten, auch mehreren gleichzeitig. Und wenn man sein System sauber analysiert und geplant hat, fällt möglicherweise das Timing für ein SW-UART for free ab.Zitat:
Timer verwendest Du, wenn Du ein Timing (nach oben und nach unten, z.B. UART-Emulation) einhalten willst. Die Verwendung von einfachen Warteschleifen zur Einhaltung von Mindestzeiten (z.B. Tastenentprellen, I2C-Emulation,...) ist meiner Ansicht nach legal.
MfG Klebwax
Warum sollte das schlechter Stil sein? Weil es nicht dein Stil ist?Zitat:
Zitat von Roboionic
Schlechter Stil ist meiner Meinung nach eher herumzuprogrammieren, ohne sich vorher wenigstens mal ein paar Notizen zum Programmablauf zu machen...von einem sauberen Ablaufdiagramm ganz zu schweigen. Oder gar das Verzichten auf Kommentare.
Gegen sowas finde ich einfache Zählschleifen als Warteroutine gut verzeihlich...gerade für Anfänger. Ob eine Lösung gut ist oder nicht, richtet sich meiner Meinung nach eher nach dem Anwendungsfall. Die Pauschalaussage "Das ist schlechter Stil" ist allzu oft völlig unbegründet. Dies hier halte ich für so einen Fall.