Forum: Mikrocontroller und Digitale Elektronik Nacheinanderschalten von Ports


von Sebi (Gast)


Lesenswert?

Hallo,
ich habe einen Reseteingang. Wenn ich diesen Betätige soll eine
Reihenfolge von Ausgängen im 1 Sekundentakt angesteuert werden. Welche
Lösungen schlagt ihr vor?
1. Sehr primitiv mittels delay die gewünschten Ports freischalten?
2. Mittels Timer die Werte aufrufen?
3. eine andere schöne Lösung.
Die Reihenfolge der Ausgangsport ist immer gleich.

von Jens K. (digger71)


Lesenswert?

Hallo Sebi,

falls der Prozessor keine anderen Aufgaben hat,
reicht wohl eine Lösung mit Delay.
Dann müsste man
-  das Delay als Subroutine anlegen
1. Die Ports initialisieren
2. In einer Endlosschleife
   -ersten Ausgang setzen
   -Delay aurufen
   -ersten Ausgang zurücksetzen
   -zweiten Ausgang setzen
   - Delay aufrufen
   ...
  - letzen Ausgang setzen
  - Delay aufrufen
  - letzten Ausgang zurücksetzen
3. zum Anfang der Schleife springen.

Eleganter ist eine Lösung mit Timer und Interrupt.
Dazu einen Timer laden (wenn es Taktfrequenz und
Vorteiler zulassen mit einem Wert für eine Sekunde.
(t=Taktperiode Timereingang  Vorteiler  Ladewert)

Bei jedem Interrupt den Nächsten Ausgang ansteuern
und den Timer nachladen.
Hat der Timer eine kürzere max.Periode,(z.B 0,2sec) einfach
im Interrupt eine Variable hochzählen,
Im Hauptprogramm den nächsten Ausgang ansteuern,
wenn diese Variable einen bestimmten Wert erreicht(z.B.5)hat
und diese Variable löschen.

Gruss
Digger

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.