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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren