Autor Tema: Posibles "bugs" del compilador de CCS  (Leído 252572 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado rodrigo_control2009

  • PIC12
  • **
  • Mensajes: 54
    • Blog  de la  Orden del  temple
Re: Posibles "bugs" del compilador de CCS
« Respuesta #75 en: 17 de Enero de 2011, 13:59:50 »
Hola tuve  algunos problemas con la recepción usb_cdc. Hice varias pruebas con el CCS 4.104 y  generaba problemas en la recepción usb_cdc, ya que la rx/tx  por el modulo serie funciona bien y lo que recibe por el modulo serie y retransmite por el usb_cdc funciona muy bien, quedando  solo  con problemas la recepción usb_cdc.
El problema se solucionó al compilar el mismo código, con una versión anterior de CCS 4.023.
Todo lo he realizado en win 7  64 bit
Este es el Cod

#include <18F4550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, parity=N)
#include <usb_cdc_HomeScada.h>                  //puede  ser  cualquier otro a gusto del usuario



char s;

void main(){
char c=0x00;
delay_ms(300);
usb_cdc_init();                         //esta  en  usb_cdc   y  configura  los  baudios, bit paridad etc
usb_init();                             // esta en pic18_usb llama  a usb_init_cs() q a su vez  llama a usb_task()
while(!usb_cdc_connected()) {}

enable_interrupts(global);
enable_interrupts(int_rda);


do{
 usb_task();                             //está en pic18_usb
 if (usb_enumerated())     {
 c=usb_cdc_getc();                     //if (c != 0x00){     // si lo  recibido por usb no  es NULL
 usb_cdc_putc(c);
 putc(c);
 c=0x00;                               // lo retransmite por rs232 y hace eco usb
                           }
 } while(true);
         }

#int_rda
void serie_isr(){
if (kbhit()){
   output_high(pin_c0);         //enciende led para  monitorea q entro en rutina de rx
   s=getc();
   putc(s);
   delay_ms(1);
   output_low(pin_c0);
   usb_task();                 //está en pic18_usb
 if (usb_enumerated()){ if (s != 0x00) usb_cdc_putc(s); s=0x00;}
}}
“El hombre ideal, sería persa de origen, árabe de religión, iraquí por cultura, hebreo por experiencia, cristiano por conducta, hindú por perspicacia, sufí por su estilo de vida, angélico por su moral y divino por sus ideas y conocimiento, destinado a la eternidad”

Desconectado gmua

  • PIC10
  • *
  • Mensajes: 14
Posibles "bugs" del Compilador C CCS v4.114
« Respuesta #76 en: 30 de Enero de 2011, 20:42:45 »
Yo tuve problemas con la versión 4.114 y los LCD's de 16X2, el siguiente programa compilaba bien pero no mostraba nada en el ISIS, probé con otros ejemplos, busqué posibles soluciones en los foros de electrónica y nada, hasta que cambié a la versión 4.106 y todo funcionó correctamente, no he encontrado ninguna mención de este error en los foros, espero les sirva, saludos.

Código: [Seleccionar]
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)

#include <lcd.c>

void main() {

   lcd_init();
   lcd_putc("\fReady...\n");
}

Desconectado vdiazg

  • PIC12
  • **
  • Mensajes: 68
Re: Posibles "bugs" del compilador de CCS
« Respuesta #77 en: 07 de Marzo de 2011, 19:59:42 »
Una consulta, alguien sabe que significa cuando en la ventana de watch del MPLAB en algunos registros en la columna donde dice address sale una letra "P" verde y gordita, aveces sale cuando lo simulo paso a paso; la verdad no creo que me haya afectado en algo a mis programas pero siempre me queda esa duda, creo que me sale por lo general cuando los programas son extensos.

Uso MPLAB v8.40 y CCS 4.114

Muchas Gracias
quiero construir un "Condensador de flujos"

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Posibles "bugs" del compilador de CCS
« Respuesta #78 en: 26 de Marzo de 2011, 22:11:25 »
Hola.

No se si será un bug ... pero me paso lo siguiente con la función memset():

Resulta que después de adquirir un string por la USART, aplicaba esa función para limpiar el buffer de recepción y me afectó la interrupción del Timer0 con la cual generaba un PWM. La solución: clarear las variables con un for

Saludos

El papel lo aguanta todo

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Posibles "bugs" del compilador de CCS
« Respuesta #79 en: 30 de Marzo de 2011, 14:38:27 »
Hola amigos, lo que me está sucediendo es verdaderamente incomprensible, sólo por configurar una variable (sin utilizarla siquiera), el programa se altera y se incrementa en 285 líneas (4%), el caso es este.

con esta configuración el programa se altera en algunas funciones y se incrementa 285 líneas
Código: [Seleccionar]
int con_grabar_memo;
int tiempo_menu;
int16 peso_bruto;

short ban_05seg;
short ban_1seg;

De esta forma el programa funciona bien y se disminuye 285 líneas
Código: [Seleccionar]
int con_grabar_memo;
int tiempo_menu;
//int16 peso_bruto;

short ban_05seg;
short ban_1seg;

Pues estos fantasmas no los entiende nadie, pero si alguien tiene algún comentario, bienvenido.

Saludos.


Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Posibles "bugs" del compilador de CCS
« Respuesta #80 en: 30 de Marzo de 2011, 15:03:59 »
Diego eso si está raro  :shock:

¿que versión usas?

trata lo siguiente, para los bits que declaras mas abajo, declara un entero de 1 byte (int8) y luego defines los primeros dos bits a esos short, luego descomentas el int16 y compila a ver que sucede

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Posibles "bugs" del compilador de CCS
« Respuesta #81 en: 30 de Marzo de 2011, 18:17:03 »
Hola Pedro, yo utilizo la 4.119 pero probé este mismo programa con la versión 4.057 y sucede lo mismo, probé agrupando los short y pasa igual.

el programa se "arregló" al configurar otras cinco variables de las mismas, peso_bruto2, peso_bruto3, ... peso_bruto6, me da por pensar que como el PIC 16F876a tiene mapeada la RAM en varios bancos mi programa se encuentre en el límite de alguno de ello...???
Código: [Seleccionar]
int tiempo_menu;
int16 peso_total;
int16 peso_cero;
int16 peso_inicial;
int16 valor_ad;
int16 valor_temperatura;
int16 peso_total_alar;
int16 peso_bruto;
int16 peso_bruto2;
int16 peso_bruto3;
int16 peso_bruto4;
int16 peso_bruto5;
int16 peso_bruto6;
signed int16 peso_post_cero;
signed int16 peso_diferencia;
signed int16 peso_modi;
signed int16 res_peso_modi;
signed int16 memoria_actual;

Todas las variables que tengo definidas
Código: [Seleccionar]
char dato_recibido;

int dir_ad1100 = 0b10010000;
int pos_flecha;
int max_flecha;
int min_flecha;
int con_menu;
int res_con_menu = 255;
int reg_led;
int con_1seg;
int dec_hora; //Definicion de variables ds1307
int uni_hora;
int dec_minu;
int uni_minu;
int dec_seg;
int uni_seg;
int dia_sem;
int dec_dia;
int uni_dia;
int dec_mes;
int uni_mes;
int dec_anio;
int uni_anio;
int dec_hora_ini;
int uni_hora_ini;
int dec_minu_ini;
int uni_minu_ini; //variable peso inicial
int dec_dia_ini;
int uni_dia_ini;
int dec_mes_ini;
int uni_mes_ini;
int dec_anio_ini;
int uni_anio_ini;
int dec_h_tempo;
int uni_h_tempo;
int dec_m_tempo;
int uni_m_tempo;
int reg_configura;
int reg_peso_mover;
int con_cheq_mover = 4;
int respaldo_global;
int confi_decimal;
int segundos;
int numero_memo;
int con_grabar_memo;
int tiempo_menu;
int16 peso_total;
int16 peso_cero;
int16 peso_inicial;
int16 valor_ad;
int16 valor_temperatura;
int16 peso_total_alar;
int16 peso_bruto;
int16 peso_bruto2;
int16 peso_bruto3;
int16 peso_bruto4;
int16 peso_bruto5;
int16 peso_bruto6;
signed int16 peso_post_cero;
signed int16 peso_diferencia;
signed int16 peso_modi;
signed int16 res_peso_modi;
signed int16 memoria_actual;

short ban_05seg;
short ban_1seg;
short ban_tec_enc;
short ban_tec_menu;
short ban_tec_cero;
short ban_tec_incre;
short ban_tec_decre;
short ban_tec_enter;
short ban_tec_salir;
short ban_tec_p_ini;
short ban_tec_lb;
short ban_tec_m_peso;
short ban_tec_mover;
short ban_tec_tempo;
short ban_tec_egreso;
short ban_temperatura;
short ban_buzzer;
short ban_reloj;

const char los[] = "LOS";
const char pinos[] = "PINOS";
const char tecnologia[] = "TECNOLOGIA PARA UNA    VIDA MAS FACIL    www.lospinos-sa.com ";
//"TECNOLOGIA-PARA-UNA----VIDA-MAS-FACIL----www.lospinos-sa.com-"
const char peso[] = "PESO";
const char actu[] = "Actu.";
const char inic[] = "Inic.";
const char dife[] = "Dife.";
const char mover[] = " Mover";
const char egreso[] = "Egreso";
const char decimal[] = "Decimal";
const char memoria[] = "Memoria";
const char hora_fecha[] = "Hora fecha";
const char hh_mm[] = "hh:mm";
const char temporizar[] = "Temporizar";
const char configuracion[] = "Configuracion";
const char temporizador[] = "Temporizador";
const char cero[] = "Fijar cero y";
const char restablecer[] = "restablecer los";
const char registros[] = "registros ?";
const char p_inicial[] = "Fijar peso inic. ?";
const char peso_ini[] = "Peso ini.";
const char modi_peso[] = "Modificar peso ?";

char cadena_peso[] = "0000000";

Gracias.

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Posibles "bugs" del compilador de CCS
« Respuesta #82 en: 30 de Marzo de 2011, 18:52:35 »
Señores, lamento lo sucedido, al menos en esta oportunidad no hay un bug en CCS, es un error mío, estaba cargando un array definido con 8 caractares con igual número de datos no dejando espacio para el caracter nulo, entonces este se desbordaba en cualquiera variable.

He aquí la importancia y/o beneficio de la depuración paso a paso.

Muchas gracias.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Posibles "bugs" del compilador de CCS
« Respuesta #83 en: 31 de Marzo de 2011, 00:10:58 »
Aporto otro bug relacionado a la librería usb.c.

Estoy utilizando el CCS v4.110.

Utilizando modo HID en la librería, si el array  USB_CLASS_SPECIFIC_DESC[] = {data...} excede los 256 elementos, el uC falla al enviar el descriptor o parte de el a la PC y resulta en un fallo de instalacion en el sistema operativo.

La solución la encontré yendo al archivo USB.C y cambiando la linea 173:
int8 usb_getdesc_ptr; unsigned int8 usb_getdesc_len=0;             //for reading string and config descriptors

por esta:
int16 usb_getdesc_ptr; unsigned int16 usb_getdesc_len=0;             //for reading string and config descriptors

Y ahora si, todo rula de maravillas.

Este error solo sucede si se utilizan dispositivos HID, y con una tabla de descriptores con un tamaño mayor a los 256 elementos como he mencionado.

Saludos.


"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: Posibles "bugs" del compilador de CCS
« Respuesta #84 en: 15 de Abril de 2011, 19:01:24 »
Hola amigos, esta vez un bug, no del compilador en si, mas es en el editor. Y es que cuando realizo comparaciones utilizando el caracter { o } el orden de las ramas se pierde , y cuando cierro rama no la hace correctamente:

Código: [Seleccionar]
     
switch(buffer_teclado[++direccion_buffer_teclado])
         {
         case 'T':         ///CONFIGURACION QUE INDICA EL NUMERO DE TEXTO Y REALIZA LA DETECCION DE
               {
               if(buffer_teclado[direccion_buffer_teclado+2] == '}')                   ///DETECTA SI EL VALOR ES DE 1 CIFRA
                  {
                  if(isdigit(buffer_teclado[++direccion_buffer_teclado]))              ///SE ASEGURA QUE EL DATO ES UN NUMERO VALIDO
                     {
                     direccion = (buffer_teclado[direccion_buffer_teclado])-48;       ///SETEA EL VALOR DE LA DIRECCION EN LA KE SE
                     direccion *= 100;                                                 ///LOS PAKETES DE DIRECCIONES SON MULTIPLOS DE 100
                     ++direccion_buffer_teclado;                                       ///SE COLOCA EL BUFFER PARA QUE LEA LA SIGUIENTE {
                     itera_max++;                                                      ///SE AUMENTA EL CONTROL DE VECES MAXIMO QUE SE ESTA EN ESTA FUNCION
                     }
                  }
               }


Cuando cierro en case 'T' se me cierra hasta if(buffer_teclado[direccion_buffer_teclado+2] == '}') lo demas se keda fuera, mas la compilacion es correcta.

Algo parecido ocurre cuando se usa el caracter '.

saludos

A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Posibles "bugs" del compilador de CCS
« Respuesta #85 en: 15 de Abril de 2011, 20:00:05 »
kallitos coloca la versión del IDE donde se presenta la falla
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: Posibles "bugs" del compilador de CCS
« Respuesta #86 en: 15 de Abril de 2011, 20:11:45 »
4.088

« Última modificación: 15 de Abril de 2011, 20:21:06 por KALLITOS »
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Posibles "bugs" del compilador de CCS
« Respuesta #87 en: 16 de Abril de 2011, 09:09:05 »
Es probable lo hayan resuelto en las nuevas versiones, mira en la lista de actualizaciones a partir de esa versión a ver si no lo encuentras resuelto...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: Posibles "bugs" del compilador de CCS
« Respuesta #88 en: 16 de Abril de 2011, 12:22:31 »
Instale la 4.119 y lo mismo, pero me ocurrio un problema con usb cdc y me regrese a la anterior.

saludos
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado electro_0x7c1

  • PIC10
  • *
  • Mensajes: 2
bootloader pdfsusb no funciona en 4.114
« Respuesta #89 en: 22 de Abril de 2011, 05:33:23 »
Saludos, he trabajado con el bootloader usb de Microchip, con la aplicacion PDFSUSB para descargar programas al PIC18F4550, hago los programas en CCS Version 4.023 y todo funciona bien, pero ahora quise instalar la version 4.114 compilo los programas y los grabo con el PDFSUSB el cual marca que todo se grabo bien pero creo que no los graba en realidad porque el PIC no hace nada.

Perdon por esta pregunta, es que ya llevo algun tiempo queriendo usar el bootloader de Microchip con esta version 4.114 y no encuentro el porque con esta version mas reciente no puedo usar el bootloader de Microchip y con la anterior si. He visto los archivos .HEX generados de las ambas versiones y son completamente diferentes.

Saludos.


 

anything