Forum: Mikrocontroller und Digitale Elektronik Probleme mit Programm für Drehzahlmesser


von Matthias Pues (Gast)


Angehängte Dateien:

Lesenswert?

Hi,
ich habe bzw. wollte einen Drehzahlmesser für einen Elektromotor (mit
Rotor)bauen, der mit einem MC und einer Lichtschranke funktioniert. Der
MC (erstmal ein Mega8) zählt die Anzahl der externen Interrupts pro
Sekunde, ausgelöst durch die Lichtschranke, die unterbrochen wird. (in
dieser Fall löst der ext. Interrupt bei rising edge aus). Die Sekunde
wird durch einen Timer bestimt,der die Messung beendet. Der ermittelte
Wert, für höhere Drehzahlen in einem Registerpaar gespeichert, wird mit
60, bzw. bei einem 2-blättrigen Rotor mit 30 multipliziert und dann in
5 ASCII-Zeichen umgewandelt, die per UART/serielle Schnittstelle an
Hyperterminal gesendet werden. Zunächst funktionierte es nicht, es
kamen keine Signale am PC an. Als ich jedoch während des
Timerinterrupts, d.h. der Multiplikation, des Umwandelns und des
Sendens(welches glaube ich zu lange dauerte, schon eine neue Sekunde
verstrichen war) die Interrupts deaktiviert habe, sendete der Mc schön
"brav" nullen an Hyeperterminal.
Den ExtInterrupt habe ich erstmal mit einem taster (wie auch im
Tutorial) auf masse gezogen, und mit dem loslassen des tasters dann
ausgelöst.
Nun das Problem: Bei dem ersten Test gab es schon einen fehler, nach
den ersten 15 zeichen, (den ersten 3 Nullen) kam eine "wilde"
zeichenkette, danach funktionierte es scheinbar korrekt, bei einmaligem
drücken des tasters gab es den wert 60, bei schnellem drücken 120 etc,
(zu erwarten: vielfache von 60).
Beim zweitenm versuch sah die zeichenkette nur noch so aus:
    0    0    0  0019{pi (nun etliche sprünge aus dem sichtfenster)
¬c?A& `(?? 
                ¹<ébLK¡!  180  300  300  300  300  300  300  300  300
 300  300  300  300  300  300 usw.
außerdem "hängte" sich das pogramm immer nach ungefähr 10 Zeilen
auf(auch im ertsen Versuch), der Mc sendete gar nicht mehr.

Es wäre nett, wenn jemand meinen code durchsehen könnte, oder mir sagen
kann, woran der fehler liegen kann. Er mag vielleicht etwas umständlich
sein, es ist eines meiner ersten programme.
Dank im Voraus,
Matthias

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.