Autor Tema: Mini curso "Programación en XC8"  (Leído 588443 veces)

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

Desconectado Micom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 783
Re: Mini curso "Programación en XC8"
« Respuesta #210 en: 24 de Marzo de 2014, 00:32:53 »
Gracias por responder Angel es que ya compile los programas de inicio y cargue a mis simulacion el archivo .hex y la simulacion corrio bien pero queria simularlo paso a pasoviendo el codigo y para eso queria el archivo .cof pero los busque dentro de la carpeta del proyecto y no los genera como se hara para generarlos
El programador GTP USB PLUS es un super programador
GRACIAS dobles amigo SISPIC

Tan solo queda seguir sobreviviendo

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Mini curso "Programación en XC8"
« Respuesta #211 en: 24 de Marzo de 2014, 09:39:29 »
  ¿Estás trabajando con MPLABX? ¿Revisaste todas las carpetas que se encuentran dentro de la carpeta del proyecto?
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado Micom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 783
Re: Mini curso "Programación en XC8"
« Respuesta #212 en: 25 de Marzo de 2014, 01:31:41 »
Si trabajo con el mplabx, y he buscado deseperadamente los benditos archivos cof y no los encuentro en ninguna carpeta del proyecto no se si deba ajustarle algo al mplabx para wue se generen al compilar el proyecto
El programador GTP USB PLUS es un super programador
GRACIAS dobles amigo SISPIC

Tan solo queda seguir sobreviviendo

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Mini curso "Programación en XC8"
« Respuesta #213 en: 25 de Marzo de 2014, 08:53:56 »
Si trabajo con el mplabx, y he buscado deseperadamente los benditos archivos cof y no los encuentro en ninguna carpeta del proyecto no se si deba ajustarle algo al mplabx para wue se generen al compilar el proyecto

  Hasta donde yo sé, no hay que tocar nada. Siempre que la compilación me es exitosa, se genera el .cof. Dicho archivo aparece en

carpeta del proyecto/dist/default/production
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado Micom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 783
Re: Mini curso "Programación en XC8"
« Respuesta #214 en: 25 de Marzo de 2014, 13:57:49 »
Si en esta carpeta proyecto/dist/default/production siempre lo encuentro pero cuando compilo con CCS ahora que compilo CX8 solo me aparecen 10 archivos con las siguientes extensiones: .cmf .elf .hex .hxl .lst .map .obj .rlf .sdb .sym . Ningún .cof creo que hay que ajustar algo voy a buscar documentación del CX8.
El programador GTP USB PLUS es un super programador
GRACIAS dobles amigo SISPIC

Tan solo queda seguir sobreviviendo

Desconectado Micom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 783
Re: Mini curso "Programación en XC8"
« Respuesta #215 en: 25 de Marzo de 2014, 14:45:59 »
Bueno ya se porque no me genera los archivos cof  ;-) era un ajuste. Por si a alguien le pasa lo mismo voy a explicar brevemente que ajuste le hice al CX8 atreves del MPlabX.

Con tu proyecto abierto y compilado con el CX8 vamos a File/Project Properties(Nombre proyecto) y se abre la ventana de las propiedades del proyecto y en el menú de la izquierda buscas la opción XC8 global option la seleccionas se abre una subventana a la derecha y donde esta la opción de Ouput File Format cambias en la flechita, ELF/DWARF por COFF, aplicar aceptar y listo. Al compilar de nuevo el archivo .elf desaparece y se crea el .cof  :mrgreen:
« Última modificación: 25 de Marzo de 2014, 17:11:00 por Micom »
El programador GTP USB PLUS es un super programador
GRACIAS dobles amigo SISPIC

Tan solo queda seguir sobreviviendo

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Mini curso "Programación en XC8"
« Respuesta #216 en: 25 de Marzo de 2014, 14:54:41 »
Si en esta carpeta proyecto/dist/default/production siempre lo encuentro pero cuando compilo con CCS ahora que compilo CX8 solo me aparecen 10 archivos con las siguientes extensiones: .cmf .elf .hex .hxl .lst .map .obj .rlf .sdb .sym . Ningún .cof creo que hay que ajustar algo voy a buscar documentación del CX8.

  Respondiste antes que yo...

  Veo que tú tienes archivos con extensión .CMF y .ELF en lugar del .COF que me aparece a mí. Estuve buscando en toda la configuración del proyecto y no encuentro nada que haga referencia ni a archivo .COF ni a archivos .CMF y .ELF

  Sabes, estoy usando la versión 1.60 de MPLABX en Linux y no me aparece ninguna subventana en la opción de "XC8 global".... pero ahora que lo nombras creo que sí, que en algún momento he cambiado algo, pero no logro saber como ya que no encuentro la opción.

  Como sea, que bueno que diste con la solución.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado Micom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 783
Re: Mini curso "Programación en XC8"
« Respuesta #217 en: 28 de Marzo de 2014, 20:47:12 »
Este es mi primer programa con CX8  :)



Código: [Seleccionar]
/*
 * File:   Secuenciador de 8 leds
 * Author: Abel
 * Simula el funcionamiento de las luces del auto fantastico
 * Created on 25 de marzo de 2014, 12:27 PM
 */

#include <stdio.h>
#include <stdlib.h>
#include <xc.h> // Librería XC8

#define _XTAL_FREQ 4000000 // Indicamos a que frecuencia de reloj esta funcionando el micro

#pragma config FOSC = INTOSCIO  // Oscillator Selection bits (INTOSC oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF      // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is digital input, MCLR internally tied to VDD)
#pragma config BOREN = ON       // Brown-out Detect Enable bit (BOD enabled)
#pragma config LVP = OFF        // Low-Voltage Programming Enable bit (RB4/PGM pin has digital I/O function, HV on MCLR must be used for programming)
#pragma config CPD = OFF        // Data EE Memory Code Protection bit (Data memory code protection off)
#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)

// FUNCION PRINCIPAL

void main()
{
  TRISB = 0; // Configuro puerto B como salidas
  PORTB = 0; // borramos el puerto B

  while (1) // Bucle infinito
  {         //El primer bucle for deplaza la luz del bit 0 al bit 7 de portb
        for (PORTB=1; PORTB<128; PORTB=PORTB*2)
        {   // se visualiza por 200 milisegundos.
         __delay_ms(200);
        }   //El segundo bucle for desplaza la luz del bit 7 al bit 0 de portb
        for (PORTB=128; PORTB>1; PORTB=PORTB/2)
        {   // se visualiza por 200 milisegundos.
         __delay_ms(200);
        }
    }
}
« Última modificación: 29 de Marzo de 2014, 02:11:31 por Micom »
El programador GTP USB PLUS es un super programador
GRACIAS dobles amigo SISPIC

Tan solo queda seguir sobreviviendo

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re: Mini curso "Programación en XC8"
« Respuesta #218 en: 10 de Abril de 2014, 10:41:36 »
Estoy haciendo un programa en XC8 y me estoy volviendo loco para conseguir un vector de reset.

Lo que quiero es hacer el programa compatible con un bootloader. Para eso en las 4 primeras direcciones de memoria debe haber un goto a la rutina que inicia el programa.

No consigo que haya un goto en la dirección de memoria 0

¿Cómo demonios se hace eso en XC8?

PD: Lo he intentado con la opción --CODEPAGE y ni caso

Saludos.

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Mini curso "Programación en XC8"
« Respuesta #219 en: 10 de Abril de 2014, 11:22:50 »
  Hola Picuino, aquí hay un link al foro de microchip, donde un usuario intenta un bootloader y encuentra que tiene que configurar una opción desde la ventana del linker en las opciones del proyecto. http://www.microchip.com/forums/m669220.aspx

  Recompile un proyecto haciendo los siguientes cambios. En XC8 linker --> Option categories seleccioné "additional options" y luego modifique la opción "Codeoffset" y le puse el valor 0x100. Para que mi programa comience en esa dirección de memoria.

 Y mirando el archivo .MAP veo lo siguiente...

reset_vec  100

intentry   104

  Supongo que serán los nuevos vectores de reset y de interrupción de mi aplicación.

  Imagino que si ya tienes un bootloader grabado, deberás saber cual tiene que ser el vector de reset de tu aplicación.

  No sé si estoy bien orientado o estoy hablando pavadas, ya que nunca utilicé un bootloader.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 627
Re: Mini curso "Programación en XC8"
« Respuesta #220 en: 10 de Abril de 2014, 11:30:46 »
Estoy haciendo un programa en XC8 y me estoy volviendo loco para conseguir un vector de reset.

Lo que quiero es hacer el programa compatible con un bootloader. Para eso en las 4 primeras direcciones de memoria debe haber un goto a la rutina que inicia el programa.

No consigo que haya un goto en la dirección de memoria 0

¿Cómo demonios se hace eso en XC8?

PD: Lo he intentado con la opción --CODEPAGE y ni caso

Saludos.

El XC8 trae la opcion Codeoffset, se encuentra en Additional Options en las opciones del Linker en las propiedades del proyecto, lo que hace  es desplazar el codigo hasta la direccion que indique, asi se puede reservar la posicion superior de la memoria para el bootloader.

Saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re: Mini curso "Programación en XC8"
« Respuesta #221 en: 10 de Abril de 2014, 11:41:33 »
Gracias, Sander

Me equivoqué cuando dije --CODEPAGE quise decir --CODEOFFSET

Ya lo he probado y el bootloader sigue dando error.

Saludos.

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Mini curso "Programación en XC8"
« Respuesta #222 en: 01 de Mayo de 2014, 01:01:58 »
hay algun include en xc8 que me permita usar las definiciones uint8_t, int16_t, etc?

saludos
-
Leonardo Garberoglio

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Mini curso "Programación en XC8"
« Respuesta #223 en: 01 de Mayo de 2014, 08:36:20 »
hay algun include en xc8 que me permita usar las definiciones uint8_t, int16_t, etc?

saludos

  Sí, tienes que incluir el header stdint.h
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: Mini curso "Programación en XC8"
« Respuesta #224 en: 08 de Junio de 2014, 18:00:56 »
Hola compañeros, no se si expongo la pregunta en el sitio correcto pero como hablamos de XC8 había pensado seguir aquí. El motivo es que estoy intentando capturar con el modulo CCP1 del Pic 16f88 la lectura del timer1, pero los resultados no se corresponden y no doy con el fallo, este es el código:
Código: C
  1. /*
  2.  * File:   CCP1_Modo_Captura.c
  3.  * Author: miquel
  4.  *
  5.  * Created on 28 de mayo de 2014, 09:12
  6.  */
  7.  
  8. #include <xc.h>
  9.  
  10. #define _XTAL_FREQ 20000000
  11. // #define __delay_ms(x) _delay((unsigned long)((x)*(_XTAL_FREQ/20000000.0)))
  12.  
  13. // #pragma config statements should precede project file includes.
  14.  
  15. // CONFIG1
  16. #pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator)
  17. #pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
  18. #pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
  19. #pragma config MCLRE = ON       // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is MCLR)
  20. #pragma config BOREN = ON       // Brown-out Reset Enable bit (BOR enabled)
  21. #pragma config LVP = OFF        // Low-Voltage Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
  22. #pragma config CPD = OFF        // Data EE Memory Code Protection bit (Code protection off)
  23. #pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off)
  24. #pragma config CCPMX = RB0      // CCP1 Pin Selection bit (CCP1 function on RB0)
  25. #pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)
  26.  
  27. // CONFIG2
  28. #pragma config FCMEN = OFF      // Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled)
  29. #pragma config IESO = OFF       // Internal External Switchover bit (Internal External Switchover mode disabled)
  30.  
  31.  
  32. #define PIN_DIR_CCP1 TRISB0
  33. #define INPUT 1
  34.  
  35. //----Variables Globales----
  36.  
  37.  
  38. //----Declaracion de Funciones
  39.  
  40.  
  41. //----Funcion Principal----
  42. void main(void)
  43. {
  44.     unsigned int high = 0;
  45.     unsigned int low = 0;
  46.    
  47.     PIN_DIR_CCP1 = INPUT;       // TRISB 0b00000001
  48.  
  49.     //****Configuracion del Modulo CCP1
  50.     CCP1CONbits.CCP1M3 = 0;         // Modo Captura con cada flanco ascendente en RB0/CCP1
  51.     CCP1CONbits.CCP1M2 = 1;
  52.     CCP1CONbits.CCP1M1 = 0;
  53.     CCP1CONbits.CCP1M0 = 1;
  54.  
  55.     //****Configuracion del Timer & Interrupcion
  56.     T1CONbits.T1CKPS1 = 0;
  57.     T1CONbits.T1CKPS0 = 0;          // 1:1 Prescale value
  58.     T1CONbits.TMR1CS = 0;           // Modo temporizador
  59.     PIR1bits.TMR1IF = 0;            // Borramos bandera overflow
  60.     T1CONbits.TMR1ON = 0;           // Timer1 OFF
  61.     TMR1H = 0x00;
  62.     TMR1L = 0x00;
  63.     T1CONbits.TMR1ON = 1;           // Timer1 ON
  64.     //INTCONbits.PEIE = 1;
  65.     //INTCONbits.GIE = 1;
  66.  
  67.     //****Bucle infinito
  68.     while(1)
  69.     {
  70.         if(PIR1bits.CCP1IF == 1)    // Preguntamos si se ha efectuado la captura
  71.         {
  72.             PIR1bits.CCP1IF = 0;
  73.             T1CONbits.TMR1ON = 0;
  74.             high = CCPR1H;
  75.             low = CCPR1L;
  76.             //TMR1H = 0x00;
  77.             //TMR1L = 0x00;
  78.             //T1CONbits.TMR1ON = 1;
  79.         }
  80.     }
  81. }
  82.  
  83. //----Funcion de Interrupcion----

Gracias.
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.


 

anything