Forum: Mikrocontroller und Digitale Elektronik Grenze bei Impulse zählen?


von FlobiFlob (Gast)


Lesenswert?

Hallo,

wo liegt die Grenze der maximal erfassbaren Impulse bei einem ATmega 644 
wenn man ihn mit 18 MHz betreibt?

Ich möchte über den 16bit Timer Impulse zählen...

GEht das dann bis 18 MHz oder wo ist die Grenze???

Danke für eine Antwort...

von Purzel H. (hacky)


Lesenswert?

Naja. Der Puls muss mindestens einen clock tief sein und mindestens 
einen clock hoch, allenfalls steht im Datenblatt mehr.

von Florian M. (micro-flo)


Lesenswert?

Du brauchst auch noch Rechenzeit, um die Impulse zu verarbeiten.

Ich weiß nicht genau, was Du machen willst aber für maximale 
Geschwindigkeit würde ich es so machen:

Timer starten mit Interrupt, der eine globale Variable (z.B. globvar) 
auf 0 setzt.

Eine Schleife mit while (globvar), in der Du die Impulse zählst.

Sobald der Timer abgelaufen ist, setzt er die Variable, deine Schleife 
endet und Du weißt, wieviele Impulse in der Timerzeit aufgetreten sind.

Jetzt kannst Du im Datenblatt schauen, wieviele Zyklen jede dieser 
Operationen braucht, die 18MHz dadurch teilen und Du hast deine maximal 
erfassbare Frequenz.
Ausm Bauch dürfte das weit unter 1MHz liegen.

Es gibt MCUs, die eine PWM automatisch lesen, wie z.B. der STM32.
Da der auch gleich mit 72MHz läuft, geht da einiges mehr.

von FlobiFlob (Gast)


Lesenswert?

Hallo,

den Timer 2 kann man ja zum zählen von Flankenwechsel verwenden. Das 
würde ich gerne machen. Doch sicher gibt es irgendwo eine Grenze die 
durch den Takt der CPU begrenzt wird???

Werde wohl mit einer 18MHz CPU bestimmt nicht mehr als 18MHz zählen 
können oder? Also direkt ohne Vorteiler und der gleichen...

Ich habe das Datenblatt bereits mal angesehen aber wenn ich ehrlich bin 
habe ich keinen Schimmer unter welchen Punkt man da suchen muss. Timer2 
der 16bit Timer war mein Abschnitt bisher.

Vielen Dank!

von Falk B. (falk)


Lesenswert?

@  FlobiFlob (Gast)

>den Timer 2 kann man ja zum zählen von Flankenwechsel verwenden.

Kann man machen.

>würde ich gerne machen. Doch sicher gibt es irgendwo eine Grenze die
>durch den Takt der CPU begrenzt wird???

Sicher.

>Werde wohl mit einer 18MHz CPU bestimmt nicht mehr als 18MHz zählen
>können oder? Also direkt ohne Vorteiler und der gleichen...

Es sind weniger als 9 MHz. Denn das externe Siganl wird mit dem CPU-Takt 
abgetastet und synchronisert. D.h. die LOW sowie HIGH Zeit muss 
MINDESTENS so lang wie ein Taktzyklus der CPU sein, eher noch etwas 
mehr.
Real eher 4MHz oder so.

>Ich habe das Datenblatt bereits mal angesehen aber wenn ich ehrlich bin
>habe ich keinen Schimmer unter welchen Punkt man da suchen muss.

Ist nirgendswo direkt beschrieben. Aber beispielsweise beim Thema 
externes Takten des SPI per XCK steht dort eindeutig, dass die externe 
Taktfrequenz max. 1/4 des internen Taktes betragen darf.
Genauso wie bei ISP bei Programmieren.

MFG
Falk

P S Um einen brauchbaren Frequenzzähler zu bauen braucht es aber noch 
mehr, denn man muss den Zähler definiert anhalten und auslesen könen.

von MaxF (Gast)


Lesenswert?

Hallo FLobi,

ich habe gerade nur das Datenblatt des ATMega8(L) vorliegen, aber 
grundsätzlich gilt das folgende für alle Counter Funktionen von den 
ATMega's (Kapitel Timer/Counter and Prescalers - External Clock Source):

"Each half period of the external clock applied must be longer than one 
system clock cycle to ensure correct sampling. The external clock must 
be guaranteed to have less than half the system clock frequency (fExtClk 
< fclk_I/O/2) given a 50/50% duty cycle. Since the edge detector uses 
sampling, the maximum frequency of an external clock it can detect is 
half the sampling frequency (Nyquist sampling theorem). However, due to 
variation of the system clock frequency and duty cycle caused by 
Oscillator source (crystal, resonator, and capacitors) tolerances, it is 
recommended/ that maximum frequency of an external clock source is less 
than fclk_I/2.5."

In deinem Fall bedeutet das also du kannst maximal (bei Verwendung der 
"Capture" Funktion (T0/T1 Pin)) 18MHz/2,5 = 7,2 MHz erfassen. 
Theoretisch aber durchaus 9MHz. Schneller kannst du mit externen dig. 
Bausteinen werden (ext. Zähler, etc.). Guck einfach mal hier im Forum.

Gruß,
Max

von spess53 (Gast)


Lesenswert?

Hi

>Ich habe das Datenblatt bereits mal angesehen aber wenn ich ehrlich bin
>habe ich keinen Schimmer unter welchen Punkt man da suchen muss. Timer2
>der 16bit Timer war mein Abschnitt bisher.

Es gibt auch noch AppNotes:

http://www.atmel.com/dyn/resources/prod_documents/doc2505.pdf

Unter 'External Clocking'.

MfG Spess

von FlobiFlob (Gast)


Lesenswert?

Besten Dank für Eure Hilfe!!!

Grüße FlobiFlob

von oszi40 (Gast)


Lesenswert?

Man liest da oben "The CPU needs at least two cycles to detect a 
pin-change, so the maximum external clock frequency is therefore CK/2."

Wenn der Prozessor noch was tun soll, wird er dann wohl meeehr 
Rechenzeit brauchen...

von spess53 (Gast)


Lesenswert?

Hi

>Wenn der Prozessor noch was tun soll, wird er dann wohl meeehr
>Rechenzeit brauchen...

Ein Timer zählt auch ohne Rechnen weiter.

MfG Spess

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

spess53 schrieb:
> Ein Timer zählt auch ohne Rechnen weiter.
Und ein Zähler zählt sogar ohne Timer weiter... ;-)

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.