Gast
#1917345
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
|
Anzeige
|
Quarz und Zeiten
Gast
#1917345
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
Gast
#1917347
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.
Gast
#1917348
>> man streiche bitte gedanklich das "macht"
Gast
#1917350
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.
Gast
#1917355
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
Gast
#1917363
>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.
Gast
#1917365
Man kann halt auf die Frage nicht generell Ja oder Nein antworten.
Gast
#1917376
Es geht darum Warteschleifen zu programmieren mit dem ATMEGA32 die sehr genau sind.
Gast
#1917388
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.
Gast
#1917397
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.
Gast
#1917425
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 ?'
Gast
#1917441
Hi
>Haha ein Spaßvogel...
Eher du. Wenn ich will, mache ich die auf den Takt genau.
MfG Spess
Gast
#1917444
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 !
Gast
#1917477
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 Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|