MPLAB/X y PICC CCS

Hola a todos. Bueno mi problema es el siguiente.

Hace ya tiempo que estoy con los PICs de la gama media, en concreto con los 12F, el clasico 16F84, el 16F876 y el 16F877, para los cuales he usado siempre el MPLAB realizando los programas en ensamblador.

Ahora quiero empezar a programar en C, para lo cual me baje el CCS del emule, lo instale y compile un programa ya hecho, y me genero archivos en LST, HEX, COF, ERR, PJT,STA y TRE.

El problema es que me gustaria poder ensayar los programas hechos con el CCS en el MPLAB
pero claro este es para ensamblador y el CCS para C.

Estuve mirando y por lo visto con el PLUG IN que puedes bajarte de la web de CCS puedes combinar el MPLAB con el CCS. Tambien lei que el actual MPLAB que se puede descargar de microchip lleva el PLUG IN incorporado.

En resumidas cuentas, alguien sabe los pasos que se han de seguir desde que se descarga el PLUG IN de la web hasta que puedas simular programas en el MPLAB hechos con el CCS?

Muchas gracias a los que me podais contestar :)
 
Holas, tengo un pequeño problema con este par (MPLAB y CCS) ya que he bajado el linkeador para el CCS y aparece como toolsuite para el MPLAB, pero a la hora de compilar funciona bien y de repente me aparece una falla:

Este es el programa sin falla:

Código:
#include <16f84A.h>
#use delay(clock=4000000)
#fuses XT,PUT,NOWDT
setup_counters(RTCC_EXT_H_TO_L,RTCC_DIV_16);
#use rs232(baud=9600,parity=N,xmit=PIN_A3,rcv=PIN_A2,bits=9)

byte rpm, veloc;

void main()
	{
	enable_interrupts(INT_RTCC);
   	enable_interrupts(INT_RB);
   	enable_interrupts(INT_EXT);
   	enable_interrupts(global);
	 while( TRUE ) {
		  
		rpm=veloc;
		  
		  }			
	}

Pero cuando a eso le agrego la subrutina de desborde del Timer0

Código:
#include <16f84A.h>
#use delay(clock=4000000)
#fuses XT,PUT,NOWDT
setup_counters(RTCC_EXT_H_TO_L,RTCC_DIV_16);
#use rs232(baud=9600,parity=N,xmit=PIN_A3,rcv=PIN_A2,bits=9)

byte rpm, veloc;

[b]#int_RTCC
RTCC_isr() {
disable_interrupts(GLOBAL);
}[/b]

void main()
	{
	enable_interrupts(INT_RTCC);
   	enable_interrupts(INT_RB);
   	enable_interrupts(INT_EXT);
   	enable_interrupts(global);
	 while( TRUE ) {
		  
		rpm=veloc;
		  
		  }			
	}

Me dice Fail to build C:/proyecto.cof pero genera el archivo lo mismo.
En internet dicen que falta un comando del debbuger, pero yo lo tengo bien. Otros dicen que falta linkearlo, pero yo ya lo hice. Alguien tuvo alguna dificultad igual?
Ya he revisado las rutinas invocadas y están todas bien, qué puede ser?

Gracias!
 
Hola, soy nuevo en este foro y estoy aprendiendo a programar PIC's.

Tengo problemas con el MPLab, tengo la versión 8.1 y pues no me está generando los archivos .HEX y estoy grave pues no puedo quemar los PIC's ahora.

Ojala alguien pueda decirme qué hacer.
 
Disculpen por no haber respondido inmediatamente.
El MPlab sí me estaba generando los archivos .hex, lo que sucedió (tonto de mi) fué que también tenía instalado el PicC y cambia el icono al que estoy acostumbrado de los .hex y por eso no los veía(los .hex).

Gracias por su pronta atención, ahora que manejo un poco más el tema espero poder colaborar incluso con el foro.
 
Código:
#include <16f84A.h>
#use delay(clock=4000000)
#fuses XT,PUT,NOWDT
setup_counters(RTCC_EXT_H_TO_L,RTCC_DIV_16);
#use rs232(baud=9600,parity=N,xmit=PIN_A3,rcv=PIN_A2,bits=9)

byte rpm, veloc;

#int_RTCC
RTCC_isr() {
disable_interrupts(GLOBAL);
}

void main()
{
enable_interrupts(INT_RTCC);
enable_interrupts(INT_RB);
enable_interrupts(INT_EXT);
enable_interrupts(global);
while( TRUE ) {

rpm=veloc;

}
}

Me dice Fail to build C:/proyecto.cof pero genera el archivo lo mismo.
En internet dicen que falta un comando del debbuger, pero yo lo tengo bien. Otros dicen que falta linkearlo, pero yo ya lo hice. Alguien tuvo alguna dificultad igual?
Ya he revisado las rutinas invocadas y están todas bien, qué puede ser?

Gracias!

?//////


el problema es ivan de que el setup_counter debe de estar adentro de la funcion principal..

osea..

void main(void){

setup_counte(....);

y la interrupcion la que tienes ahi..esta correcto
 
Tengo el siguiente programa y cuando quiero simularlo me tira error <unknow> el proteus..La idea del programa es que por el puerto a0-a3 y b3 pueda preder y apagar led (salidas). por b1yb2 me conecto al rs232 y por rb4-br7 monitoreo sensores.....cuando unos de estos se activa salta la interrupcion del puerto b.

Sinceramente no entiendo que me esta faltando para configurar la interrupcion del puerto b, cuando activo esta no puedo simular,....agradesco si alguien me puede colaborar. he buscado en internet muchos ejemplos y no varia de lo que tengo....tengo poca experiencia en esto, alomejor estoy pasando por alto algo..


Código:
// intpb.c

#include <16F84a.H> 
 
unsigned int command;
#use delay(clock=4000000)


//#use fixed_io(A_OUTPUTS=PIN_A0,PIN_A1,PIN_A2,PIN_A3,PIN_A4)
//#use fixed_io(B_OUTPUTS=PIN_B3,PIN_B2)


#use rs232(baud=9600 ,xmit=PIN_B2,rcv=PIN_B1)

#use fast_io(B)


//#define alarm PIN_B0


unsigned int cmd,on;


#INT_RB 
RB_isr() 
{
  
   printf("\n\rAlarma Activada RB4-RB7\n\r");
  
   cmd=swap(INPUT_B() & 0x30); // carga en la variable cmd el valor del puerto
   
    
}



void send_ok(){
   putc(7);  
   printf("\n\rComando %c Ok\n\r",command);
}
void print_help(){
   fputs("Menu Telecontrol (? : Ayuda) ");
   fputs("1:LED 1On/2:LED 1Off - 3:LED 2On/4:LED 2Off");
   fputs("5:LED 3On/6:LED 3Off - 7:LED 4On/8:LED 4Off - 9:LED 5On/0:LED 5Off ");
   fputs("A:Sensor1/B:Sensor2/C:Sensor3/D:Sensor4");
}

void service1(){
   output_high(PIN_A0);//led 1
   //send_ok();
}
void service2(){
   output_low(PIN_A0);
   //send_ok();
}
void service3(){
   output_high(PIN_A1);//led 2
   //send_ok();
}
void service4(){
   output_low(PIN_A1);
   //send_ok();
}
void service5(){
   output_high(PIN_A2);;//led 3
   //send_ok();
}
void service6(){
   output_low(PIN_A2);
   //send_ok();
}
void service7(){
   output_high(PIN_A3);//led 4
   //send_ok();
}
void service8(){
   output_low(PIN_A3);
   //send_ok();
}
void service9(){
   output_high(PIN_B3);
   //send_ok();
}
void service0(){
   output_low(PIN_B3);
   //send_ok();
}
void serviceA(){
   printf("\n\rSensor 1 = %c\n\r",input(PIN_B4)+0x30);//sw1
   //send_ok();
}
void serviceB(){
   printf("\n\rSensor 2 = %c\n\r",input(PIN_B5)+0x30);//sw2
   //send_ok();
}
void serviceC(){
   printf("\n\rSensor 3 = %c\n\r",input(PIN_B6)+0x30);//sw3
   //send_ok();
}
void serviceD(){
   printf("\n\rSensor 4 = %c\n\r",input(PIN_B7)+0x30);//sw4
   //send_ok();
}
 
main() {
    
   setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
   
   //set_tris_b(0b11100100); //11110000 RB0-RB3 salidas, RB4-RB7 entradas. 1=entrada, 0=salida
  // set_tris_b(0x0F); 

   //disable_interrupts(INT_RB);
  // port_b_pullups(TRUE);
   enable_interrupts(INT_RB);  //Si habilito esta interrupcion salta el programa..no corre
   enable_interrupts(GLOBAL);
  
 
   //set_tris_b(0b11111000);// 0000111 entrada =0, salidas =1
    
    
    
    
    
   
   while(1){
         command = getc();
         switch(command){
         case '?': print_help();
         break;
         case '1': service1();
         break;
         case '2': service2();
         break;
         case '3': service3();
         break;
         case '4': service4();
         break;
         case '5': service5();
         break;
         case '6': service6();
         break;
         case '7': service7();
         break;
         case '8': service8();
         break;
         case '9': service9();
         break;
         case '0': service0();
         break;
         case 'A': serviceA();
         break;
         case 'B': serviceB();
         break;
         case 'C': serviceC();
         break;
         case 'D': serviceD();
         break;
        }
   }
}
 
Hola a todos!

Quiero disculparme de antemano por mi patudez, pero evalué que esta vez necesito ser tan patudo. Por lo siguiente:

En la imágen adjunta se encuentra mi problema. Es el típico programa para principiantes, el que hace parpadear un led por cada segundo, en C. Se encuentran todas las ventanas relevantes para este caso.

El CCS está (creo) correctamente instalado, y al compilar, sale el error que se alcanza a ver. Por culpa de eso, no puedo grabarlo en un PIC con el PicStart, el cual es el grabador que uso.

Les agradecería de cabeza cualquier comentario.
Y además, mi patudez está en que esto pretende continuar otra pregunta en esta misma sección del foro. Pero ya que justamente están hablando de esto...

Muchísimas gracias.
 

Adjuntos

  • dibujo_163.png
    dibujo_163.png
    59.9 KB · Visitas: 90
hola que tal:

estoy programando en ccs(pcw) y pase el archivo .hex al mplab para programar mi micro, mi primera linea es #include <16f887.h> , ya que este es el micro que estoy usando, pero a la hora de que lo compilo en el mplab me crea un archivo tipo header precisamente por el .h del include, y esto hace que cuando lo programe no se grabe nada en el micro porque no sabe que dispositivo es, espero me puedan ayudar a resolver este problema

P.D. estoy usando el pickit 3, mplab ide 8

Saludos :D
 
Adjunto un tutorial para usar el compilador PCWHD de CCS utilizando MPLAB como entorno de desarrollo.

Espero que sea de utilidad para los que quieran utilizar MPLAB IDE conjuntamente con CCS.

Saludos y suerte.
 

Adjuntos

  • Tutorial MPLAB y CCS.pdf
    1.1 MB · Visitas: 100
Última edición:
hola ,tengo una pequeña duda entonces estoy aprendiendo lenguaje c y uso el ccs ,pero veo que se puede simular paso a paso en el mplab asi que mi pregunta es la siguientes¿ los programas que hecho en ccs puedo simularlos en mplab sin ningun problema, no cambia en algo ?
 
hola ,tengo una pequeña duda entonces estoy aprendiendo lenguaje c y uso el ccs ,pero veo que se puede simular paso a paso en el mplab así que mi pregunta es la siguientes¿ los programas que hecho en ccs puedo simularlos en mplab sin ningún problema, no cambia en algo ?
Simular no puedes, depurar paso a paso si.
Si quieres simular dentro de MPLAB debes integrar y usar PROTEUS VSM.
Y para que puedas depurar y simular programas de CCS u otros lenguajes en MPLAB,
tienes que crear un proyecto en el mismo entorno de desarrollo.

Saludos.
 
buenos dias. el problema es el siguiente: acabo de instalar mplab x pero no quiero trabajarlo en ensamblador, quiero hacerlo en c mas específicamente como si fuera ccs. ya instale el pluging del compilador ccs pero el wizar no me crea el archivo punto c con la plantilla como lo hace el ccs. y se que si lo hace porque e visto vídeos donde ocurre pero no se que hice mal y no me sale.

gracias de ante mano
 
En un vídeo que he visto en Youtube, el presentador dice que antes de entrar al MPLAB X, generó los archivos main.c y main.h con el asistente del CCS (minuto 1:25 del vídeo), así que... parece que tienes que entrar al CCS.

Hay un complemento para MPLAB X, que no se instala por defecto, llamado Launcher (menú Herramientas, opción Complementos, pestaña Complementos disponibles) que permite llamar a programas externos desde el propio MPLAB X. Se podría intentar llamar desde aquí al asistente de CCS.
 
No es necesario MPlab ya que PIC CCS tiene su propio IDE, otra forma quizas la mas recomendable es utilizar PROTEUS 8 que viene con el EDITOR,Compilador,simulador y diseñador de PCBs todo incluido e un solo paquete
 
Atrás
Arriba