Hola
Estoy empezando con el dspic30f4011. Uso mplab 8.0 y el compilador c30. Estoy compilando un ejemplo levemente modificado del libro Diseño práctico de aplicaciones de Angulo. Para configurar las entradas y salidas uso el Visual Initializer.
Configuro...
Port B - RB0, RB1 y RB2 como salidas
Oscillator - Fosc 4MHz, primary oscillator xt mode
16 bit timer 1 - Enable on startup, prescale 1:256, desired time period 1000ms, actual time period 0.001000ms (creo que aquí está el problema)
Interrupts and flags configuration - Enabled ints T1, priority 4
El programa principal es...
#include "p30f4011.h"
/*
RB0 verde
RB1 ámbar
RB2 amarillo
*/
void __attribute__((__interrupt__)) _T1Interrupt(void)
{
IFS0bits.T1IF=0; //borra flag de interrupción
if(PORTBbits.RB0==1) //rojo
PORTB=2; //prende ámbar
if(PORTBbits.RB1==1) //ámbar
PORTB=4; //prende verde
if(PORTBbits.RB2==1) //verde
PORTB=1; //prende rojo
}
int main()
{
VisualInitialization(); //usa lo configurado en el VI
PORTB=1; //valor inicial
while(1)
asm("clrwdt"); //borra watchdog
return 0;
}
Compilo y todo sale bien, a excepción de una advertencia

Clean: Deleting intermediary and output files.
Clean: Deleted file "D:\santiago\PICs\programas\dspic semaforo\init_dsPIC30F4011.o".
Clean: Deleted file "D:\santiago\PICs\programas\dspic semaforo\semaforo.o".
Clean: Deleted file "D:\santiago\PICs\programas\dspic semaforo\dspic adc.cof".
Clean: Deleted file "D:\santiago\PICs\programas\dspic semaforo\dspic adc.hex".
Clean: Done.
Executing: "C:\Archivos de programa\Microchip\MPLAB C30\bin\pic30-gcc.exe" -mcpu=30F4011 -c "Generated Files\VDIInit\init_dsPIC30F4011.s" -o"init_dsPIC30F4011.o" -Wa,-g
Executing: "C:\Archivos de programa\Microchip\MPLAB C30\bin\pic30-gcc.exe" -mcpu=30F4011 -x c -c "semaforo.c" -o"semaforo.o" -g -Wall
semaforo.c: In function '_T1Interrupt':
semaforo.c:10: warning: PSV model not specified for '_T1Interrupt';
assuming 'auto_psv' this may affect latency
semaforo.c: In function 'main':
semaforo.c:23: warning: implicit declaration of function 'VisualInitialization'
Executing: "C:\Archivos de programa\Microchip\MPLAB C30\bin\pic30-gcc.exe" -mcpu=30F4011 "init_dsPIC30F4011.o" "semaforo.o" -o"dspic adc.cof" -Wl,-L"C:\Archivos de programa\Microchip\MPLAB C30\lib",-Tp30F4011.gld,-Map="dspic adc.map",--report-mem
Program Memory Usage
section address length (PC units) length (bytes) (dec)
------- ------- ----------------- --------------------
.reset 0 0x4 0x6 (6)
.ivt 0x4 0x7c 0xba (186)
.aivt 0x84 0x7c 0xba (186)
.text 0x100 0x13a 0x1d7 (471)
.dinit 0x23a 0x2 0x3 (3)
.isr 0x23c 0x2 0x3 (3)
__FOSC 0xf80000 0x2 0x3 (3)
__FWDT 0xf80002 0x2 0x3 (3)
__FBORPOR 0xf80004 0x2 0x3 (3)
Total program memory used (bytes): 0x360 (864) 1%
Data Memory Usage
section address alignment gaps total length (dec)
------- ------- -------------- -------------------
Total data memory used (bytes): 0 (0)
Dynamic Memory Usage
region address maximum length (dec)
------ ------- ---------------------
heap 0 0 (0)
stack 0x800 0x800 (2048)
Maximum dynamic memory (bytes): 0x800 (2048)
Executing: "C:\Archivos de programa\Microchip\MPLAB C30\bin\pic30-bin2hex.exe" "D:\santiago\PICs\programas\dspic semaforo\dspic adc.cof"
Loaded D:\santiago\PICs\programas\dspic semaforo\dspic adc.cof.
BUILD SUCCEEDED: Fri Jul 18 13:12:03 2008
Conecto el dspic con su cristal de 4MHz, sus capacitores; los leds con sus resistencias; mclr a 5V; y todos los vdd, vss, avdd y avss con sus voltajes respectivos.
¿Qué hace el dspic? Solo se queda en la parte del while(1) y aparentemente no entra a la interrupción del timer 1, es decir no cambian las salidas RB1 ni RB2, solo se queda encendido RB0.
¿Qué me sugieren? Está raro el problema, pero como soy nuevo ya se me acabaron las ideas

Gracias
