Forum: Mikrocontroller und Digitale Elektronik Binärzähler clearen


von A. M. (skugga87)


Lesenswert?

Hallo,

wenn ich einen Binärzähler clearen will, toggle ich dann den Pin an dem 
die CLR Eingänge des BZ hängen? Wie müsste ich das in C direkt umsetzen?

Muss ich dann bevor ich das tue die Interrupts deaktivieren?


Vielen Dank im Voraus
skugga



edit
Nutze ein Mega32. CLR hängt am T0/CLK (PB0).

: Bearbeitet durch User
von Klaus W. (mfgkw)


Lesenswert?

welchen Binärzähler?

Vrmtl. musst du CLR setzen und wieder loslassen (also 1 ausgeben, kurz 
danach 0).
Wie lange, sollte eigentlich auch dem Datenblatt hervorgehen.

von A. M. (skugga87)


Lesenswert?

Ich nutze den 74HC393 als Prescaler. Möchte ihn nach jeder Messphase 
löschen um keine falschen Bits auszulesen.

Funktioniert das trotzdem über Togglen?

von Karl H. (kbuchegg)


Lesenswert?

Schau.
Dem 74HC393 ist das doch völlig wurscht, wer da an seinen Pins 
rumfummelt.
Im Datenblatt steht dass dieser CLR Eingang normalerweise auf 0 Pegel 
liegt und wenn der Pin auf High-Pegel wechselt, dann wird der Zähler 
gelöscht.

Der IC schert sich nicht drum, wer oder was diese Pegelwechsel auslöst. 
Ob das ein Taster ist, oder ein Optokoppler, ob das ein Relais ist oder 
auch der Ausgang eines µC. Sobald der Eingangspin des 393 von logisch 0 
auf logisch 1 wechselt, wird der Zähler gelöscht.

Und genau das kannst du mit deinem µC machen. Die beiden Pins sind 
miteinander verbunden und das was du per Programm am µC-Ausgangspin 
ausgibst, das erscheint beim 393 am Eingangspin.

Ergo ....
Du weißt, wie man es in C schreibt, so dass ein bestimmter auf Ausgang 
geschalteter Pin 0 Pegel einnimmt? Du weißt, wie man es in C schreibt, 
so dass ein bestimmter auf Ausgang geschalteter Pin einen 1 Pegel 
einnimmt?
Dann weißt du auch, wie die Anweisungen aussehen müssen, damit der Pin 
von seinem Grundzustand 0 auf 1 und dann wieder zurück auf 0 wechselt 
(damit der Pin dann wieder auf seinem Grundzustand ist).
Da der 393 im Nanosekundenbereich reagiert, brauchst du noch nicht mal 
auf das Timing aufpassen. Einfach den Pin auf 1 und danach wieder zurück 
auf 0 und der Zähler ist auf 0 zurückgestellt.

: Bearbeitet durch User
von A. M. (skugga87)


Lesenswert?

Top!

Ja das setzen  kriege ich hin. Nur, dass ich danach den Grundzustand 
wieder geben muss, hab ich nich dran gedacht.

Wie sieht das mit den Interrupts nun aus? Sollten doch dafür deaktiviert 
werden, oder?

Vielen Dank dafür!

: Bearbeitet durch User
von Dietrich L. (dietrichl)


Lesenswert?

A. M. schrieb:
> Wie sieht das mit den Interrupts nun aus? Sollten doch dafür deaktiviert
> werden, oder?

Das hat mit dem Vorgang "Reset 74HC393" nichts zu tun. Wenn ein 
Interrupt dazwischen kommt, wir das Reset-Signal höchsten länger. Die 
Funktion "Reset" wir dadurch aber nicht beeinflusst.

Wenn in der Situation allerdings in der Interrupt-Routine der Zähler 
weiter gezählt wird, hat das Zählen natürlich keine Wirkung. Der Zähler 
steht auf "Reset". Ob dieser Fall jedoch für die Anwendung relevant ist, 
weißt nur Du.

Gruß Dietrich

von Erwin (Gast)


Lesenswert?

Liest du den Zählerstand in einer Interrupt-Routine aus?
Dann schalte gleich danach einen Port-Pin auf CLR-Pegel
und gleich danach wieder auf den anderen Pegel.

Bei 8 MHz µC-Takt ist das ausreichend.

von A. M. (skugga87)


Lesenswert?

Erwin schrieb:
> Liest du den Zählerstand in einer Interrupt-Routine aus?
> Dann schalte gleich danach einen Port-Pin auf CLR-Pegel
> und gleich danach wieder auf den anderen Pegel.
>
> Bei 8 MHz µC-Takt ist das ausreichend.


Mein Systemtakt ist 16MHz, und ja ich wollte das direkt in der ISR tun.

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.