PWM, AVR & AVR-Studio
Postat: 24 juni 2007, 00:09:37
Håller på att lära mig hur pwm fungerar med timer 1.
Detta för att jag behöver 2-pwm utgångar. Jag har satt följande bitar:
COM1A1
COM1B1
WGM11
WGM12
WGM13
CS10
ICR1 använder jag för TOP-värde. Men jag lyckas inte få in några värden på OCR1A och OCR1B. TOIE1 är också satt, men det blir bara interrupt ibland.
Är det AVR-Studio som är problemet, eller?
Koden är som följer:
Detta för att jag behöver 2-pwm utgångar. Jag har satt följande bitar:
COM1A1
COM1B1
WGM11
WGM12
WGM13
CS10
ICR1 använder jag för TOP-värde. Men jag lyckas inte få in några värden på OCR1A och OCR1B. TOIE1 är också satt, men det blir bara interrupt ibland.
Är det AVR-Studio som är problemet, eller?
Koden är som följer:
Kod: Markera allt
void dotest(void)
{
uint16_t i;
i++;
}
ISR(TIMER1_OVF_vect)
{
dotest();
}
void initPorts( void )
{
TCCR1A &= ~(1<<COM1A0);
TCCR1A |= (1<<COM1A1);
TCCR1A &= ~(1<<COM1B0);
TCCR1A |= (1<<COM1B1);
TCCR1A &= ~(1<<WGM10);
TCCR1A |= (1<<WGM11);
TCCR1B |= (1<<WGM12);
TCCR1B |= (1<<WGM13);
TCCR1B |= (1<<CS10);
TCCR1B &= ~(1<<CS12);
TCCR1B &= ~(1<<CS12);
}
int main(void)
{
initPorts();
ICR1 = 4096;
OCR1A = 2048;
OCR1B = 1024;
TIMSK |= (1<<TOIE1);
sei(); //Enable global interrupts
while( 1 )
{
}
return 0;
}