PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eingangsimpulse zählen



Xeus
02.09.2004, 17:39
Hallo,
weiß einer von euch wie ich das in Bascom Programmieren muss, dass er einen Eingangsimpuls zählt, und sich diese in einer Variablen merkt.
Nach z.B. Tausend solcher Impulse, soll er dann auf einem Disp immer von '0' beginnend um eins erhöhen.

Wär um jede Hilfe dankbar

recycle
02.09.2004, 17:45
weiß einer von euch wie ich das in Bascom Programmieren muss, dass er einen Eingangsimpuls zählt, und sich diese in einer Variablen merkt.

Guck dir einfach mal das Beispielprogramm Int0.bas an, das bei Bascom dabei ist. Das macht schon fast genau das was du haben willst.

Xeus
02.09.2004, 18:11
Danke, aber wie Funzt des genau,

-dass er die Impulse am Eingang zählt.

- Wie mach ich das, dass sich die Zahl nach tausend Impulsen um eins erhöt??

02.09.2004, 20:49
Indem du die Impulse in einer Variablen in der ISR hoch zählst und bei 1000 einfach du Variable auf Null setzt und eine zweite Variable inkrementierst.
So schwierig?
Kann zwar kein BASCOM sondern nur C, das Prinzip sollte aber funktionieren.

recycle
03.09.2004, 00:05
Danke, aber wie Funzt des genau,
-dass er die Impulse am Eingang zählt.


Genau das wird doch in dem Beispiel int0.bas gemacht, nur halt bis 2 statt bis 1000. Die 2 durch eine 1000 zu ersetzen bekommst du doch sicher alleine hin.



Rem The Interrupt Handler For The Int0 Interrupt
Int0_int:
Incr Count
If Count = 2 Then
Print "Int 0 occured"
Count = 0
End If
Rem You Can Perform More Actions Here
Return



- Wie mach ich das, dass sich die Zahl nach tausend Impulsen um eins erhöt??

Indem du statt dem Befehl Print "Int 0 occured" einfach deine Zählervariable um 1 erhöhst.
Wenn deine Zählervariable z.B. zaehler heisst, heissst der entsprechende Befehl Incr zaehler


Die ganze Aktion funktioniert natürlich nur, wenn due als Eingang einen Pin mit Hardware Interrupt verwendest.
Wenn an diesem Pin dann das Signal wechselt wird immer automatisch die Routine Int0_int: aufgerufen.

Bau einfach erst mal deine Schaltung auf und lade das Beispiel int0.bas in den Controller. Wenn das dann funktioniert kannst du das Programm weiter anpassen.