Vorschläge zum schalten von mehreren Ausgängen in C
Guten Morgen,
habe eine Frage bezüglich eines Programms in C zum schalten von ca. 5-10 Kanälen in definierten Abständen.
Es soll ein Prgramm entstehen für einen Controller z.b ATMega8 ect., welcher durch vorgegebene Zahlen/Variablen, die Ausgänge in bestimmten Zeitabständen aus und wieder einschaltet.
Das Problem ist, das alle Ausgänge völlig unabhängig laufen.
Beispiel wäre z.b Kanal 1, soll für 20ms einschalten, dann für 1000ms eine Pause machen und wieder für 30ms oder ähnlich einschalten usw. Alle Ausgänge werden andere Zeitvorgaben bekommen.
Ich möchte selbstverständlich keinen fertigen Code oder sowas bekommen, sondern viel eher vielleicht ein Paar Vorschläge, evt. hat der eine oder andere sowas schon gelöst.
Meine Idee wäre natürlich die Timer/Counter zu benutzen, aber viele sind ja in den kleinen Megas nicht verfügbar und somit eine nicht ganz einfache Aufgabe. Denn, hätte ich für jeden Kanal einen eigenen Timer, würde die Sache um einiges einfacher ausfallen.
Wäre um jede Antwort Dankbar!
Gruß
Re: Vorschläge zum schalten von mehreren Ausgängen in C
Zitat:
Zitat von killma$ter
... Ausgänge in bestimmten Zeitabständen ... 30ms oder ähnlich ... Timer/Counter ... aber viele sind ja in den kleinen Megas nicht verfügbar ...
Also: Millisekunden sind bei den Controllern ne halbe Ewigkeit. Es reicht da EIN Timer der eine interne Uhr betreibt - ich habe bei einem 20 MHz-Quarz einen 50 µs-Timer. Damit zähle ich in der zugehörigen ISR bis 20000 (zwanzigtausend) und fange dann neu an zu zählen - sprich alle Sekunde. Es ist mit uint16_t möglich bis 60000 zu zählen, drei Sekunden.
Im übergeordneten Programm kann ich mich auf diese Boardzeit berufen. Allenfalls ist es sinnvoll, neben der Timer-Zeit für den jeweils aktuellen Fall noch "altzeit" und "neuzeit" festzuhalten (oder andere Variante), um den Überlauf von einer auf die andere Sekunde mitzukriegen.