Hola, somos un grupo que estamos haciendo un proyecto sobre un selector de rumbo para un simulador de vuelo en un dsPIC4013, tampoco me enrollo mucho contando el proyecto q es bastante complejo, si quereis un día lo contamos. El problema que nos lleva de cabeza desde hace dos semanas es el siguiente:
Todo funciono bastante bien en el conjunto del esquematico, y en las pruebas del protoboard, todo también muy bien, al fabricar el pcb, en las pruebas de continuidad y demás, pero cuando ponemos a funcionar...No llegan la mayoria de los datos por la UART, hemos revisado de todo, solo nos queda algun fallo en la inicialización, alguno en el conexionado(auqnue seria extraño al haber funcionado en la protoboard todo bien), también hemos escuchado de todo sobre todo respecto alñ conexionado, así por eso lo hemos pensado traer aquí, porque ni los expertos con los que hemos hablado se aclaran sobre los aspectos más básicos, así hemos pensado en ver aquí.
Datos más tecnicos:
-Utilizamos un dsPIC4013, sin reloj externo, pq utilizamos uno interno a 7,37 MHZ pq poniedolo mas rapido se reseteaba continuamente.
-Utilizamos un programa(creado por nosotros) que corremos en Kubuntu Linux con el kernel 2.6-14, utilizamos el puerto serie para contactar con el dsPIC, al parecer envia cosas coherentes las primera sveces pero despues algo falla y empieza a enviar basura, este programa tiene la funcion de recibir los datos del simulador por el protocolo UDP, enviar los datos al dspIC por el puerto serie y recibir los resultados del dsPIC.
-Para programar en el ordenador hemos usado g++ para el programa de conexion simulador-dsPIC, y para el programa del dsPIC usamos C30.
El esquematico lo podeis ver aquí:(Está en PostScript):http://personales.ya.com/israelgarcia86/APC.ps
y los codigos de incializacion son:
/* Iniciar:
Función de inicialización del dispositivo. Configura los pines de I/O,
temporizadores, módulo de conversión analógico/digital, LCD, UART y botón*/
void Iniciar(void)
{
/* Deshabilita los módulos a utilizar por precaución.
La función de inicialización de los módulos pueden no funcionar si
por defecto están activados */
CloseTimer1();
CloseTimer2();
CloseTimer3();
CloseADC12();
CloseUART1();
/* Configuración de los puertos */
/* TRISB: Los puertos RB8, RB10 y RB11 se utilizan como entradas analógicas. (1=In, 0=Out)
Por una parte, en TRISB se configuran como entradas, y en ADPCFG como analógicas */
TRISB=( 1<<9 | 1<<10 | 1<<11);
ADPCFG=~( 1<<9 | 1<<10 | 1<<11);
LATB=0;
/* No se usa ningún puerto RCx */
TRISC=0; LATC=0;
/* El puerto RD8 se configura como entrada por precacución */
TRISD=1<<8; LATD=0;
OpenUART1(UART_EN & UART_IDLE_CON & UART_ALTRX_ALTTX & UART_DIS_WAKE & UART_DIS_LOOPBACK & UART_DIS_ABAUD & UART_NO_PAR_8BIT & UART_1STOPBIT,
UART_INT_TX & UART_TX_PIN_NORMAL & UART_TX_ENABLE & UART_INT_RX_CHAR & UART_ADR_DETECT_EN & UART_RX_OVERRUN_CLEAR, 23);
ConfigIntUART1(UART_RX_INT_DIS & UART_TX_INT_DIS);
ConfigIntADC12(ADC_INT_ENABLE & ADC_INT_PRI_2);
OpenADC12(ADC_MODULE_ON & ADC_IDLE_CONTINUE & ADC_FORMAT_INTG & ADC_CLK_AUTO & ADC_AUTO_SAMPLING_ON& ADC_SAMP_ON,
ADC_VREF_AVDD_AVSS & ADC_SCAN_ON & ADC_SAMPLES_PER_INT_3 & ADC_ALT_BUF_OFF & ADC_ALT_INPUT_OFF,
ADC_SAMPLE_TIME_31 & ADC_CONV_CLK_SYSTEM & ADC_CONV_CLK_32Tcy,
ENABLE_ALL_DIG & ENABLE_AN9_ANA & ENABLE_AN10_ANA & ENABLE_AN11_ANA,
SCAN_ALL & SKIP_SCAN_AN0 & SKIP_SCAN_AN1 & SKIP_SCAN_AN2& SKIP_SCAN_AN3& SKIP_SCAN_AN4& SKIP_SCAN_AN5& SKIP_SCAN_AN6& SKIP_SCAN_AN7& SKIP_SCAN_AN8& SKIP_SCAN_AN12 & SKIP_SCAN_AN13& SKIP_SCAN_AN14& SKIP_SCAN_AN15);
}
y esto la iniciacion del pic:
/* Bits de configuración del dispositivo: Configurado para utilizar el
oscilador RC interno con PLL x4, con lo que se consiguen 7.37MIPS */
_FOSC (CSW_FSCM_OFF & FRC_PLL4);
/* Se deshabilita el Watchdog temporalmente para facilitar la depuración */
_FWDT (WDT_OFF);
/* El dispositivo se reinicia automáticamente cuando el nivel de tensión
baja de 2V, además, espera 64ms a que se estabilice el nivel de tensión */
_FBORPOR(MCLR_EN & PBOR_ON & BORV_20 & PWRT_64);
/* No es necesario proteger el código */
_FGS (CODE_PROT_OFF);
Creo q con eso se pueden hacer una idea,seguramnete se nos olviden datos importantes para poder investigar, sin duda cualquier cosa que nos pidais os las ponemos practicamente de inmediato, agradeceriamos un monton cualquier minima idea para seguir investigando, no queremos ningun trabajo hecho, pero ya se nos acabo todo por donde buscar. Múchas gracias.