@avion23
Hier die Initlaisierung des PWM-Ausgangs des AtTiny461:
Code:
#warning Setup() Registereinstellungen prüfen!
// Timer1 Asynchronous Mode PLL Initialization - Page88
PLLCSR = (1 << PLLE); // Enable PLL
_delay_us(50); // Wait 100µs for PLL to stabilize
_delay_us(50); // Split due to limits of _delay_us at frequency at 8mhz
loop_until_bit_is_set(PLLCSR, PLOCK); // Poll PLock until set
PLLCSR |= (1 << PCKE); // Enable Asynchronous Mode
// PWM
/**************************************************************************************
Tiny15 - Originalvalues from Appnote:
TCCR1A = 0x81; // define timer1 as 8-bit PWM
TIFR = 0x80; // clear counter1 overflow flag
TIMSK = 0x80; // enable counter1 overflow interrupt
TCNT1 = 0x00; // set counter1 to zero
TCCR1B = 0x00; // PWM disabLED
Tiny461:
OutPut OC1B, PB3 PWM1B = 1
Fast PWM WGM11..0= 00
Non-Inverting Compare Mode - Cleared on Compare Match COM1B1 = 1
Asynchrone Clocking Mode, Prescaler = 1 CLK = PCK CS10 = 1
8 bit from BOTTOM(0x00) to TOP(0xff) TOV1-Flag set on TOP OCR1C = 0xFF
***************************************************************************************/
TCCR1A = (1 << PWM1B) | (1 << COM1B1);
TCCR1B = (0 << CS13) | (0 << CS12) | (0 << CS11) | (1 << CS10);
TCCR1D = (0 << WGM11) | (0 << WGM10);
OCR1C = 0xff;
//TIFR = (1 << TOV1); // clear counter1 overflow flag
//TIMSK = (1 << TOIE1); // enable counter1 overflow interrupt
TCNT1 = 0x00; // set counter1 to zero
OCR1B = 0x00; // PWM disabLED
DDRB = (1 << PB3); // PB3 as Output
TimerClockSource taktet intern mit 64Mhz.
Prescaler = 1
PWM mit 8 bit Auslösung.
Ausgabepin ist PB3
Ausgabefrequenz 250khz
Lesezeichen