www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer2 Berechnen


Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Ich müsste schnell einen Timer2 so berechnen, dass er alle 10ms einen 
Overflow hat. Mein Oszi Takt ist 20Mhz, PIC ist ein 16f876.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Geht nicht! Der Prescaler kann max 16 sein.
Der Timer hat 8 Bit.

20000000Hz/16/256 = 4882.8Hz
Overflow alle 204.8 us. Mehr geht nicht.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, aber 10ms sind doch 100Hz, das müsste doch gehn, oder denk ich 
gerade irgendwie falsch...

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ah, ok doch, geht nicht. habs gerade kappiert. aber noch was anderes zum 
Timer2. In der CCS Hilfe steht folgendes:
setup_timer_2(T2_DIV_BY_4,0xc0,2);
Prescaler ist 4
Postscaler ist 2
Aber was ist das dazwischen?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>ok, aber 10ms sind doch 100Hz, das müsste doch gehn, oder denk ich
>gerade irgendwie falsch...

Der Timer2 ist zu klein für solche Sachen.
Selbst mit Postscaler kommst du nur auf 3ms.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, also 1ms wäre drin. Gibt es zur Berechnung eine Formel? Und was ist 
das zwischen bei der Timer2 Konfiguration?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da hab ich jetzt Unsinn erzählt :(
Der Timer läuft nur mit Takt/4.
Korrektur:

5000000Hz/16/256 = 1220.7Hz
Overflow alle 819.2 us.

Mit Postscaler 16 also 13.1ms maximal.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, aber was bedeutet dieses 0xc0 bei setup_timer_2(T2_DIV_BY_4,0xc0,2)?

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das wird der Wert sein, der in PR2 geschrieben wird.

Da wie schon gesagt wurde Timer2 zu klein ist um aus 20MHz Systemtakt 
100Hz Interrupttakt zu machen, wirst du nicht darum herumkommen, mit dem 
Vor/Nachteiler etwas herumzuspielen, damit du in der Interruptroutine 
per Softwarezähler auf 100Hz kommst.

Autor: Linebach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Darkleon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich weiß, dass dieser Beitrag schon (sehr) alt ist, aber um der 
Richtigkeit genüge zu tun behaupte ich, dass mit 20MHz Systemtakt sehr 
wohl ein 100Hz (wenn auch nicht 100% genau) Interrupt durch den Timer 2 
eines PICs möglich ist.

Wie schon richtig erwähnt worden ist, wird der Timer mit FOsc/4 = 5MHz 
getaktet.
Allerdings besitzt der Timer 2 in Prescaler als auch Postscaler.

Einstellungen:
Prescaler: 1:16
Postscaler: 1:13
PR2 Register: 240

Ergibt:
5000000Hz/16/13/240 = 100,16026 Hz
Bei PR2 = 241
5000000Hz/16/13/241 = 99,74465Hz

Im Grunde stimmt die Aussage, dass keine GENAUEN 100Hz eingestellt 
werden können, allerdings ist die Aussage falsch, dass der Timer2 dazu 
zu schnell ist. (holger hat das in seinem Post richtig erkannt und das 
stimmt auch so)

Wollte das nur richtigstellen, damit "Anfänger" nach Ihren Berechnungen 
nicht verwirrt sind;)

MfG
Darkleon

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.