Wechselblinker für eine Signaleinrichtung
     

Problembeschreibung
Schriftliche Problemlösung
Technische Aspekte zur Problemlösung
Grafische Problemlösung
Umsetzung in den Quelltext

inhalt

an den Anfang
Problembeschreibung

Für eine Signaleinrichtung ist eine Wechselblinkeransteuerung
zu programmieren.

Durch ein kurzzeitiges Drücken eines Tasters blinken zwei Leuchten
im Wechsel von einer Sekunde (eine Leuchte ist jeweils eine Sekunde an).

Ein erneutes kurzzeitiges Drücken des Tasters beendet das "Wechselblinken".


Bildquelle:policecars
an den Anfang
Schriftliche Problemlösung

Das technische Problem wird mit dem ATmega8 von Atmel gelöst.

Der Taster wird mit dem Port C2 verbunden. Die Ports D6 und D7
steuern die zwei Leuchtdioden an.


Technische Aspekte zur Problemlösung

Die Eingabe soll über einen der Taster erfolgen. Damit ist für den gewählten Port C2 der Pull-Up-Widerstand zu aktivieren.
Bei offenem Taster liegt dann an Port C2 ein High-Pegel ( Pull Up,
logisch 1 ) an. Wird der Taster geschlossen, zieht er den Pegel auf
Low ( logisch 0 ). Wird der Taster losgelassen, öffnet dieser sich und der Pegel geht wieder auf High (Pull-Up, logisch 1).

Die Ausgabe erfolgt an zwei LEDs, die mit den Ports D6 und D7 verbunden
sind.
  
an den Anfang
Grafische Problemlösung



PAP von Kleine/Kneip/Krawczyk <<Klick>>    download (.rar)




 
  
an den Anfang
Umsetzung in den Quelltext

wechselblinker.txt

 

Um die genauen Werte für die Warteschleifen zu ermitteln muss man erst einmal im Unterpunkt Prozessor im AVR-Studio die " Stop Watch " finden. Nun muss man durch Einzelschritte in die Schleife. Ist man nun in der Schleife angekommen öffnet man das " Watch Fenster " in dem man seine Variable einfügt. Nun kann man sehen das die Variable beim durchlaufen der Schleife erhöht. Um den genauen Wert für 1 Sekunde zu ermitteln muss nun die " Stop Watch " reseted werden. Danach durchläuft man die Schleife solange bis die Variable um 1 erhöht wurde. Die Zeit die die " Stop Watch " nun anzeigt ist genau die Zeit die der Controller braucht um z.  B. i um 1 zu erhöhen. Nun teilt man 1 Sekunde durch z. B. 11 µs Sekunden und erhält so den Wert für eine Sekunde. In unserem Quelltext werden auch 2 verschiedene Werte verwendet. Dies liegt daran, dass es 2 verschiedene Schleifen sind deren durchlauf in der einen durch eine zusätzliche if-Schleife verlängert wird. Somit dauert ein Durchlauf i + 1 in dieser Schleife länger und die " Wartewerte " sind verschieden.

Hier noch ein kleines Bild.

In der folgenden Anleitung wird nochmals erklärt, wie die Wartezeit ermittelt wird:
Anleitung 4:  Zähler und Tastenentprellung (Entwurf)   (.pdf)   (.doc)

© Marc & SeB

  


05.03.2007