Frequenzgenerator mit ATMEGA8 - C

OP #1104107
Hallo,

ich bin Neuling in der Arbeit mit Mikrocontrollern, versuche derzeit 
aber mit einem ATMEGA8-16PU einen Frequenzgenerator zu bauen.
Die Frequenz möchte ich von 1Hz-1kHz in 1Hz-Schritten ändern können.

Aber erstmal möcht ich einfach nur mal eine Frequenz an einem Ausgang 
abgreifen können.

Dazu hab ich gelesen, dass man das mit einem Timer machen soll, am 
besten mit dem 16-bit Timer.
Habe mich auch mal in das AVR-GCC Tutorial eingelesen, nur fehlt mir im 
Moment irgendwie noch der Durchblick.

Mein Code sieht derzeit so aus:
1
int main(void)
2
{
3
DDRD = 0xC0;
4
PORTD = 0x00;
5
PORTB = 0xFF;
6

7
TCCR1A = (1<<COM1A1) | (1<<COM1A0); //Signal an OC1 wird invertiert
8
TCCR1B = (0<<CS12) | (1<<CS11) | (0<<CS10); //CPU-Takt/8
9
}

Jo, also so wie ich das bisher gelesen habe sollte das doch reichen.
Ist es nicht so, dass der Zähler nun mit einer Frequenz von 2MHz 
(16MHz/8) heraufzählt und dann beim Überlauf das Signal am Ausgang 
invertiert wird?
Oder verstehe ich das falsch?

Hab bisher auf jeden Fall am Ausgang andauernd 1-Signal anstehen.

Bin dankbar für jede Hilfe!

MfG
OP #1104205
Hallo,

also ich hab nochmal ins Datenblatt geschaut, die richtigen 
Einstellungen nun gewählt und CTC eingeschaltet.
1
int main(void)
2

3
TCCR1A = (1<<COM1A0) | (1<<WGM12);
4
TCCR1B = (0<<CS12) | (1<<CS11) | (0<<CS10):
5

6
while(1)
7

8
return 0;
9
}

Ergebnis:

Genau das Gleiche wie vorher!
An OC1 liegt weiterhin dauerhaft 1 an.

Bin hier irgendwie kurz vorm verzweifeln ;)
Gast #1104239
Hi

Entschuldige:

>OCR2 muss auch noch gesetzt werden. Z.B. 128.

Muss natürlich OCR1H /OCR1L heissen (War beim falschen Timer). Evtl kann 
man in C das 16Bit-Register in einem Rutsch setzen. Ansonsten 
Reihenfolge beachten. Der wert sollte natürlich auch grösser werden, 
z.B. 0x8000.

MfG Spess

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.