www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Quarz und Zeiten


Autor: Heron24 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> man streiche bitte gedanklich das "macht"

Autor: Huch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Heron24 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Huch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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.

Autor: Huch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann halt auf die Frage nicht generell Ja oder Nein antworten.

Autor: Heron24 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es geht darum Warteschleifen zu programmieren mit dem ATMEGA32 die sehr 
genau sind.

Autor: Huch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Huch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry. Es muss natürlich heissen:

"In diesem Fall hätte "ATMega32" und "Warteschleifen" schon klargemacht
wie man Dir hätte antworten sollen".

Autor: Captain Subtext (captainsubtext)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Heron24 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ?'

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Haha ein Spaßvogel...

Eher du. Wenn ich will, mache ich die auf den Takt genau.

MfG Spess

Autor: Huch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 !

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.