Hallo, ich bin gerade dabei den Artikel "Demystifying the TLC5940" von
https://sites.google.com/site/artcfox/demystifying-the-tlc5940 durch
zuarbeiten. Ich möchte statt des verwendeten ATMEGA328 allerdings einen
ATMEGA8 verwenden. Dies macht einige Anpassungen im Code nötig. Mir ist
zunächst nur der Timer aufgefallen der angepasst werden muss:
Original:
1
// CTC with OCR0A as TOP
2
TCCR0A=(1<<WGM01);
3
// clk_io/1024 (From prescaler)
4
TCCR0B=((1<<CS02)|(1<<CS00));
5
// Generate an interrupt every 4096 clock cycles
6
OCR0A=3;
7
// Enable Timer/Counter0 Compare Match A interrupt
8
TIMSK0|=(1<<OCIE0A);
Meine Anpassung:
1
// CTC with OCR0A as TOP
2
// TCCR0A = (1 << WGM01);
3
TCCR1A=(1<<WGM12);//EDIT
4
5
// clk_io/1024 (From prescaler)
6
//TCCR0B = ((1 << CS02) | (1 << CS00));
7
TCCR1B=((1<<CS12)|(1<<CS10));//EDIT
8
9
// Generate an interrupt every 4096 clock cycles
10
//OCR0A = 3;
11
OCR1A=3;//EDIT
12
13
// Enable Timer/Counter0 Compare Match A interrupt
Frank schrieb:> ISR(TIMER0_COMPA_vect)
Wenn du alles auf Timer 1 umschreibst, dann solltest du das auch für die
ISR machen. Die steht ja immer noch auf Timer 0 :-P
Danke, das war ein Fehler, aber es funktioniert leider immer noch nicht.
Es soll ja der "clock output buffer" verwendet werden. Zitat: "we can
begin to modify it toward our original goal of using the clock output
buffer to drive GSCLK". Am PIN PB0 des ATMEGA328 gibt es den CLKO beim
ATMEGA8 gibt es diesen jedoch nicht. Kann er durch etwas anderes ersetzt
werden?
Hi
>Kann er durch etwas anderes ersetzt werden?
Nicht wirklich. Ein Timer kann im CTC-Mode mit OCRnx=0 den halben
Systemtakt am OC-Pin ausgeben.
MfG Spess
Wäre vermutlich am einfachsten, doch einen Mega48/88/168/328 zu nehmen,
du kannst allerdings, wenn du mit Quarzoszillator arbeitest, mit einem
CMOS Buffer das Signal an XTAL2 (PB7) abgreifen und verstärken. Ist
allerdings bestimmt aufwendiger und teurer, als einfach einen Mega48 in
den Sockel zu setzen.
>Wenn du alles auf Timer 1 umschreibst, dann solltest du das auch für die>ISR machen. Die steht ja immer noch auf Timer 0 :-P
Tja, der Typ hat es irgendwie nicht so mit den Interruptnummern.
Mal 0, mal 1 , mal 2;)
//TIMSK0 |= (1 << OCIE0A);
TIMSK |= (1 << OCIE2); //EDIT S.119
^
|
|