Forum: Mikrocontroller und Digitale Elektronik Interner Takt


von P. F. (pfuhsy)


Lesenswert?

Hallo,

ich beschäftige mich schon seit längeren mit den µC. Jetzt hab ich mal 
testweise mein Ossi an ein Port gelegt welches einfach nur im Takt 
wechselt.
Wie kann das sein das der µC (ATtiny13) mit eingestelltem internen Takt 
von 128kHz einen Takt von 20kHz messe und bei einen eingestellten Wert 
von 9,6MHz,  1,5 MHz ? Hab ich ein Denkfehler ? Das sind doch keine 
Toleranzen !

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Peter F. schrieb:
> einen Takt ... messe

An welchem Pin?

von spess53 (Gast)


Lesenswert?

Hi

>Das sind doch keine Toleranzen !

Mit welchem Programm?

MfG Spess

von P. F. (pfuhsy)


Lesenswert?

Ich messe an den Port wo die LED hängt.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Und was bringt den Port dazu, "im Takt zu wechseln"?

Läuft da vielleicht ein Programm, das den Port hin- und herschaltet?

von holger (Gast)


Lesenswert?

>Wie kann das sein das der µC (ATtiny13) mit eingestelltem internen Takt
>von 128kHz einen Takt von 20kHz messe und bei einen eingestellten Wert
>von 9,6MHz,  1,5 MHz ?

Das sind die Zeiten die deine Befehle brauchen um
ausgeführt zu werden. Jede Programmzeile verbraucht Zeit.

von P. F. (pfuhsy)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Und was bringt den Port dazu, "im Takt zu wechseln"?
>
> Läuft da vielleicht ein Programm, das den Port hin- und herschaltet?
Ja. Ganz einfach Programm in der Hauptschleifen, weölche den Port 
einschalten und direkt wieder ausschaltet.

Vielleicht hab ich nicht richtig ausgedrückt. Ich habe eigentlich 
erwartet, dass meine LED mit den eingestellten Wert blinkt (128kHz oder 
9,6MHz).

von holger (Gast)


Lesenswert?

>Vielleicht hab ich nicht richtig ausgedrückt. Ich habe eigentlich
>erwartet, dass meine LED mit den eingestellten Wert blinkt (128kHz oder
>9,6MHz).

Dann dürfte dein CPU pro Befehl genau 0 Zeit verbrauchen.
Das heisst sie ist unendlich schnell. Da liegst du aber
ganz weit daneben.

von P. F. (pfuhsy)


Lesenswert?

Ist das falsch wenn ich denke ?
1. Programmzeile (ca. 7,8µs, bei 128kHz)
2. Programmzeile weitere 7,8µs
usw.

von Michael K. (Gast)


Lesenswert?

Peter F. schrieb:
> Ich habe eigentlich
> erwartet

Dann schau Dir das compilierte ASM Listing an, schnapp Dir das 
Datenblatt und schreibe mal hinter jeden ASM Befehl der ausgeführt wird 
die Taktzyklen die der zur Abarbeitung braucht. Du wirst sehen das Du 
auf die reale Frequenz kommst.
Deine Vorstellung von den Abläufen in der MCU ist defekt und nicht der 
Oszillator.

von P. F. (pfuhsy)


Lesenswert?

Ok. Dann heißt das im umkehrschluss, dass ich auch keinen "vollen" Takt 
am Port erwarten kann.

von holger (Gast)


Lesenswert?

>Ok. Dann heißt das im umkehrschluss, dass ich auch keinen "vollen" Takt
>am Port erwarten kann.

Richtig.

von Peter II (Gast)


Lesenswert?

Peter F. schrieb:
> Ok. Dann heißt das im umkehrschluss, dass ich auch keinen "vollen" Takt
> am Port erwarten kann.

wenn überhaupt dann maximal den halben Takt. Denn in einem Takt kann ja 
nur ein Befehl abgearbeitet werden. Und mit einem Befehl kann man nicht 
einen Kompletten Takt ausgeben.

von P. F. (pfuhsy)


Lesenswert?

Ok danke.
Ich werde mir das ganze bei Gelegenheit mal als Assembler angucken.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Peter F. schrieb:
> Ja. Ganz einfach Programm in der Hauptschleifen, weölche den Port
> einschalten und direkt wieder ausschaltet.

In welcher Programmiersprache ist das geschrieben?

Quelltext?

von P. F. (pfuhsy)


Lesenswert?

In C über AVR-Studio.

von spess53 (Gast)


Lesenswert?

Hi

>Ist das falsch wenn ich denke ?
>1. Programmzeile (ca. 7,8µs, bei 128kHz)
>2. Programmzeile weitere 7,8µs
>usw.

Das gilt noch nicht einmal für Assembler, da ein Assemblerbefehl auch 2 
oder mehr Takte dauern kann. Und z.b in C kann eine Zeile auch mehrere 
Assemblerbefehle erzeugen.

MfG Spess

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Peter F. schrieb:
> In C über AVR-Studio.

Würmer? Nase? Quelltext?

Und sieh Dir dann mal an, was Dein Compiler daraus für Assemblercode 
erzeugt.

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.