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 !
Und was bringt den Port dazu, "im Takt zu wechseln"? Läuft da vielleicht ein Programm, das den Port hin- und herschaltet?
>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.
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).
>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.
Ist das falsch wenn ich denke ? 1. Programmzeile (ca. 7,8µs, bei 128kHz) 2. Programmzeile weitere 7,8µs usw.
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.
Ok. Dann heißt das im umkehrschluss, dass ich auch keinen "vollen" Takt am Port erwarten kann.
>Ok. Dann heißt das im umkehrschluss, dass ich auch keinen "vollen" Takt >am Port erwarten kann. Richtig.
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.
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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.