CTC Modus kleines Beispiel

Moderator Persönliche Seite #1201781
Lesenswert?
• ▲
▼
Der CTC-Modus hat ja erst einmal nicht viel mit der Impulsgenerierung
zu tun.  CTC bedeutet nur, dass man den Timer per Hardware beim
Erreichen eines bestimmten Zählerstandes zurück setzt und damit die
Zählweite verkürzt.

Den Begriff CTC kenne ich nur vom AVR (in dieser Bedeutung -- beim Z80
war es der "counter timer circuit"), insofern solltest du wohl mal
genauer sagen, welchen AVR du benutzen willst und was für eine
Impulsfolge du haben möchtest.

Ob du das in C oder Assembler programmieren willst, ist dabei praktisch
wurscht: die Programmierung beschränkt sich im Wesentlich auf das
Setzen diverser IO-Register.
#1201787
Lesenswert?
• ▲
▼
hi,

ich glaube es ist nicht möglich hier ein beispiel zu zeigen das genau 
das zeigt was du möchtest.

wenn du einen timer konfigurieren möchtest, dann geh in das datenblatt 
undschau die entsprechenden Register an. dann gehe alle register durch, 
und schau bei jedem bit die beschreibung an und überlege ob du das 
brauchst.

dass du trotzdem ein beispiel hast,
dies ist ein ctc timer der mit einem extra quarz 256 interrupts die 
sekunde auslöst:
  ASSR |= _BV(AS2);
  TCNT2 = 0; loop_until_bit_is_clear(ASSR, TCN2UB);
  OCR2A = TIMER_DIVIDER;   loop_until_bit_is_clear(ASSR, OCR2AUB);
  TCCR2A  = _BV(WGM21);   loop_until_bit_is_clear(ASSR, TCR2AUB);
  // prescaler /8
  TCCR2B  = _BV(CS21); loop_until_bit_is_clear(ASSR, TCR2BUB);
  TIMSK2 |= _BV(OCIE2A)  ;


ISR(TIMER2_COMPA_vect)
{
}
Gast #1201830
Lesenswert?
• ▲
▼
Hallo

ich verwende einen Atmega8L und möchte Impulse in der Grössenordnung 5 
ms erzeugen.

habe versucht das datenblatt zu verstehen aber, das wird man wohl erst 
verstehen, wenn man es fertig hat ;) zumindest ist es bei mir so....erst 
im nachhinein macht es oft Klick.

Wie würdet ihr s machen wenn ihr 5ms (also 2,5 ms High Potential und 2,5 
ms Low Poetential) erzeugen wolttet  mt de ctc modus?
Gast #1201838
Lesenswert?
• ▲
▼
Hi

>Wie würdet ihr s machen wenn ihr 5ms (also 2,5 ms High Potential und 2,5
>ms Low Poetential) erzeugen wolttet  mt de ctc modus?

Wie wäre es mit mit ein paar Angaben: Controller,Timer,Taktfrequenz...

MfG Spess
Moderator Persönliche Seite #1201880
Lesenswert?
• ▲
▼
2,5 ms lassen sich nicht exakt mit einem 8-bit-Timer bei 1 MHz
erzeugen, zumindest nicht auf einfache Weise.
1
#include <avr/io.h>
2

3
#define F_CPU 1000000ul
4

5
static void
6
timerinit(void)
7
{
8
  OCR2 = (F_CPU / 32 / 400) - 1;
9
  TCCR2 = _BV(WGM21) /* CTC */ |
10
    _BV(COM20) /* toggle OC2 on compare match */ |
11
    _BV(CS21) | _BV(CS20) /* f_cpu / 32 */;
12
  DDRB = _BV(PB3); /* OC2 as output */
13
}

Antwort schreiben

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.

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.