Vad har jag glömt? (AVR, C, Timer1)

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
PaNiC
Inlägg: 2610
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Vad har jag glömt? (AVR, C, Timer1)

Inlägg av PaNiC »

Jag ska ha interrupt på timer1 output compare. Men med nedanstående kod snurrar inte timern. Vad har jag glömt?

Kod: Markera allt

void setup(void)
	{
	DDRA = 0xff;
	DDRB = 0xff;
	DDRC = 0xff;
	DDRD = 0b00011000;
	PORTA = 0x00;
	PORTB = 0x00;
	PORTC = 0x00;
	TCCR1B = 1<<CS11 | 1<<CS10 | 1<<CTC1;
	OCR1B = 31250;
	TIMSK = 1<<OCIE1B;
	sei();
	}

int main(void)
	{
	setup();
	for(;;)
		{
		PORTB = TCNT1L;
		}
	}
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg av thepirateboy »

Vilken uC? Funkar det i simulatorn?
Användarvisningsbild
PaNiC
Inlägg: 2610
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Inlägg av PaNiC »

90s8515.

Har inte kunnat prova simulatorn då den inte fungerar. Något kaiko med VC++ Runtimen. Ska installera om windows ikväll.
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg av thepirateboy »

Du kan prova att uppgradera till AVR Studio 4.13 b528, då bör simulatorn funka.

http://www.atmel.com/dyn/products/tools ... ol_id=2725
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

Du verkar ha aktiverat interrupt för "Output Compare Match" utan att ha någon interrupt-funktion som fångar upp interrupten.
Användarvisningsbild
PaNiC
Inlägg: 2610
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Inlägg av PaNiC »

cykze, jag har en funktion som tar det. Inte tagit med den här bara.
Men nu är det testat med simulator också, och timern går inte.
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

Det fungerar alltså inte i simulatorn?! Kan det inte bara vara så att det tar vääldigt lång tid att simulera alla cykler?
Och vad händer i funktionen som tar avbrottet? Hur kan du veta att den funktionen inte körs? (Skicka ALL kod)
Verkar "PORTB = TCNT1L; " bara stå still så är det ju ett tecken på att timern inte går...
En viktig fråga: Fungerar någon annan programvara i din nuvarande uppkoppling?
Användarvisningsbild
PaNiC
Inlägg: 2610
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Inlägg av PaNiC »

Hittade felet nu. Compare match uppstår av någon anledning på OCR1A fast det inte ska och TCCR1B, CTC1 nollar således TCNT1-registren innan de har hunnit räkna upp.
Användarvisningsbild
AntiZ
Inlägg: 321
Blev medlem: 22 februari 2007, 13:34:14
Ort: V. Husby
Kontakt:

Inlägg av AntiZ »

I Mega88 är Prescalern för Timer1 och Timer0 ihoplänkade (kan ha olika värde dock) men när man vill reseta prescalern för Timer0, så ryker Timer1's prescaler också. Inte något sådant skumt.
Skriv svar