PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATmega16 Timer1 Beispiel CTC



Simba81
29.01.2013, 06:41
Hallo

Ich versuch hier verzweifelt auf dem ATmega16 den Timer1 im CTC aufzusetzen.

Hat jemand einen Beispielcode in C, der mir zeigt, wie man das macht?

Vielen Dank

Simba

Kresley
29.01.2013, 07:56
Hi

Da gibt es eine Sourcecode Beispiel Sammlung auf electronicsplanet.ch. Für den Timer1 CTC ist da auch was dabei ;-)

http://www.electronicsplanet.ch/mikrocontroller/source-code/ATMega16/ATmega16-Timer1-CTC-1.htm

Hilft dir das weiter?

Gruss
Kresley

oberallgeier
29.01.2013, 07:57
Hi Simba,
willkommen im Forum.

... Ich versuch hier verzweifelt auf dem ATmega16 den Timer1 im CTC aufzusetzen ...Hast Du schon die Dokumentation dazu gelesen? Sind zwar ETLICHE Seiten, aber recht nützlich.
... einen Beispielcode in C, der mir zeigt, wie man das macht? ...Der Code ist für nen mega1284 - der mega16 dürfte nicht viel anders sein. Natürlich wirst Du die Parameter selber einstellen müssen. Im Code wird dann die
ISR (TIMER1_COMPA_vect) // Servo[Svpt] wählen + dessen Rampe starten
aufgerufen, es läuft keine Hardware-PWM . . . (wenn das Deine nächste Frage sein sollte).


// ================================================== ============================ =
// == Timer1 Aufgabe: Servo mit Soft-PWM ansteuern auf wählbarem Port
// Beispiel: ....
// - - - - - - - - - - - - - - - -
void TC1TMR_init(void) // Init Timer/Counter 1 für 2 ms Servoperiode
{ //
TCCR1B |= (1<<WGM12); // WGM12 => CTC, TOP = OCR1A S133
TCCR1B |= (1<<CS11); // CS11+10 <=> clk/8 => 2,500 MHz S134
OCR1A = 6400; // => alle 2,56 ms ein Interrupt
TIMSK1 |= (1<<OCIE1A); // Tmr/Cntr1 Oput CompA Mtch intrrpt enabled
// - - - - - - - - - - - - - - - -
}
// ================================================== ============================ =
// ================================================== ============================ =
// == Timer1
// - - - - - - - - - - - - - - - -
void TC1TMR_on(void) // Init Timer/Counter enable
{ //
TIMSK1 |= (1<<OCIE1A); // Tmr/Cntr1 Oput CompA Mtch intrrpt enabled
}
// ================================================== ============================ =

// ================================================== ============================ =
// == Timer1
// - - - - - - - - - - - - - - - -
void TC1TMR_off(void) // Init Timer/Counter disable
{ //
TIMSK1 &= ~(1<<OCIE1A); // Tmr/Cntr1 Oput CompA Mtch intrrpt disabled
}
// ================================================== ============================ =

Simba81
29.01.2013, 22:48
Hi

Da gibt es eine Sourcecode Beispiel Sammlung auf electronicsplanet.ch. Für den Timer1 CTC ist da auch was dabei ;-)

http://www.electronicsplanet.ch/mikrocontroller/source-code/ATMega16/ATmega16-Timer1-CTC-1.htm

Hilft dir das weiter?

Gruss
Kresley


Ja hey, danke, genau das hab ich gebraucht!

Danke Kresley

Danke auch Oberalgeier, aber der andere Code war etwas einfacher und hats bereits gebracht.