Hy Leute,
ich bin so langsam am verzweifeln. Ich muss für die Schule ein Projekt
machen und dazu will ich die Drehzahl des Lüfters 3 Sekunden lang
ermitteln und auf einem LC-Display ausgeben. Dahinter wird einfach noch
eine "0" gehängt. Der Lüfter liefert zwei HIGH-Signale pro Umdrehung und
ist ein Lüfter von Arctic-Cooling.
Der bisherige Quellcode schaut so aus:
Die LCD Ansteuerung darf euch nicht verwundern, da die Befehle in einem
anderen, bereits vorhandenen Programm aufgeführt sind, welches von der
Schule ist.
Das Signal hängt mit einem 10k-Ohm Pull-Up widerstand an +5V, ergibt auf
dem Oszi eine Flanke wie aus dem Bilderbuch.
Das Problem:
Die Werte die auf dem Display ausgeben werden springen von 00 bis 2500
U/min, wobei die Lüfter Laut Hersteller nur max. 1500U/min laufen.
Außerdem wurde der Lüfter mit 5V betrieben.
Interrupts kommen nicht in Frage, da ich damit nur 2 Ports ansteuern
kann aber 4 Lüfter betreiben möchte.
Hoffe ihr könnt mir helfen und bin für jede Anregung dankbar.
greetz fluk3
2 sachen, die mir eingefallen sind.
ersma, aus Schleifen raus und wieder reinspringen ist suboptimal
(neudeutsch für Scheiße, sorry, aber bleib geschmeidig)
zweitma, ich weiß nicht, wielange der Konatakt/Impuls stehen bleibt,
aber es kann sein, daß ein Impuls nicht nur einmal sondern in der
innersten der inneren Schleifen mehrfach abgefragt wird (JB
irgendwohin). Besser wäre es, anstatt der Impulse die Flanken zu zählen,
also vergleichen, ob Eingangspin vorher 0 war und jetzt 1 ist, dann ADD
A,#01h ausführen. Somit zählst du die steigenden oder fallenden Flanken
und das ist sicherer als als die Impulsbreite mitzumessen.
Hope it helps.
- Hegy