fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

Problema ICD-3 debugea pero no programa

10 Respuestas
2 Usuarios
0 Reactions
6,332 Visitas
fusion
Respuestas: 391
Topic starter
(@fusion)
Ardero
Registrado: hace 17 años

Funciona en modo debugger pero no en programmer:

Le he conectado el dspic30f3013 y en modo debugger vá muy bien (ahora que sé que hay que dar al botón para meter el programa en el pic), trasmito y leo desde la uart-2 (la uart-1 la usa el debugger para programar y debugear al pic), he comprobado con labview que puedo meterle datos y salen bien, ahora bien, el problema es que cuando selecciono en "modo programador", pues puedo "buildear" y meter en el pic, pero este se queda parado, he probado a apagarlo y encenderlo a ver si salen los datos por el puerto-2 pero nada ¿hay que dar a algún botón para que el pic arranque?

Por cierto, hay que quitar el TX de la uart externa pues al pic le sienta fatal que le entren 3v cuando no está alimentado. El TX se le mete cuando ya está alimentado y se le quita antes de apagarlo

Responder
9 respuestas
ranganok
Respuestas: 3875
(@ranganok)
Ardero
Registrado: hace 19 años

Para el TX un diodo -entre TX (A) y VCC (K)-, y un fusible ptc para cortar la corriente. De esta forma te evitas sobresaltos.

Pregunta tonta ¿Una vez programado quitas el ICD-3? lo digo porque sino se queda en reset...

S2

Ranganok Schahzaman

Responder
fusion
Respuestas: 391
Topic starter
(@fusion)
Ardero
Registrado: hace 17 años

Pues no sabía que hay que quitarlo, imagino solo hay que quitar el pin del reset (no el PGC y PGD).
Gracias también por lo del fusible

Responder
fusion
Respuestas: 391
Topic starter
(@fusion)
Ardero
Registrado: hace 17 años

Sigue sin funcionar. ¿Conviene poner un retardo en MCLRn RC?.
¿Se puede poner en vez del diodo y el fuse una resistencia de 220ohm en el RX? (no creo influya mucho a la velocidad pues vá a 38400bps) he visto que el máximo rating en cada pin es 25mA, imagino habrá un par de diodos de clamp en la entrada de cada señal.

He visto que el ICD-3 en modo programación permite dejarlo en reset:"Hold in Reset" o salir del mimo: "Release From Reset" . Imagino que activará el reset para programar:
programador%2520ICD 3

Responder
fusion
Respuestas: 391
Topic starter
(@fusion)
Ardero
Registrado: hace 17 años

He puesto una señal que cambia de 1 a 0 en la rutina principal. Cambia de nivel sin problemas en modo debug, pero en modo programación el canal CH3 conectado a TX2 y el canal CH1 conectado a RC14 aparecen así:
LeCrogy3
Por lo que sea no están bien programados, es como si estuvieran en alta impedancia

Mi pregunta es: ¿es culpa del programador o es que tengo las salidas en modo entrada o algo así?

Así he programado el pic:
void setup(void)
{
LATCbits.LATC13=LATCbits.LATC14=0;//FLAG# //borrar!!

//configurar aquí puertos analogicos y digitales
// Configure AN6,7 as analog inputs:
ADCON3bits.ADCS = 0xC0; // Tad = 266ns, conversion time is 12*Tad
ADCON1bits.ADON = 1; // Turn ADC ON
TRISB=0xFFFF; //Todos los puertos B son inputs
TRISC=0x8FFF; //Puertos C13 y 14=outputs, resto inputs
TRISD=0xFFFF; //Puertos D todos inputs
ADPCFG=0xC0; //puerto AN6(Vbat) y AN7 analógicos, resto digitales
//ATENCION, RB0,1,2,3,4,5 son entradas de sensor de trenes 0,1,2,3,4,5

//Configurar Uart-1
U1BRG = Fcy/BAUDRATE/16-1; // 9600 baud @ 14.7456 MIPS
U1STAbits.UTXISEL = 1; // interrupt when TX buffer is empty ??
U1MODEbits.UARTEN = 1; // Enable UART-1
U1STAbits.UTXEN = 1; // Enable TX-1
//Configurar Uart-2
U2STAbits.UTXISEL = 1; // interrupt when TX buffer is empty ??
U2BRG = Fcy/BAUDRATE/16-1; // 9600 baud @ 14.7456 MIPS
U2MODEbits.UARTEN = 1; // Enable UART-2
U2STAbits.UTXEN = 1; // Enable TX-2

// Configure Timer 1
// In this example, I'm setting PR1 and TCKPS for 8Hz (8=30MHz/14648/preescaler Preescaler=128)
PR1 = 65535; // Set the Timer 1 period (max 65535)
TMR1 = 0; // Reset Timer 1 counter
IEC0bits.T1IE = 0; // Disable Timer 1 interrupt
T1CONbits.TCKPS = 3; // Prescaler (0=1:1, 1=1:8, 2=1:64, 3=1:256) Frecuencia=Fcy/256=57600hz=17.36us
T1CONbits.TON = 1; // Turn on Timer 1

//Leer puerto de entrada: {RD9 RD8 RB9 RB8}
REPDIR=(byte) ( ((PORTD>>6)&0xC) + ((PORTB>>8)&0x3) );
LATCbits.LATC13=LATCbits.LATC14=1;//Líneas de SALIDA de control de Hope1 y Hope2

//byte periodo_TX indica cuando mando el primer comando por TX,
//multiplexado cuya frecuencia depende del número de trasmisor:
periodo_TX=REPDIR+PERIODO;
}

En mi pic:
RX1 coincide con RF2
TX1 coincide con RF3
RX2 coincide con RF4
TX2 coincide con RF5

¿He de configurar F2 y F4 como entrada y F3 y F5 como salida?

Responder
Página 1 / 2
Compartir: