Hi! Bin neu und hab mal ne ganz blöde Frage. Und zwar wenn ich an meinem µC einen Quarz von 12 NHZ dran habe,heisst das dann das mein Controller in einer Sekunde dann 12000000 Zyklen hat. Heron24
Heron24 schrieb: > Quarz von 12 NHZ Sofern NHZ keine neue Einheit darstellt, macht arbeitet dein uC mit 12.000.000Takten pro Sekunde - das heisst aber nicht, dass er 12.000.000 Instruktionen/s verarbeitet.
Das hängt von der konkreten CPU ab. Beim den 8-Bit AVRs von Atmel gibt es noch Teilerfaktoren die aber auch 1 sein können (Siehe z.B. CKDIV8-Fuse). Bei anderen uCs mag es andere /zusätzliche Einstellmöglichkeiten geben. Genauen Aufschluss gibt das Datenblatt.
Das heisst also bei einem Teilungsfaktor von 1 Habe ich dann 12000000 Zyklen? Das es keine 12000000 Instruktionen gibt ist ja klar da ja nicht jede Befehl 1 Zyklus benötigt sondern mehr. Heron24
>Das heisst also bei einem Teilungsfaktor von 1 Habe ich dann 12000000 >Zyklen? Wenn, dann 12 Millionen Zyklen pro Sekunde. Die Antworten auf diese Frage hängt, wie gesagt von der konkreten CPU ab und da wiederum davon wie die evtl. vorhandenen Teiler gesetzt sind. Es wäre villeicht hilfreich, wenn Du schreibst, warum Du das wissen willst. Dann könnte man gezielter antworten. >Das es keine 12000000 Instruktionen gibt ist ja klar da ja nicht jede >Befehl 1 Zyklus benötigt sondern mehr. Das ist so nicht gesagt. Es hängt von der CPU ab. Es gibt durchaus welche, die nur 1-Zyklus-Befehle haben.
Gut. Was Du wissen willst steht im Datenblatt unter der Überschrift Instruction Execution Timing und im Instruction Set. Der ATMega32 hat keinen weiteren Taktteiler. Also: bei 12MHz Takt 12 Mio. Zyklen pro Sekunde. Eine Bitte für weitere Fragen hier: Bitte gib alle Dir bekannten Details und Bedingungen an. Da Du Anfänger bist, wird das sicherlich nicht immer vollständig sein, aber es hilft dennoch einige Nachfragen zu ersparen. In diesem Fall hätte "ATMega32" und "Warteschleifen" schon klargemacht wie man die antworten sollte.
Sorry. Es muss natürlich heissen: "In diesem Fall hätte "ATMega32" und "Warteschleifen" schon klargemacht wie man Dir hätte antworten sollen".
Was ist denn deine Anwendung? Möchtest du eine Uhr bauen und brauchst eine Sekunden-Warteschleife? Oder das Timing eines Protokolls einhalten? Vielleicht ist der Ansatz einer Warte-SCHLEIFE auch komplett daneben und du solltest das Ganze grundlegend überdenken. Die beste Methode um Wartezeiten zu generieren ist vielen Fällen immer noch ein Timer! So kannst du während der Wartezeit auch noch sinnvolle Aufgaben erledigen und verplemperst deine Zeit nicht in einer leeren Schleife. Wenn es schnell gehen muss, dann sieh dir die Funktion _delay_ms() und _delay_us() aus "delay.h" an. Die sind "ausreichend" genau, je nach Anforderung.
Ich möchte ein DMX Signal nachbilden für ein Lichtmischpult.Ich hätte vielleicht noch erwähnen sollen das ich in Assembler programmiere Heron24
Heron24 schrieb: > Es geht darum Warteschleifen zu programmieren mit dem ATMEGA32 die sehr > genau sind. Haha ein Spaßvogel... man könnte auch sagen: 'und wovon träumst du Nachts ?'
Hi
>Haha ein Spaßvogel...
Eher du. Wenn ich will, mache ich die auf den Takt genau.
MfG Spess
Grundsätzlich hat Captain Subtext recht. An sich benutzt man, ausser in Sonderfällen, keine Verzögerungen die auf der Abarbeitung von Befehlen nur um deren Verarbeitungszeit willen beruht ohne das das Ergebnis irgendeine Rolle spielt. Das nennt man übrigens "Busy-Waiting". Vielmehr benutzt man Timer. Das hat den Vorteil, das man, während die Wartezeit abläuft noch andere Dinge tun kann. Z.B. Zeichen empfangen, irgendwas berechnen, etcpp. Du schreibst leider nicht welche Vorerfahrungen hast. Schreib doch mal was dazu. Wie lange programmierst Du schon und in welchen Sprachen? Was hast Du schon geschrieben?
spess53 schrieb: > Hi > >>Haha ein Spaßvogel... > > Eher du. Wenn ich will, mache ich die auf den Takt genau. > > MfG Spess Aber nicht in C und auch nicht im Inlineassembler - außerdem bräuchte man dazu erstmal eine vernünftige Taktquelle. Und: Ein Quarzosziallator von Reichelt ist keine !
Hi >Aber nicht in C und auch nicht im Inlineassembler Wo steht denn hier etwas von C? >außerdem bräuchte >man dazu erstmal eine vernünftige Taktquelle. >Und: Ein Quarzosziallator von Reichelt ist keine ! Rate mal, weshalb ich 'auf den Takt genau' geschrieben habe? MfG Spess
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.