Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

19/04/2014 #21


Hola a todos, soy nuevo en el foro( no he visto donde presentarme).

tengo un problema con el pic cc. hago mi programa, monto el circuito en proteus y al editar las propiedades del micro para cargarle el programa,la carpeta donde tengo el programa me aparece vacia y no esta vacia,tiene sus programas.

espero haberme explicado y haber si alguien me hecha una mano.

gracias
19/04/2014 #22

Avatar de ilcapo

hola lo compilaste al programa en PIC C ?? si no lo compilaste no se va a generar el archivo.hex y tal vez por eso no lo encuentre el Proteus
20/04/2014 #23


Si,compile el programa y 0 errores,solo el warning del while.
esto es lo que me ha generado el programa:
Imágenes Adjuntas
Tipo de Archivo: bmp arch.bmp (98,5 KB (Kilobytes), 12 visitas)
20/04/2014 #24

Avatar de TRILO-BYTE

el CCS es un compilador un un monton de bugs

uno de ellos es que no genera nada

para ello abres el CCS compilas , cierras el CCS , lo abres otravez y compilas ahi debes tener ya el .hex
20/04/2014 #25

Avatar de ilcapo

probá agregando el archivo.c a un Proyecto ( osea crear Proyecto) y en output Files, fijate si tenes seleccionada la opcion para generar el archivo.hex a lo mejor lo tenes destildado y por eso no lo genera
22/04/2014 #26


buena, pues ya lo tengo solucionado, abri,compile,abri,compile y a la 4ª me salio.

Gracias por la ayuda y sobretodo por la rapidez de esta.Soy novatisimo en el elnguaje y sin poder simular lo que hago,un caos.

una vez mas gracias.
06/05/2014 #27


Problema compilación Pic C Compiler
Buenas tardes amigos del foro, les adjunto este programa de un contador 0-9999 con el pic 16f84a en c compiler estoy empezando a programar con este lenguaje pero me genera 6 errores y no logro comprender porque me los genera quiza algunos de ustedes me puede explicar el problema gracias

Código:
#include <16F84a.h>
#fuses xt,noput,nowdt,noprotect
#use delay (clock = 4000000)
#use fast_io (a)
#use fast_io(b)
int u=0;//unidades 
int d=0;//decenas
int c=0;//centenas
int m=0;//millares

#int_ext
  void contador(){
  if(u<9){ //se a mostrado el numero 9 en el digito unidades??
  u=0;//si entonces u=0, se muestra 0 en digito unidades
  d++;//incrementa indice decenas
  if(d<9){
  d=0;
  c++;
  if(c<9){
  c=0;
  m++;
  if(m<9){
  m=0;
  }
  }
  }
  }
  else {
  u++;
  }
}

 void config (){
       set_tris_a (0b00000);//0b00000000 o 0x00 config salidas
       output_a(0b00000);//se inicializa el puerto a en cero
       set_tris_b (0b00000001);//config entrada del pin b0 int_ext
       output_b  (0b00000000);//se inicializa el puerto b en cero
 }
void main (){
    config();
 
     int tab7seg(10)={0b01111110, 0b00001100, 0b10110110, 0b10011110, 0b11001100,
                      0b11011010, 0b11111010, 0b00001110, 0b11111110, 0b11001110};//BCD del 0-9
     if(input(pin_b0)==1);
      u++; // unidade = unidad+1 
    enable_interrupts (int_ext);//habilitamos la funcion interrupcion
    ext_int_edge(l_to_h);//interrupcion de cambio de bajo a alto en el pin b0
    enable_interrupts (global);//habilita interrupcion
    

do{
   output_high(pin_a0);//activo display unidades
   output_low(pin_a1);//desactivo display decenas
   output_low(pin_a2);//desactivo display centenas
   output_low(pin_a3);//desactivo display millares
   output_b(tab7seg(u));//valor decimal en display unidad (0-9)
   delay_ms(10);//retardo para cambiar de display
   
   output_low(pin_a0);//desactivo display unidades
   output_high(pin_a1);//activo display decenas
   output_low(pin_a2);//desactivo display centenas
   output_low(pin_a3);//desactivo display millares
   output_b(tab7seg(d));//valor decimal en display decena (0-9)
   delay_ms(10);//retardo para cambiar de display
 
   output_low(pin_a0);//desactivo display unidades
   output_low(pin_a1);//desactivo display decenas
   output_high(pin_a2);//activo display centenas
   output_low(pin_a3);//desactivo display millares
   output_b(tab7seg(c));//valor decimal en display centena (0-9)
   delay_ms(10);//retardo para cambiar de display
   
   output_low(pin_a0);//desactivo display unidades
   output_low(pin_a1);//desactivo display decenas
   output_low(pin_a2);//desactivo display centenas
   output_high(pin_a3);//activo display millares
   output_b(tab7seg(m));//valor decimal en display millar (0-9)
   delay_ms(10);//retardo para cambiar de display
}while (true);
}
Imágenes Adjuntas
Tipo de Archivo: png error.png (15,6 KB (Kilobytes), 12 visitas)
06/05/2014 #28

Avatar de Nuyel

tab7seg que inicias como matriz int está mal, las matrices se declaran con corchetes [] no con parentesís (), tu error es que no estas leyendo el puntero tab7seg[n] sino que intenta llamar la función tab7seg(n)
ademas intenta usar mejor unsigned char para ahorrar memoria esa es de 8 bits, suficiente para el puerto y evitas sobre carga
Código:
unsigned char tab7seg[10]={0b01111110, 0b00001100, 0b10110110, 0b10011110, 0b11001100,
                      0b11011010, 0b11111010, 0b00001110, 0b11111110, 0b11001110};//BCD del 0-9
06/05/2014 #29


ok entiendo hice el cambie en el programa como lo dijiste pero ahora me genera 2 errores
Imágenes Adjuntas
Tipo de Archivo: png error.png (9,0 KB (Kilobytes), 13 visitas)
13/05/2014 #30


errores al compilar ccs
¿Qué tal amigos?
Una disculpa por revivir este tema, lo que pasa es que estoy teniendo dificultades al compilar este ejemplo que encontré, supuestamente debe de compilar bien pero me resultan los siguientes errores, como son el error 23, 48 y 43
Les dejo el código de programación.

Código:
#include "conf.h"
#include <string.h>

//dirección del registro TRISA
#byte TRISA = 85  

//dirección del puerto A
#byte puerto_a = 05   
#bit RA0 = puerto_a.0 


#int_RDA
//Cuando entra un mensaje se produce una interrupción
void  RDA_isr(void) {

   char entrada[5]="\0";

   //Guardamos el mensaje recibido
   fgets(entrada,BLUE); 

   char led1[3]="\0"; 
   char led2[3]="\0"; 

   led1="1";
   led2="2";
 
 //Comparamos el mensajes recibido para saber que hacer:
 
   if(strcmp(entrada,led1)==0)RA0=0; //ON
   else if(strcmp(entrada,led2)==0)RA0=1;//OFF
  else {
      int i;
       for( i=1; i<=10; i++){ 
         puerto_a=0x00;delay_us(300);puerto_a=0x03;delay_us(700); 
         puerto_a=0x00;delay_ms(50); puerto_a=0x03;delay_ms(50);
     }   
 }
 
}


void main() {  
   //Desactivamos los comparadores
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   //Activamos las interrupciones
   enable_interrupts(INT_RDA); 
   enable_interrupts(GLOBAL);  

   //configuramos el puerto A
   set_tris_a( 0xfe); 
   puerto_a =0x01;

   putc('Z'); 

    //como el mensaje produce una interrupción, el resto del tiempo estamos en un bucle infinito sin hacer nada
   while(true){     

    }                                
 }
Primero me dice que va eso y después me dice que, cómo vemos al principio del programa, se incluye un fichero llamado conf.h.
Este fichero contiene las configuraciones necesarias para que el PIC funcione, simplemente debemos crearlo en el mismo directorio e incluir esto:
Código:
#include <16F628A.h>

        #FUSES NOWDT                    //No Watch Dog Timer
        #FUSES INTRC_IO                 //Internal RC Osc
        #FUSES NOPUT                    //No Power Up Timer
        #FUSES NOPROTECT                //Code not protected from reading
        #FUSES NOBROWNOUT               //No brownout reset
        #FUSES NOMCLR                   //Master Clear pin used for I/O
        #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
        #FUSES NOCPD                    //No EE protection
        #FUSES RESERVED                 //Used to set the reserved FUSE bits

        #use delay(clock=4000000)
        #use rs232(baud=9600,parity=N,xmit=PIN_B2,rcv=PIN_B1,bits=8,STREAM=BLUE,errors)
Entonces puse primero la parte de #include <16F628A.h> hasta rs232(baud=9600,parity=N,xmit=PIN_B2,rcv=PIN_B1,bi ts=8,STREAM=BLUE,errors)
y después lo que puse al principio y al compilar y ver los errores me sale otra ventana, es la que les muestro en la imagen.
Cabe destacar que ya he probado cambiando el pic y en la parte en donde va #include <16F628A.h> lo cambie por #Define <16F628A.h> ya que me salían mas errores y al cambiar eso me redujeron a 4
No sé si sea el compilador, si es que se utilizo otro, o sea la versión.
De antemano muchas gracias.
16/05/2014 #31


kalel2291 dijo: Ver Mensaje
¿Qué tal amigos?
Una disculpa por revivir este tema, lo que pasa es que estoy teniendo dificultades al compilar este ejemplo que encontré, supuestamente debe de compilar bien pero me resultan los siguientes errores, como son el error 23, 48 y 43
Les dejo el código de programación.

Código:
#include "conf.h"
#include <string.h>

//dirección del registro TRISA
#byte TRISA = 85  

//dirección del puerto A
#byte puerto_a = 05   
#bit RA0 = puerto_a.0 


#int_RDA
//Cuando entra un mensaje se produce una interrupción
void  RDA_isr(void) {

   char entrada[5]="\0";

   //Guardamos el mensaje recibido
   fgets(entrada,BLUE); 

   char led1[3]="\0"; 
   char led2[3]="\0"; 

   led1="1";
   led2="2";
 
 //Comparamos el mensajes recibido para saber que hacer:
 
   if(strcmp(entrada,led1)==0)RA0=0; //ON
   else if(strcmp(entrada,led2)==0)RA0=1;//OFF
  else {
      int i;
       for( i=1; i<=10; i++){ 
         puerto_a=0x00;delay_us(300);puerto_a=0x03;delay_us(700); 
         puerto_a=0x00;delay_ms(50); puerto_a=0x03;delay_ms(50);
     }   
 }
 
}


void main() {  
   //Desactivamos los comparadores
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   //Activamos las interrupciones
   enable_interrupts(INT_RDA); 
   enable_interrupts(GLOBAL);  

   //configuramos el puerto A
   set_tris_a( 0xfe); 
   puerto_a =0x01;

   putc('Z'); 

    //como el mensaje produce una interrupción, el resto del tiempo estamos en un bucle infinito sin hacer nada
   while(true){     

    }                                
 }
Primero me dice que va eso y después me dice que, cómo vemos al principio del programa, se incluye un fichero llamado conf.h.
Este fichero contiene las configuraciones necesarias para que el PIC funcione, simplemente debemos crearlo en el mismo directorio e incluir esto:
Código:
#include <16F628A.h>

        #FUSES NOWDT                    //No Watch Dog Timer
        #FUSES INTRC_IO                 //Internal RC Osc
        #FUSES NOPUT                    //No Power Up Timer
        #FUSES NOPROTECT                //Code not protected from reading
        #FUSES NOBROWNOUT               //No brownout reset
        #FUSES NOMCLR                   //Master Clear pin used for I/O
        #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
        #FUSES NOCPD                    //No EE protection
        #FUSES RESERVED                 //Used to set the reserved FUSE bits

        #use delay(clock=4000000)
        #use rs232(baud=9600,parity=N,xmit=PIN_B2,rcv=PIN_B1,bits=8,STREAM=BLUE,errors)
Entonces puse primero la parte de #include <16F628A.h> hasta rs232(baud=9600,parity=N,xmit=PIN_B2,rcv=PIN_B1,bi ts=8,STREAM=BLUE,errors)
y después lo que puse al principio y al compilar y ver los errores me sale otra ventana, es la que les muestro en la imagen.
Cabe destacar que ya he probado cambiando el pic y en la parte en donde va #include <16F628A.h> lo cambie por #Define <16F628A.h> ya que me salían mas errores y al cambiar eso me redujeron a 4
No sé si sea el compilador, si es que se utilizo otro, o sea la versión.
De antemano muchas gracias.
mira si te funciona.

Código:
#include <16F628A.h>
#include <string.h>

        #FUSES NOWDT                    //No Watch Dog Timer
        #FUSES INTRC_IO                 //Internal RC Osc
        #FUSES NOPUT                    //No Power Up Timer
        #FUSES NOPROTECT                //Code not protected from reading
        #FUSES NOBROWNOUT               //No brownout reset
        #FUSES NOMCLR                   //Master Clear pin used for I/O
        #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
        #FUSES NOCPD                    //No EE protection
        #FUSES RESERVED                 //Used to set the reserved FUSE bits

        #use delay(clock=4000000)
        #use rs232(baud=9600,parity=N,xmit=PIN_B2,rcv=PIN_B1,bits=8,STREAM=BLUE,errors)

//dirección del registro TRISA
#byte TRISA = 85  

//dirección del puerto A
#byte puerto_a = 05   
#bit RA0 = puerto_a.0 


#int_RDA
//Cuando entra un mensaje se produce una interrupción
void  RDA_isr(void) {

   char entrada[5]="\0";

   //Guardamos el mensaje recibido
   fgets(entrada,BLUE); 

   char led1[3]="\0"; 
   char led2[3]="\0"; 

   led1="1";
   led2="2";
 
 //Comparamos el mensajes recibido para saber que hacer:
 
   if(strcmp(entrada,led1)==0)RA0=0; //ON
   else if(strcmp(entrada,led2)==0)RA0=1;//OFF
  else {
      int i;
       for( i=1; i<=10; i++){ 
         puerto_a=0x00;delay_us(300);puerto_a=0x03;delay_us(700); 
         puerto_a=0x00;delay_ms(50); puerto_a=0x03;delay_ms(50);
     }   
 }
 
}


void main() {  
   //Desactivamos los comparadores
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   //Activamos las interrupciones
   enable_interrupts(INT_RDA); 
   enable_interrupts(GLOBAL);  

   //configuramos el puerto A
   set_tris_a( 0xfe); 
   puerto_a =0x01;

   putc('Z'); 

    //como el mensaje produce una interrupción, el resto del tiempo estamos en un bucle infinito sin hacer nada
   while(true){     

    }                                
 }
12/08/2014 #32


Problema compilación Pic C Compiler
Hola a todos soy nuevo en esto de los pics estoy usando pic c copiler y a la hora de copilar el proyecto me da estos mensajes de errores error 18y error 12 si alguien podría ayudarme se lo agradecería. ...

---------- Actualizado después de 2 minutos ----------

estos son los errores que me da pic c copiler
Imágenes Adjuntas
Tipo de Archivo: jpg Presentación2.jpg (53,7 KB (Kilobytes), 9 visitas)
12/08/2014 #33

Avatar de papirrin

ya probaste poniendo:
#include <lcd.c>
#include <KBD.C>

en lugar de:
#include <lcd1.c>
#include <KBD1.C>

en el pic C que tengo no lleva el 1
19/10/2014 #34


luis30 dijo: Ver Mensaje
mira si te funciona.

Código:
#include <16F628A.h>
#include <string.h>

        #FUSES NOWDT                    //No Watch Dog Timer
        #FUSES INTRC_IO                 //Internal RC Osc
        #FUSES NOPUT                    //No Power Up Timer
        #FUSES NOPROTECT                //Code not protected from reading
        #FUSES NOBROWNOUT               //No brownout reset
        #FUSES NOMCLR                   //Master Clear pin used for I/O
        #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
        #FUSES NOCPD                    //No EE protection
        #FUSES RESERVED                 //Used to set the reserved FUSE bits

        #use delay(clock=4000000)
        #use rs232(baud=9600,parity=N,xmit=PIN_B2,rcv=PIN_B1,bits=8,STREAM=BLUE,errors)

//dirección del registro TRISA
#byte TRISA = 85  

//dirección del puerto A
#byte puerto_a = 05   
#bit RA0 = puerto_a.0 


#int_RDA
//Cuando entra un mensaje se produce una interrupción
void  RDA_isr(void) {

   char entrada[5]="\0";

   //Guardamos el mensaje recibido
   fgets(entrada,BLUE); 

   char led1[3]="\0"; 
   char led2[3]="\0"; 

   led1="1";
   led2="2";
 
 //Comparamos el mensajes recibido para saber que hacer:
 
   if(strcmp(entrada,led1)==0)RA0=0; //ON
   else if(strcmp(entrada,led2)==0)RA0=1;//OFF
  else {
      int i;
       for( i=1; i<=10; i++){ 
         puerto_a=0x00;delay_us(300);puerto_a=0x03;delay_us(700); 
         puerto_a=0x00;delay_ms(50); puerto_a=0x03;delay_ms(50);
     }   
 }
 
}


void main() {  
   //Desactivamos los comparadores
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   //Activamos las interrupciones
   enable_interrupts(INT_RDA); 
   enable_interrupts(GLOBAL);  

   //configuramos el puerto A
   set_tris_a( 0xfe); 
   puerto_a =0x01;

   putc('Z'); 

    //como el mensaje produce una interrupción, el resto del tiempo estamos en un bucle infinito sin hacer nada
   while(true){     

    }                                
 }




yo lo corri pero me aparece este error too many nested #includes
23/06/2015 #35


Problema compilación Pic C Compiler
Tengo este código de control pi para velocidad de motor+encoder, pero en el PIC C Compiler me aparecen errores y no sé qué hacer.
¿Alguien me podría ayudar para saber por qué no compila?
Código PHP:
#include <18f2431.h>

#fuses MCLR,NOWDT,HS,put

#use delay (clock=20000000)

#use rs232(baud=115200, xmit=pin_C6, rcv=pin_C7)


#USE STANDARD_IO(A)

#USE STANDARD_IO(B)

#USE STANDARD_IO(C)


#INCLUDE <variables.c>

#include <flex_lcd.c>

#include <def_registros.c>

#include <motor_lib.c>

#include <keypad.c>


int16 t=15536;
//cristal 20M fs100


#int_TIMER1

void temp1s(void){

set_timer1 (t);

output_high(pin_c0);

w=medir_velocidad();
//medición de la variable a controlar

en=set_point-w;
//cálculo del error

cn=A0*en;

cn+=A1*en_1;

cn+=cn_1;


en_1=en;

cn_1=cn;


PWM_DATA=cn*0.93;


if(
set_point>0){

if((
PWM_DATA>1023) (w==0)){derecha();PWM_DATA=1023;}

if(
PWM_DATA<0){izquierda();PWM_DATA*=-1;}

}

else{


PWM_DATA*=-1;

if((
PWM_DATA>1023) (w==0)){izquierda();PWM_DATA=1023;}

if(
PWM_DATA<0){derecha();PWM_DATA*=-1;}

//if(PWM_DATA<0){PWM_DATA=0;}

}


set_pwm1_duty(PWM_DATA);

printf("%Ld",w);

putc(13);

output_low(pin_c0);

}


VOID MAIN(VOID){

int8 dir=0,dato=0;

//signed int16 p=0;

signed int16 mi_set_point=0;

lcd_init();

KP=0.8//0.0154

KI=10//0.16

A0=KP;

A1=KI*0.01;

A1-=KP;

set_point=400;

setup_timer_2(T2_DIV_BY_1,255,1);

setup_ccp1(CCP_PWM);

QEICON=0b11110100;

setup_timer_1(T1_INTERNAL T1_DIV_BY_1);

set_timer1 (t);

enable_interrupts(INT_TIMER1);

enable_interrupts(global);

setup_timer_0(T0_INTERNAL T1_DIV_BY_1);

while(
TRUE){

dato=meter_caracter();

if(
dato=='A'){

printf(lcd_putc,"\fSet Point:\n");

mi_set_point=meter_datos();

printf(lcd_putc,"%Ld",mi_set_point);

set_point=mi_set_point;

}

if(
bit_test(QEICON,5)==0){dir=0;}


if(
bit_test(QEICON,5)==1){dir=1;}

printf(lcd_putc,"\f%Ld%Ld\n%Ld %u",set_point,w,PWM_DATA,dir);

delay_ms(200);

}


23/06/2015 #36
Moderador

Avatar de D@rkbytes

¿Será porque a ese programa le faltan estas librerías?
variables.c, flex_lcd.c, def_registros.c, motor_lib.c y keypad.c
23/06/2015 #37


INCLUDE <variables.c>

#include <flex_lcd.c>

#include <def_registros.c>

#include <motor_lib.c>

#include <keypad.c>
si estan puestas
23/06/2015 #38
Moderador

Avatar de D@rkbytes

gonzaloz17 dijo: Ver Mensaje
Si están puestas.
En el código si están incluidas, pero, ¿están dentro de la carpeta del proyecto?
23/06/2015 #39


creo que no , como soluciono eso ?
23/06/2015 #40
Moderador

Avatar de D@rkbytes

Pues buscándolas en donde conseguiste ese programa.
Esas librerías son especiales, posiblemente creadas por el autor y la única que conozco es, flex_lcd.c.
Así que si no las puedes obtener, adiós compilación.
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.