Forum: Mikrocontroller und Digitale Elektronik atmega256rfr2 externen Pulsgeber zählen


von Wittich (Gast)


Lesenswert?

Hallo,
ich habe eine Frage und zwar habe ich einen externen Pulsgeber an dem 
Port PE3 angeschlossen. Ich möchte nun messen/zählen wie oft ein Puls 
gegeben wurde.
Kann mir jemand vielleicht helfen bitte?

Ich habe auch schon etwas ausprobiert aber da passiert nichts.

TCCR1A = 0;
TCCR1B= (1<<PE3);
_delay_ms(100);
z= TCNT1
return z;


Vielen Dank schonmal

von Karl H. (kbuchegg)


Lesenswert?

Wittich schrieb:
> Hallo,
> ich habe eine Frage und zwar habe ich einen externen Pulsgeber an dem
> Port PE3 angeschlossen. Ich möchte nun messen/zählen wie oft ein Puls
> gegeben wurde.
> Kann mir jemand vielleicht helfen bitte?
>
> Ich habe auch schon etwas ausprobiert aber da passiert nichts.
>
> TCCR1A = 0;
> TCCR1B= (1<<PE3);

Äh. Nein.
So geht das nicht.
Du kannst nicht einfach irgendeinen Pin nehmen und dann wild einem 
Register zuweisen. Du wirst schon im Datenblatt nachlesen müssen, an 
welchem Pin du einen externen Takt für den Timer 1 zuführen kannst.
Und dann stellst du für diesen Timer bei den Prescaler Eigenschaften 
ein, dass du auf diesen externen Takt zurückgreifen möchtest.

Hilft nichts. Du wirst dich wohl oder übel mit den Timern beschäftigen 
müssen.

von Wittich (Gast)


Lesenswert?

Könnte ich vielleicht einen Tipp bekommen, weil ich bin komplett neu 
hier und weiß nicht einmal, wie man am besten vorgehen soll. :/

Also im Datenblatt steht, bei PE3 wo der Pulsgeber angeschlossen ist 
folgendes:
PE3:OC3A:AIN1.

Desweiteren steht dort:
AIN1/OC3A (Analog Comparator Negative Input or Output Compare and PWM 
Output A
for Timer/Counter3) zu dem Pin PE3.


Was muss ich jetzt noch angucken?
Also muss ich den Timer3 benutzen oder verstehe ich das falsch?

Vielen Dank für Ihre Hilfe

von Karl H. (kbuchegg)


Lesenswert?

Wittich schrieb:
> Könnte ich vielleicht einen Tipp bekommen, weil ich bin komplett neu
> hier und weiß nicht einmal, wie man am besten vorgehen soll. :/
>
> Also im Datenblatt steht, bei PE3 wo der Pulsgeber angeschlossen ist
> folgendes:
> PE3:OC3A:AIN1.

Das interessiert aber keinen.
Wenn du den Timer 1 benutzen willst, dann musst du beim Timer nachsehen 
an welchem Pin der seinen externen Takt erwartet!

Du kannst bei AVRs nicht einfach irgendeinen Pin benutzen. Was ein Pin 
kann ist dir vorgegeben. Und du brauchst den Pin, an dem du dem Timer 
einen externen Takt vorgeben kannst.

Mal kurz nachdenken. Beim Pin PE3 steht also

* AIN1/OC3A (Analog Comparator Negative Input

Hat der Timer irgendwas mit dem Analog Comperator (der Spannungen 
miteinander vergleicht) zu tun? Wohl eher nicht.

* or Output Compare and PWM Output A for Timer/Counter3)

Da steht klar und deutlich Output. Ist ein Takteingang für einen Timer 
als Output zu klassifizieren? Nicht wirklich. Ich benutz ja schon die 
ganze Zeit das Wort 'Takteingang'. Output ist das genau Gegenteil von 
'Eingang'. Output bedeutet: da kommt etwas heraus. Du willst aber das 
genaue Gegenteil: du willst etwas in den µC hineinbringen. Also wird 
wohl ein Output Pin nicht das sein was du suchst.

von Karl H. (kbuchegg)


Lesenswert?

Aber vielleicht ist ja auch die ganze Idee, dafür einen Timer/Counter 
einzusetzen schon gar nicht das gelbe vom Ei. Was solls denn werden?

von Karl H. (kbuchegg)


Lesenswert?

Hinweis.
Das 'n' in der Timer bzw. in der Prescalerbeschreibung wie zb hier
1
18.3 External Clock Source
2
An external clock source applied to the Tn pin can be used as
3
                                       ****
4
Timer/Counter clock (clkTn). ....
steht für die Nummer der Timers. Wenn du also den Clock Eingang für den 
Timer 1 suchst, dann brauchst du den Pin, bei dem T1 dabei steht. Der 
Clock Eingang für den Timer 3 wäre der Pin, bei dem T3 dabei steht usw. 
usw.

Für den Timer 1 wäre das der Pin PD1. Von dort und nur von dort kannst 
du den Timer mit einem externen Takt versorgen und ihn so als Pulszähler 
benutzen.

von Karl H. (kbuchegg)


Lesenswert?

Und dann studierst du noch die Tabelle 17-6 auf Seite 157 des 
Datenblattes. Das sagt dir, welche CS-Bits du im Register TCCR1B wie 
setzen musst, damit der Timer seinen Zähltakt nicht vom interenen 
Systemtakt sondern eben genau von diesem Pin für den externen Takt 
bezieht.

von Wittich (Gast)


Lesenswert?

Ja also ich habe in der Schule ein Projekt und wir haben einen "liquid 
flow meter - plastic 1/2 nps threaded" bekommen und sollen ermitteln 
wieviel Wasser durch ein Rohr fließt.

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.