Sida 1 av 1

Timer0 interruptproblem (AT90CAN128)

Postat: 21 mars 2006, 19:28:59
av Hedis
Har försökt få igång overflow-interrupt med timer0 nu en stund utan att lyckas.
Jag får inga interrupt helt enkelt.



Jag tror att jag jag har hittat något som kanske kan bidra till mina misslyckanden.
När jag laddar tccr0a för att sätta prescaler så hamnar det över mitt DDRB register. Så D0 & D3 är dom enda bitarna på portb som blir utgångar helt plötsligt. (laddar jag $ff till tccr0a så är alla satta som utgångar)

Jag har kollat i can128def.inc och ddrb är mappad till $04 och tccr0a är mappad till $24. (orginal can128def.inc som följde med AVRstudio ver 4.12 SP1 build 462)

Någon som kan ha en aning om vad som kan strula?
Portarna funkar som dom skall för övrigt. Uart0 samt 1 är oxå ok.

Jag har isolerat interruptrutinerna och provat med bara dom i programmet och får samma problem även då.

Någon som kan ha något tips?

Här är lite delar ur koden. (stackpekare mm är korrekt initierade)

Kod: Markera allt

.org $0000					  ; Reset vector
	jmp init
.org $0022					  ; Timer0 Overflow vector
	jmp	tim0_ovf

interrupt_init:
	ldi		temp,$01		 ; Overflow interrupt enable
	sts		timsk0,temp
	ldi		temp,$05		 ; Prescaler = clk/1024, OC0A disconnected.
	sts		tccr0a,temp
	sei							; Enable global interrupts
Edit: Hmm.... undrar om det kan vara så att portb påverkas efterssom OC0A osv. ligger på portb och har med timern o göra?
Men hela portb borde vell inte dö?
Jag använder mig ju inte av OutputCompare och har ju därför stängt av funktionen i TCCR0A.

Edit2: Nu verkar processorn ha blivit rädd för någon högre makt och började bete sig ganska normalt. (dock inga interrupts, men det kanske kommer det oxå)
Den gör dock inte som den skall med portb enligt databladet.

Postat: 21 mars 2006, 21:32:54
av cykze
Ska du inte använda OUT istället för STS?

Postat: 21 mars 2006, 23:22:26
av Hedis
Inte på denna modellen. Kompilatorn vägrar om man försöker med out.
Registren ligger tydligen inte I/O mappade längre eller hur det nu var.

Postat: 21 mars 2006, 23:27:15
av cykze
Provade med avr-gcc. För TCCR0A använder den OUT och för TIMSK0 använder den STS. Så testa med OUT på TCCR0A. Fast lite underligt verkar det... :?

Postat: 22 mars 2006, 07:03:23
av Hedis
Okej.

Helskummt, har nästan bergsäkert för mig att jag provade med out på den igår, men nu funkar det fint. :)
Nu återstår bara o se om jag får interrupts.

Tack sålänge.


Edit: Fungerar kanon. Tack!