www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 10KHz Rechteck Signal -> 20 KHz Timer? --> 8Bit oder 16 Bit Timer?


Autor: Dieter Neumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bin Newbee und komme leider mit dem Tutorial und den Beiträgen nicht zu 
recht ein ich möchte eine Rechtecksignal mit 10kHz erzeugen dafür 
brauche ich doch einen Timer der mir im mit 20Khz Rhytmus einen interupt 
erzeugt oder? jetzt habe ich aber probleme einen Timer zu definieren 
Benutze ich einen 16 oder 8 Bit timer im compare oder overflow modus und 
welche start oder nachlade werte benötige ich

Danke für eure hilfe

Dieter

P.S. ich Programmiere in C

Autor: Michael W. (retikulum)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hilfreich wäre den Controller und die Taktfrequenz zu wissen.

Michael

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dieter,

für die Berechnung des Timers, insbesondere des Preload-Wertes gibt es 
eine schöne Formel (hier für einen 8-Bit Timer):

Preload = 256 - (t * f_cp / DIV)

Dabei ist:
 - t die gewünschte Periode mit der ein Overflow-Interrupt ausgelöst 
werden soll
 - f_cpu Der Takt deines µControllers
 - DIV der Vorteiler des Timers.

Für deine 20 kHz musst Du also alle t = 50 µs einen Timer-Overflow 
erreichen. Bei einem (angenommenen) Takt von 8 MHz und einem Vorteiler 
von 8 müsstest du demnach einen Preload von 206 ansetzen.

Viele Grüße

Andreas

Autor: Dieter Neumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Micha

ATMega128 und 4MHz Kann aber auch 5 Mhz oder den internen Ozillator 
benutzen

Gruß

Dienter

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Dieter Neumann (Gast)

>recht ein ich möchte eine Rechtecksignal mit 10kHz erzeugen dafür
>brauche ich doch einen Timer

Ja.

>der mir im mit 20Khz Rhytmus einen interupt
>erzeugt oder?

Nein. Das macht der Timer mit Hilfe der der Output Compare Funktion ganz 
allen, ohne Interrupt und CPU.

>jetzt habe ich aber probleme einen Timer zu definieren
>Benutze ich einen 16 oder 8 Bit timer im compare oder overflow modus

8 oder 16 Bit ist egal, aber man nimmt da keinen Interrup.

>welche start oder nachlade werte benötige ich

Kann man leicht im Datenblatt nachlesen. Grundrechenarten sollte man 
schon beherrschen.

MFG
Falk

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Falk,

Dazu müsste man ein OC Fähigen Timer mit passendem PIN freihaben, ich 
benötige aber ein Interrupt um etwas auszuführen. Daher danke für deinen 
einwandt ausserdem lerne ich gerade die Grundrechenarten  :-)

für einen 16 Bit Timmer gilt dann

Preload = 2^16 - (t * f_cp / DIV)

Stimmt dass ;-)   (Ach ja ich lerne die Grundrechenarten gerade erst

Gruß

Dieter

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Dieter (Gast)

>Dazu müsste man ein OC Fähigen Timer mit passendem PIN freihaben, ich
>benötige aber ein Interrupt um etwas auszuführen.

Mit 20 kHz? Na hoffentlich nicht zu viel.

> Daher danke für deinen
>einwandt ausserdem lerne ich gerade die Grundrechenarten  :-)

2.Klasse in der Baumschule ? ;-)

>für einen 16 Bit Timmer gilt dann

>Preload = 2^16 - (t * f_cp / DIV)

Vergiss bitte den Begriff Preload. Das ist antiker Murks. Moderne 
Controller und Timer haben spezielle Modi, die das alles selber können. 
Beim AVR heisst der CTC. Siehe Datenblatt.

Der Wert für den Vergleich ist also

(t * f_cp / DIV) - 1

Weil der Timer von 0..N zählt, also N+1 Takte.

MfG
Falk

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.