Sida 1 av 1

PWM, AVR & AVR-Studio

Postat: 24 juni 2007, 00:09:37
av Ulf
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:

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;
}

Postat: 24 juni 2007, 00:50:27
av vfr
Använd code-taggarna så blir det mycker mer läsbart! :)

Postat: 24 juni 2007, 01:00:09
av Ulf
Done, hade inte en tanke på det!

Postat: 24 juni 2007, 09:02:09
av Ulf
Var trött igår, glömde nämna att det är en ATmega8535 jag tänkt att köra på. Det funkade en sväng i morse, fast bara nästan. Det verkar som om den räknar upp och sedan ner, men den ska bara räkna upp när det inte är "Phase corrected" pwm. Det är mode 14 jag försöker med.

Blir nog till att beställa och köra på en riktig...

Postat: 24 juni 2007, 11:20:29
av BEEP
AVR Studio - Known Issues - Simulator

Timer/Counters
16-bit Timer/Counters on all devices have several problems with PWM, prescaler and output compare. Output compare registers are not buffered properly.

The Asynchronous Status Register (ASSR) is not supported in timers with asynchronous mode. This is due to lack of a generic external clock implementation.

Postat: 24 juni 2007, 11:49:49
av Ulf
Jaha, testade oxå AVR IDE simulator, räknaren funkade inte ens dåligt... .
Beställer grejer ikväll!