Microcontroladores PIC en Linux.
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

No me entiende estas linea el compilador

Ir abajo

No me entiende estas linea el compilador Empty No me entiende estas linea el compilador

Mensaje por Invitado Miér 11 Jul 2012 - 16:35

Hola amigos.

Retomé el tema de Piklab y SDCC que lo tenía abandonado.

Me bajé la ultima version de SDCC, las Gputils e instalé Piklab de los repositorios de Debian (0.15.7).

Tras crear un proyecto nuevo con plantilla incluida, sin meter nada de código me encontré que no compilaba, primero no me encontraba el .h de mi Pic.

Lo pude arreglar buscando y encontré https://pic-linux.forosactivos.net/t417-problema-con-sdcc-y-piklab como solucion y ya por lo menos compila y linka creando el .hex etc.

El problema es que tengo que comentar la linea de la plantilla que dice:

Código:

word at 0x2007 CONFIG = _XT_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF;

que se me para el compilador en el "2007" y en esta otra linea no reconoce la palabra interrupt:

Código:

void isr() interrupt 0 {


Si las comento compila y linka pero si no las comento no puede seguir y no se como arreglarlo.

Gracias por alguna pista.

Invitado
Invitado


Volver arriba Ir abajo

No me entiende estas linea el compilador Empty Re: No me entiende estas linea el compilador

Mensaje por diguito69 Jue 12 Jul 2012 - 0:28

Sería mejor que pongas los errores que te tira SDCC.

Saludos.

diguito69
Participante
Participante

Mensajes : 11
Fecha de inscripción : 04/07/2011
Edad : 39

Volver arriba Ir abajo

No me entiende estas linea el compilador Empty Re: No me entiende estas linea el compilador

Mensaje por Invitado Jue 12 Jul 2012 - 18:50

diguito69 escribió:Sería mejor que pongas los errores que te tira SDCC.

Saludos.

Pego aqui el error que da:

1.- Este es el prgrama totalmente vacio (sin código)

Código:

/* Plantilla generada por Piklab */
#include <pic16f84a.h>

/* ----------------------------------------------------------------------- */
/* Bits de configuración: adapte los parámetros a su necesidad */

typedef unsigned int word;
word at 0x2007 CONFIG = _XT_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF;




//void isr() interrupt 0 {                                          /* rutina de servicio de interrupciones */
    /* << agregue el código de interrupción >> */
//}

void main() {
    /* << agregue el código >> */
   

}


2.- Y este es el error que da:

Código:

sdcc -mpic14 -p16f84a -V --debug -I/home/miguel/sdcc/ejercicios/ -I--use-non-free -c pr1.c
+ "/usr/local/bin/sdcpp" -nostdinc -Wall -I/home/miguel/sdcc/ejercicios/ -I--use-non-free -D__SDCC_PROCESSOR="16f84a" -DSDCC_PROCESSOR="16f84a" -D__SDCC_PIC16F84A -obj-ext=.o -D__SDCC=3_2_0 -DSDCC=320 -D__SDCC_REVISION=8008 -DSDCC_REVISION=8008 -D__SDCC_pic14 -DSDCC_pic14 -D__pic14 -D__STDC_NO_COMPLEX__ -D__STDC_NO_THREADS__ -D__STDC_NO_ATOMICS__ -D__STDC_NO_VLA__ -isystem "/usr/local/bin/../share/sdcc/include/pic14" -isystem "/usr/local/share/sdcc/include/pic14" -isystem "/usr/local/bin/../share/sdcc/include" -isystem "/usr/local/share/sdcc/include" "pr1.c" 
pr1.c:9: syntax error: token -> '0x2007' ; column 14
*** Salida con estado: 1 ***

que como ves se queja de la linea 9.

Si comento esa linea el codigo queda asi:

Código:

/* Plantilla generada por Piklab */
#include <pic16f84a.h>

/* ----------------------------------------------------------------------- */
/* Bits de configuración: adapte los parámetros a su necesidad */

//typedef unsigned int word;
//word at 0x2007 CONFIG = _XT_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF;




//void isr() interrupt 0 {                                          /* rutina de servicio de interrupciones */
    /* << agregue el código de interrupción >> */
//}

void main() {
    /* << agregue el código >> */
   

}

Y la compilacion asi:

Código:

sdcc -mpic14 -p16f84a -V --debug -I/home/miguel/sdcc/ejercicios/ -I--use-non-free -c pr1.c
pr1.asm:101: mensaje: Page or Bank selection not needed for this device. No code generated.
 
+ "/usr/local/bin/sdcpp" -nostdinc -Wall -I/home/miguel/sdcc/ejercicios/ -I--use-non-free -D__SDCC_PROCESSOR="16f84a" -DSDCC_PROCESSOR="16f84a" -D__SDCC_PIC16F84A -obj-ext=.o -D__SDCC=3_2_0 -DSDCC=320 -D__SDCC_REVISION=8008 -DSDCC_REVISION=8008 -D__SDCC_pic14 -DSDCC_pic14 -D__pic14 -D__STDC_NO_COMPLEX__ -D__STDC_NO_THREADS__ -D__STDC_NO_ATOMICS__ -D__STDC_NO_VLA__ -isystem "/usr/local/bin/../share/sdcc/include/pic14" -isystem "/usr/local/share/sdcc/include/pic14" -isystem "/usr/local/bin/../share/sdcc/include" -isystem "/usr/local/share/sdcc/include" "pr1.c" 
+ "/usr/local/bin/gpasm" -g -o "pr1.o" -c "pr1.asm"
 
sdcc -mpic14 -p16f84a -V --debug -Wl-c -Wl-m -I/home/miguel/sdcc/ejercicios/ -opr1.hex pr1.o --use-non-free
using default linker script "/usr/local/share/gputils/lkr/16f84a.lkr"
+ "/usr/local/bin/gplink" -I"/usr/local/bin/../share/sdcc/lib/pic14" -I"/usr/local/share/sdcc/lib/pic14" -I"/usr/local/bin/../share/sdcc/non-free/lib/pic14" -I"/usr/local/share/sdcc/non-free/lib/pic14" -I"/usr/local/bin/../share/sdcc/lib/pic14" -I"/usr/local/share/sdcc/lib/pic14" -I"/usr/local/bin/../share/sdcc/non-free/lib/pic14" -I"/usr/local/share/sdcc/non-free/lib/pic14" -c -m -w -r -o "pr1.hex" "pr1.o" "libsdcc.lib" "pic16f84a.lib" 
*** Éxito ***
Parsing COFF file: /home/miguel/sdcc/ejercicios/pr1.cof
Device name: "16F84A"

Saludos

Invitado
Invitado


Volver arriba Ir abajo

No me entiende estas linea el compilador Empty Re: No me entiende estas linea el compilador

Mensaje por Invitado Jue 12 Jul 2012 - 19:20

Parece ser que alguien mas se ha topado con este problema.
En esta página pagina dan una solucion:
Sustituir esa linea conflictiva por esta:

Código:

//typedef unsigned int kk;
//unsigned int kk at(0x2007 CONFIG = _XT_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF);
__code unsigned short __at(0x2007) _conf1 = _XT_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF;//0x1234;

Invitado
Invitado


Volver arriba Ir abajo

No me entiende estas linea el compilador Empty Re: No me entiende estas linea el compilador

Mensaje por Invitado Jue 12 Jul 2012 - 19:33

He probado esto y tambien lo acepta, otra cosa es ver lo que pase en la vida real cuando pase el programa al Pic.

Código:

typedef unsigned int kk;
kk __at(0x2007) __CONFIG = (_XT_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF);

Invitado
Invitado


Volver arriba Ir abajo

No me entiende estas linea el compilador Empty Re: No me entiende estas linea el compilador

Mensaje por diguito69 Jue 12 Jul 2012 - 20:55

Por lo que veo aca
Código:
-D__SDCC=3_2_0

Parece que estas usando la versión 3.2, a mi en la versión 3.1, me funciono a la primera.

Si es así, debe ser que cambiaron el parser y lo que antes era opcional, me refiero a los parentesís aca
Código:
__at(0x2007)
ahora son obligatorios.

Saludos.

diguito69
Participante
Participante

Mensajes : 11
Fecha de inscripción : 04/07/2011
Edad : 39

Volver arriba Ir abajo

No me entiende estas linea el compilador Empty Re: No me entiende estas linea el compilador

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.