Da wäre doch die Frage angemessen, was denn genau "besser" ist. Unnötige Komplexität ist definitiv schlecht!
Druckbare Version
Da wäre doch die Frage angemessen, was denn genau "besser" ist. Unnötige Komplexität ist definitiv schlecht!
Das beantworte ich doch gerne.
Ich finde es nicht unnötig kompliziert einen Timer einzurichten, der den Zustand eines Pins verändert. So könnte man das "Muster" in einem Array ablegen, welches dann (nebenbei) abgearbeitet wird. Das hat nur Vorteile.
Schlecht finde ich die Delay/Wait/... Methode, weil dadurch immer der komplette Programmablauf angehalten wird. Das hat zur Folge das man entweder garnichts anderes mehr mit dem Controller machen kann oder dass das Timing des Signals nicht mehr passt, falls noch etwas anderes zwischendurch gemacht wird.
ich persönlich würde ebenfalls die timervariante präferieren ... und mal eine frage ... WO ist das problem mit den wechselnden pulsbreiten ?
du setzt den timer (im CTC modus) so auf, dass er ca. jede 1ms einen takt hochzählt .... im interrupt für den compare holst du dir dann die nächste pulslänge aus einem array oder so und toggelt einen pin deiner wahl
das dauert bei 16Mhz extern nur ca 2µS wenn du "schlampig" programmierst ^^
der timer zählt während du das CTC register änderst gerade einmal die erste millisekunde hoch und die restlichen 19/39 mS kann dein programm machen wozu du lust hast
definier mal unnötige komplexität genauer .... 4 zeilen + 1 interrupt sind was ?! komplex ? ja ist gut .. na klar ... das ist so als würde ich sagen ... fernsehn umschalten ist unnötig komplex, nur weil die fernbedienung nicht in griffreichweite liegtZitat:
Unnötige Komplexität ist definitiv schlecht!
außerdem: wenn ich mich einer schlechten lösung bediene, nur weil die auf-/vorgabe es zulässt, wie soll cih mir dann einen ordentlichen programmierstil zulegen!? das ist ungefähr so als wenn cih ins fitness-center gehe und sage ... mein trainer ist nicht da, dann muss ich die hantel auch nur einmal stemmen ... fitter wirste davon sicher nicht