uControl
Junio 19, 2013, 08:21:23 *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: 1 2 [3]   Ir Abajo
  Imprimir  
Autor Tema: ADC dspic30f4013 en CCS  (Leído 4400 veces)
0 Usuarios y 1 Visitante están viendo este tema.
ing_barreto
PIC10F
*
Desconectado Desconectado

Sexo: Masculino
Mensajes: 53


Novel en el manejo de Microcontroladores


« Respuesta #30 : Julio 02, 2012, 01:05:48 »

Debería revisar la configuración del Pickit 3 en MPLAB, no se como será en este caso, le comento, en el caso del ICD2 o ICD3 tiene la opción de indicarle que entregue 5V por la conexión de 5V o que solo la use para sensar que el PIC esta correctamente alimentado, es decir la conexión de 5V, por defecto, no entrega tensión, solo sensa que el PIC este alimentado, de lo contrario le va a dar error en cuanto quiera programar.

Por otro lado, según se, el PIC que usted esta usando se alimenta con 3.6V como máximo, si es así se debe conectar a los 3.6V y setear que el PIC esta alimentado con esa tensión en el MPLAB.

En el caso del ICD2 solo se podía debuggear PIC de 5V y de menos tensión con un adaptador y el ICD3 ya es compatible con PICs de baja tensión y permite seleccionar la tensión de trabajo en su configuración.

Entonces debería averiguar si PicKit3 es compatible con PICs de baja tensión, de lo contrario de lo contrario es muy probable que queme el PIC o incluso el PicKit.


Acabo de revisar y aparentemente si se puede configurar la tensión normal de trabajo en la pestaña de configuración del PicKit3, una vez seleccionado el debugger PicKit3, solo debe ir a Debugger --> Settings y en la pestaña Power seleccionar el voltaje, recuerde que lo que usted llama 5V en realidad es VDD y debe ir a la tensión de alimentación del PIC.

En esa misma pestaña se le puede indicar al PicKit3 que debe entregar tensión por la conexión VDD, si usted esta alimentando el PIC con su propia fuente deje desactivada esa opción para que no haya "colisión de voltajes".

Amigo E_Blue que diferencia hay entre simular el programa con Mplab sim y simular con la pickit3? cual es la diferencia entre las dos formas de realizar simulación.
En línea

Luis Angel Hernández Barreto
E_Blue
PIC24F
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 2149


Electric Blue


« Respuesta #31 : Julio 02, 2012, 11:05:53 »

El MPLAB SIM es un entorno de simulación virtual, trabajas sobre un modelo que simula el PIC en la memoria de la PC y le inyectas señales y datos también virtuales, lo bueno es que no se produce desfase o se pierden datos si haces pausa y puedes ir paso a paso con un log de los últimos 65k steps del programa y con breakpoints ilimitados.

El PicKit 3 trabaja con un micro real en tiempo real con inyección de señales y datos reales y breakpoints limitados según el PIC que uses, pero puedes tener errores de sincronizacion en datos y demás cuando haces una pausa en medio de un envío o recepción de datos por ejemplo.
En línea

Procesando...
Si escribes para la (censurado) solo ella va a leerte.

Si quieres ayuda con tu proyecto recuerda agregar información del mismo, y no seas haragán y esperes tener todo servido, esto es un foro, no una bolsa de trabajo.
ing_barreto
PIC10F
*
Desconectado Desconectado

Sexo: Masculino
Mensajes: 53


Novel en el manejo de Microcontroladores


« Respuesta #32 : Julio 02, 2012, 03:28:49 »

Me tome el trabajo de crear un proyecto con el código que posteaste y creo que encontré por lo menos una parte del problema, al parecer los int8 e int16 están siendo tomados como integers con signo; 0xFF en una variable con signo es igual a -1, encima estas imprimiendo como si fuesen unsigned.
¿Que sale de todo esto? No se, pero seguro que no lo que esperas que salga. Tongue Grin

Código:
lcd_gotoxy(0,1);
   printf(lcd_putc,"mayor= %u %Lu",mayores,Lect_adc);
  
   lcd_gotoxy(0,2);
   printf(lcd_putc,"men %u %f",menores,voltaje);

Te pregunto, ¿Como estas debuggeando? ¿Usas la ventana Watch para ver las variables? duda


He conseguido realizar el debugger con el mplab sim bueno tuve problemas con la pantalla lcd se quedaba en la librería lcd.c y no salia de la misma.
en fin he obtenido los resultados que ya usted había obtenido.

Los cuales fueron
resultados variable menores tomados de la ventana Watch.
menores=0xFF
decimal = -1
binary = 11111111
No tengo ni idea de solucionar dicho problema alguna sugerencia ?

* debugger.png (120.33 KB - descargado 44 veces.)
En línea

Luis Angel Hernández Barreto
E_Blue
PIC24F
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 2149


Electric Blue


« Respuesta #33 : Julio 02, 2012, 04:40:33 »

Ahora estoy en el trabajo, por la noche le contesto, como respuesta rápida le digo que podría considerar crear las variables como unsigned.
En línea

Procesando...
Si escribes para la (censurado) solo ella va a leerte.

Si quieres ayuda con tu proyecto recuerda agregar información del mismo, y no seas haragán y esperes tener todo servido, esto es un foro, no una bolsa de trabajo.
ing_barreto
PIC10F
*
Desconectado Desconectado

Sexo: Masculino
Mensajes: 53


Novel en el manejo de Microcontroladores


« Respuesta #34 : Julio 02, 2012, 04:47:08 »

Bueno He logrado solucionar el problema de dividir una variable int16 en dos variables int8 para realizar transmisión serial dspic30f4013 a pic18f4550.

Código:

#include <30F4013.h>

#FUSES NOWDT                   
#FUSES HS2_PLL16                     
#FUSES PR_PLL                   
#FUSES NOCKSFSM             
#FUSES WPSB16                 
#FUSES WPSA512               
#FUSES PUT64                 
#FUSES NOBROWNOUT           
#FUSES BORV47                 
#FUSES LPOL_HIGH               
#FUSES HPOL_HIGH             
#FUSES NOPWMPIN               
#FUSES MCLR                   
#FUSES NOPROTECT               
#FUSES NOWRT                   
#FUSES NODEBUG               
#FUSES NOCOE                   
#FUSES ICSP1                 
#FUSES RESERVED         

#device adc=12         

#use delay(clock=120000000)

#define LCD_ENABLE_PIN  PIN_F4                                   
 #define LCD_RS_PIN      PIN_F6                                 
 #define LCD_RW_PIN      PIN_F5                                 
 #define LCD_DATA4       PIN_D2                                   
 #define LCD_DATA5       PIN_D8                                 
 #define LCD_DATA6       PIN_D1                                   
 #define LCD_DATA7       PIN_D0                                 
 #include <lcd.c>
 #include <math.h>
 #include <stdlib.h>
 
 #use rs232(baud=9600,bits=8,parity=N,UART1)  //xmit=PIN_F1 = TX ,rcv=PIN_F0 = RX
 

 unsigned int16 Lect_adc;
 unsigned int8 mayores;
 unsigned int8 menores;
 
 //funcion enviar serial
 void EnviarSerial()
 {
  //  mayores=make8(Lect_adc,0);
  //  menores=make8(Lect_adc,1);
   
    mayores=Lect_adc>>8; //8 bits menos significativos
    menores=Lect_adc;   //8 bits mas significativos
 
    putchar('*');
    putc(mayores);
    putc(menores);
 }
 
 void main()
{
 r_term=0;
 T_C=0;
 LnRes=0;
 LnRes3=0;
 voltaje=0;
 Lect_adc=4095;
 mayores=0;
 menores=0;
 lcd_init();

 setup_adc_ports (sAN2|VREF_VREF);
 setup_adc(ADC_CLOCK_DIV_32|ADC_TAD_MUL_2);
 
 while(true)
 {
 
     EnviarSerial();
 
 lcd_gotoxy(0,1);
 printf(lcd_putc,"\f menores=%u",menores);
   
 lcd_gotoxy(0,2);
 printf(lcd_putc," mayores=%u",mayores);
 
 delay_ms(1000);
 }
}


Bueno el problema era que me estaba tomando las variables int8 con signo. y gracias a la asesoría prestada por el E_Blue lo he logrado solucionar.
la clave fue declarar las variables así:

unsigned int16 Lect_adc;
unsigned int8 mayores;
unsigned int8 menores;

declarar las variables sin signo.
Bueno si alguien entiende mejor lo de unsigned Le agradecería el comentario.

Siguiente reto realizar la comunicación serial con el pic18f4550 enviar el valor del adc.
Pronto publicare los resultados  Cool o a lo mejor publicare los problemas que tenga para que me ayuden  Evil Evil
En línea

Luis Angel Hernández Barreto
E_Blue
PIC24F
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 2149


Electric Blue


« Respuesta #35 : Julio 02, 2012, 04:53:27 »

Siguiente reto realizar la comunicación serial con el pic18f4550 enviar el valor del adc.
Pronto publicare los resultados  Cool o a lo mejor publicare los problemas que tenga para que me ayuden  Evil Evil

Noooooooooooooo!!!! Insultos  cabezaso a la pared



 Grin Grin Grin
En línea

Procesando...
Si escribes para la (censurado) solo ella va a leerte.

Si quieres ayuda con tu proyecto recuerda agregar información del mismo, y no seas haragán y esperes tener todo servido, esto es un foro, no una bolsa de trabajo.
ing_barreto
PIC10F
*
Desconectado Desconectado

Sexo: Masculino
Mensajes: 53


Novel en el manejo de Microcontroladores


« Respuesta #36 : Julio 07, 2012, 12:42:08 »

Hola de nuevo bueno he realizado con éxito por el momento la comunicación serial anexo código del pic18f4550 que recibe los datos enviados del dsPIC30f4013.

Código:
//configuración de fuses

#include <18F4550.h>
#device adc=10
#FUSES NOWDT                 
#FUSES WDT128                 
#FUSES XTPLL                   
#FUSES NOPROTECT               
#FUSES NOBROWNOUT               
#FUSES BORV28                 
#FUSES NOPUT               
#FUSES NOCPD                   
#FUSES STVREN                   
#FUSES NODEBUG                 
#FUSES NOLVP                   
#FUSES NOWRT                   
#FUSES NOWRTD                   
#FUSES IESO                 
#FUSES FCMEN                   
#FUSES NOPBADEN                 
#FUSES NOWRTC                   
#FUSES NOWRTB                   
#FUSES NOEBTR                   
#FUSES NOEBTRB                 
#FUSES NOCPB               
#FUSES MCLR                   
#FUSES LPT1OSC               
#FUSES NOXINST                   
#FUSES PLL1                   
#FUSES CPUDIV1               
#FUSES USBDIV                 
#FUSES VREGEN                 
#FUSES ICPRT                   
#use delay(clock=48000000)

  //configuración pines comunicación serial
 #use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7,bits=8,parity=N)

  //configuración pines LCD
     #define LCD_ENABLE_PIN  PIN_B4                                   
     #define LCD_RS_PIN      PIN_B2                                   
     #define LCD_RW_PIN      PIN_B3                                   
     #define LCD_DATA4       PIN_D4                                   
     #define LCD_DATA5       PIN_D5                                   
     #define LCD_DATA6       PIN_D6                                   
     #define LCD_DATA7       PIN_D7
     #include <lcd.c>
     #include <stdlib.h>

unsigned int16 AdcT;
unsigned int8 aux;


//Interrupción comunicación serial
#int_RDA
 void RDA_isr(void)
 {
  aux=getc();
 }
 
void main()
{

 AdcT=0;
 aux=0;

 lcd_init();
 
 enable_interrupts(INT_RDA);
 enable_interrupts(GLOBAL);

 WHILE(true)
 {
     
    lcd_gotoxy(0,1);
    printf(lcd_putc," \f recibiendo: %u ",aux);
 
    delay_ms(1000);

  }
}

Bueno ahora tengo un nuevo reto Realizar la comunicación bidireccional.  Evil
Es decir enviar datos del dsPIC al pic18f y del pic18f al dsPIC .
La idea es realizar un pequeño protocolo de envío de datos de lectura de 10 Sensores 8 de temperatura y 2 electrodos para medir pH.

Pronto colocaré los nuevos problemas de implementación de dicho protocolo.  Grin  Grin  Grin
En línea

Luis Angel Hernández Barreto
arielin1
PIC10F
*
Desconectado Desconectado

Mensajes: 1



« Respuesta #37 : Diciembre 04, 2012, 03:41:58 »

Estoy trabajando en un proyeto muy parecido al tuyo. En mi caso debo trasladar las lecturas del dspic al pi18f4550, y enviar desde el pic18f solicitudes de lecturas específicas del los canales del ADC del dspic al pic18f. He logrado establecer la comunicación entre un pic18f455' y un pic16f877a, en primera instancia, gracias a las posibilidades de debug en proteus. Y ahora mudo el código del pic16f al dspic30f. Cuento con un PICkid 2 pero todo mi programa esta en ccs como le haces para porder pasar al mplab? duda
En línea
E_Blue
PIC24F
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 2149


Electric Blue


« Respuesta #38 : Diciembre 04, 2012, 04:11:23 »

Hay un mundo, o dos, de diferencia entre un PIC16F y un dsPIC30F, pero bueno, la idea básica, creo, sería agarrar todos los códigos fuentes necesarios y crear un nuevo proyecto en MPLAB.
En línea

Procesando...
Si escribes para la (censurado) solo ella va a leerte.

Si quieres ayuda con tu proyecto recuerda agregar información del mismo, y no seas haragán y esperes tener todo servido, esto es un foro, no una bolsa de trabajo.
ing_barreto
PIC10F
*
Desconectado Desconectado

Sexo: Masculino
Mensajes: 53


Novel en el manejo de Microcontroladores


« Respuesta #39 : Diciembre 06, 2012, 09:58:23 »

Estoy trabajando en un proyeto muy parecido al tuyo. En mi caso debo trasladar las lecturas del dspic al pi18f4550, y enviar desde el pic18f solicitudes de lecturas específicas del los canales del ADC del dspic al pic18f. He logrado establecer la comunicación entre un pic18f455' y un pic16f877a, en primera instancia, gracias a las posibilidades de debug en proteus. Y ahora mudo el código del pic16f al dspic30f. Cuento con un PICkid 2 pero todo mi programa esta en ccs como le haces para porder pasar al mplab? duda

Bueno lo que entiendo de la pregunta es como usar el mplab con el ccs. Bueno existe una forma de enlazar los dos software. Busca en google como enlazar ccs con mplab
En línea

Luis Angel Hernández Barreto
sworder
PIC10F
*
Desconectado Desconectado

Mensajes: 5


« Respuesta #40 : Diciembre 07, 2012, 11:33:40 »

como le haces para porder pasar al mplab? duda

mira no necesitas cambiar nada en tu codigo, solo crear un nuevo proyecto en el mplab pero utilizando el compilador de CCS, para esto antes le instalas el plugin de CCS para el mplab, el plugin esta disponible en la pagina de descarga del CCS. y despues agregas tu archivo fuente al proyecto y luego F10 para compilar, para hacer debugging elijes al Pickit2 en la lengueta debugging y listo.

espero haberte ayudado.
En línea
Páginas: 1 2 [3]   Ir Arriba
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.18 | SMF © 2011, Simple Machines
SMFAds for Free Forums
XHTML 1.0 válido! CSS válido!
Página creada en 0.184 segundos con 29 consultas. (Pretty URLs adds 0.012s, 3q)