mikrocontroller.net

Forum: Compiler & IDEs Frequenz an Pin


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

das ist mein erster Besuch in diesem Forum.
Ich möchte eine Frequenz (Rechteck) von 32.786 Khz +- 500 an einem Pin
ständig ausgeben.
Kann mir jemand helfen wie das am einfachsten in C geht?
Atmega 128

mfg Michael

Autor: uwe große-wortmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
am einfachsten nimmst du eine endlosschleife und lässt darin immer den
pin umschalten und dann die nötige zeit warten...
das geht allerdings nur wenn der mega128 sonst nichts anderes zu tun
hat. ansonsten müsstest du dich mal etwas mit dem timern des mega128
auseinandersetzen... die lassen sich auch gut zum frequenzen erzeugen
nutzen... und können sogar manche pins selbstständig umschalten,
nachdem sie inmal gestartet wurden... dannn kann dein controller was
anderes erledigen...

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was hast du denn vor??
sieht fast so aus als wenn du den takt für eine uhr erzeugen willst...
aber dafür nimmt man doch nen quarz

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

der prozessor soll auch noch andere Dinge tun.
Ich brauche den Takt um einen digitalen Sensor zu takten.
Bisher hatte ich den Sensor an einem CC2 von Conrad am laufen, da
musste man nur die frequenz einstellen und laufen lassen.

mfg Michael

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dann nimm nen timer.
ohne den takt vom avr kann man nicht sagen wie du den timer einstellen
mußt. timer im ctc mode laufen lassen und den entsprechen oc-pin
toggeln lassen

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sebastian,

der Takt ist 16 Mhz.

mfg Michael

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Erzeugung einer Sekunde wird z.B. hier beschrieben:
http://mc-project.de/Pages/AVR/Timer/timer.html

Wie die Registerwerte für den Fall zu berechnen sind sollte nach dem
Durchlesen auch klar sein :)

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Besten Dank an Alle, ich werde mal alles lesen.

mfg Michael

Autor: Volker Endres (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michael,
mit was betreibst du denn deinen Mega128. Vielleicht mit einem STK501?
Wenn ja ist das ganz einfach über den Timer0 (8 Bit) zu lössen da das
STK 501 schon einen Uhrenquarz aufgelötet hat.
Du must dann nur das Flag für den externen Takt setzen und den Oszi
über den Schiebeschalter an den Atmega ankoppeln.
Flag heist AS0 im Reg. ASSR

Gruß Volker

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn ichs jetzt richtig verstanden habe muss man folgendes tun:
Atmega128 16Mhz

TCCR1A = (1<<PWM10) | (1<<COM1A1);
TCCR1B = (1<<CS11);
OCR1A  = 61;

An Pin OC1 liegt 32.787 Khz an.

mfg Michael

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Datenblatt Seite 96 steht ne Formel, Signal liegt dann an OC0 an.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Atmega128 mit 16Mhz

ich kriegs nicht gebacken.

DDRB = 0xff;                          //Ausgang schalten
TCCR1A =  (1<<WGM10) | (1<<COM1A1);   //10Bit nicht invertierend
TCCR1B = (1<<CS10) | (1<<WGM12);      //CK/1024
OCR1A  = 30;                          //Vergleichswert

an pin oc1 sollte die frequenz anliegen, tut sie aber nicht
weiß jemand was ich falsch mache?

mfg Michael

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach meinem Datenblatt ist WGM13..0 = 0101 == 8Bit fast PWM und nicht
10Bit.  0111 ist 10bit.
Und CS12..0 = 001 == CLK/1 und nicht CLK/1024 -> 101.

Auch nich OCR1A nachrechnen bin ich jetzt zu müde |-O

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.