mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wieviel MHz am besten für 1 Sekunden Takt


Autor: Kim S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
wie komme ich rechnerisch am besten auf 1 Sekunden der 500ms oder 100ms 
Interrupt?
Also mit welchem Quarz und mit welchem Prescaler etc pp.
Leider komme ich mit dem Timer in Pascal noch nicht klar, daher kann ich 
den noch nicht einsetzen....

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Kim Schmidt (corado)

>wie komme ich rechnerisch am besten auf 1 Sekunden der 500ms oder 100ms
>Interrupt?

Grundrechenarten?

>Also mit welchem Quarz und mit welchem Prescaler etc pp.
>Leider komme ich mit dem Timer in Pascal noch nicht klar, daher kann ich
>den noch nicht einsetzen....

Doch. Wenn du schon daran scheiterst, such dir ein anderes Hobby. Siehe 
Artikel Timer.

MFG
Falk

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Welcher Controller?

MfG Spess

Autor: Kim S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Atmega 32

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst jedem Quarz nehmen.
Das Prinzip ist Rechnen mit gebrochenen Zahlen:

Beitrag "Die genaue Sekunde / RTC"


Peter

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tag!

Die MHz sind doch recht egal?
Hauptsache der Timer läuft mit größtem Prescaler nicht unterhalb einer 
Sekunde über?

Ganz Einfach:

- 16Bit-Timer verwenden.
-Passenden Prescaler verwenden.
- Interrut Timer_overflow aktivieren
-Korrekturzahl ausrechnen und nach einem Überlauf jeweils in den Timer 
vorladen.

Und schon hast du jede Sekunde (oder halb oder sonstiges??) einen 
Timer_overflow zur verfügung.

Bei Fragen helf ich gerne^^


Grüße Steffen

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steffen schrieb:
> Tag!
>
> Die MHz sind doch recht egal?
> Hauptsache der Timer läuft mit größtem Prescaler nicht unterhalb einer
> Sekunde über?
>
> Ganz Einfach:
>
> - 16Bit-Timer verwenden.
> -Passenden Prescaler verwenden.
> - Interrut Timer_overflow aktivieren
> -Korrekturzahl ausrechnen und nach einem Überlauf jeweils in den Timer
> vorladen.

Anstelle von Vorladen, könnte man auch den CTC Modus benutzen.


Aber auch Falk ganz oben hat recht.
Timer sind universelle Bausteine des Mega32. Wenn man nicht mit ihnen 
umgehen kann, und das ist wirklich nicht schwer, dann verschenkt man 
glatt einen nicht unbeträchtlichen Teil dessen, was ein Mega32 von sich 
aus kann.

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Anstelle von Vorladen, könnte man auch den CTC Modus benutzen.

Ups, den hab ich jetzt ganz vergessen^^
Is beides eine Möglichkeit.
Egal welcher weg, beide führen nach Rom...

Ich hab schon öfters beide Wege eingeschlagen. ;-)

Grüße Steffen

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit nem 0,032768 MHz Quarz und nem Prescaler von 128 hat man einen
"Quarzgenauen" Sekundentakt (wenn ich mich jetzt nicht verrechnet hab) 
;-)

8-Bit Timer und Overflow IRQ

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matthias schrieb:
> Mit nem 0,032768 MHz Quarz und nem Prescaler von 128 hat man einen
> "Quarzgenauen" Sekundentakt (wenn ich mich jetzt nicht verrechnet hab)
> ;-)
>
> 8-Bit Timer und Overflow IRQ

Mit einem 16MHz Takt, 256er Prescaler und CTC auf 62499 (16 Bit Timer) 
kommt man ebenfalls auf 1Hz.

Software Prescaler kann man auch immer machen.

Für einen 1Hz Takt kann man alles nehmen.

Autor: Joachim K. (minifloat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn der Takt an einem Ausgang(ein Pin des Controllers) ausgegeben 
werden soll, kann man auch die PWM-fähigkeit des Timers mit 
einstellbarem TOP benutzen. Vllt. ein wenig overkill, aber Hauptsache es 
tut :)
mfg mf

Autor: Guest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn es eine (batteriebetriebene) Uhr werden soll, gibt es spezielle 
Uhrenquarze mit ein paar und 32kHz. (Frage am Rande: Sind die eigentlich 
genauer, als die 16MHz mit Prescaler?)
Da gibts von AVR auch eine Appnote zu:
http://www.atmel.com/atmel/acrobat/doc1259.pdf

Autor: oldmax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
Ist wirklich nett, wie ihr eure Antworten verpackt..
>Leider komme ich mit dem Timer in Pascal noch nicht klar, daher kann ich
>den noch nicht einsetzen....
Wieviele von euch programmieren in Pascal ?
Würd mich mal interessieren.
Die Frage ist vielleicht etwas unglücklich gestellt, denn wenn ich einen 
Interrupt alle 500ms oder alle 100 ms habe, brauche ich ja nur eine 
Variable hochzählen und entsprechend bei >1 oder >9 Sekunden hochzählen. 
Das bedeutet, es gibt halt eine Zeitbasis von 2 oder 10 Hz. Wenn der 
Pascal-Compiler da nicht grad eine Wissenschaft draus macht, kann man 
sich getrost zurücklehnen, der Controller steckt das lässig weg und läßt 
sich auch noch genug Zeit für weitere Aufgaben.
Da ich µC's auch nicht in Pascal programmiere, kann ich leider nicht 
mehr zu sagen.
Gruß oldmax

Autor: Kim S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, so mache ich es zur Zeit.
Das ganze dient einem Amperstundenzähler, der zumindest über 2 Tage 
hinweg halbwegs genau sein sollte.
Leider bekomme ich aber schon nach wenigen Stunden erhebliche 
Abweichungen...
Auf der gleichen Platine habe ich noch einen RTC (PCF8386 oder wie der 
sich schimpft) Den nutze ich derzeit aber wirklich nur für die Uhr....

Autor: Skua (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich nehme dann gern 4194304 Hz da braucht man sich nicht zu verenken.

Welchen PASCAL Compiler verwendest du?

Autor: Kim S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ursprünglich AVRco, mit dem wäre das ganz einfach...
Jetzt habe ich mir aber die Vollversion von Mikropascal "gegönnt" und da 
ist leider nicht so viel pascal drin wie man erwarten sollte...vieles 
muss doch noch auf direktem Wege erledigt werden.. so das ich vermutlich 
doch gleich C hätte nehmen können...
Schade, ich habe hier etliche Quarze rumliegen, aber ich glaube kein 
4er...so ein Ärger

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.