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

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado storm67

  • PIC10
  • *
  • Mensajes: 6
Re: Mini curso "Programación en XC8"
« Respuesta #240 en: 19 de Junio de 2014, 01:23:53 »
Gracias AngelGris.  con ese dato se que puedo usar el F84A que ya tengo.  Usando el RB0 para generar interrupción y TMR0 para contar el tiempo entre pulsos. ´¿Estaría midiendo el tiempo entre pulsos? yo quiero realizar el otro método, el contar los pulsos en un periodo fijo de tiempo. Probablemente contando las interrupciones en RB0. El tiempo que necesito es de 0.555077 us  y debido a que el TMR0 solo cuenta hasta 256 usaré un valor de TMR0 de 39 para tener un perodo de 0.0555... y hacerlo dar 10 vueltas con un while y asi completarlo, entondes despues leer la cuenta de interrupciones de RB0 y mandarlas a displays despues de separarlas en unidades,, decenas y centenas.

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 805
    • https://electronicadicto.wordpress.com/
Re: Mini curso "Programación en XC8"
« Respuesta #241 en: 19 de Junio de 2014, 04:49:14 »
Pues vaya, me costará un poco adaptarme, creo que seguiré con C18 ya que si quisiera utilizar un conjunto de librerías como las de TCPIP sería un verdadero infierno adaptarlas.
saludos

  Tal vez deberías ver algún readme de la última edición de las librerías. Yo probé la de USB y ya contempla al compilador XC8, muy posiblemente para TCP/IP también pueda compilar con XC8.

Vale, le echaré un vistazo, ahora estaba haciendo pruebas con librerías de C18 adaptándolas a XC8 y para los micros de gama media y con pocas modificaciones funcionan bien, voy a seguir estudiando
Más códigos y desarrollos en https://electronicadicto.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Mini curso "Programación en XC8"
« Respuesta #242 en: 19 de Junio de 2014, 18:12:10 »
Gracias AngelGris.  con ese dato se que puedo usar el F84A que ya tengo.  Usando el RB0 para generar interrupción y TMR0 para contar el tiempo entre pulsos. ´¿Estaría midiendo el tiempo entre pulsos? yo quiero realizar el otro método, el contar los pulsos en un periodo fijo de tiempo. Probablemente contando las interrupciones en RB0. El tiempo que necesito es de 0.555077 us  y debido a que el TMR0 solo cuenta hasta 256 usaré un valor de TMR0 de 39 para tener un perodo de 0.0555... y hacerlo dar 10 vueltas con un while y asi completarlo, entondes despues leer la cuenta de interrupciones de RB0 y mandarlas a displays despues de separarlas en unidades,, decenas y centenas.

    Yo usaría el TMR0 para que cada interrupción incremente un contador (contador de tiempo). También la interrupción de RB0 para que incremente otro contador (contador de pulsos). Así cuando tu "contador de tiempo" llegue al valor requerido, lees el "contador de pulsos" y haces los cálculos necesarios.
    Tendrás que multiplexar los display, entonces creo que tendrías que buscar la forma de hacer eso dentro de tu ciclo while.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado CompSystems

  • PIC18
  • ****
  • Mensajes: 488
    • Home Page
Re: Mini curso "Programación en XC8"
« Respuesta #243 en: 29 de Junio de 2014, 11:04:52 »
Hoy me he pasado de FRRESCALE a MICROCHIP  :-/, estoy usando MPLAB X ide 2.10, instalo los compiladores pero no aparecen cuando creo un nuevo proyecto, mientras instalaba los compiladores por ejemplo xc8-v1.32-windows-installer.exe sobre win8.1-OS genero un error que decía algo de MPLABXC8.dll pienso que aquí radica el problema aunque la intsalcion si ternina, deseo su colaboración para iniciarme en el mundo de MICROCHIP pues estoy "quieto" hasta solucionar esto  :(

Gracias

Mensaje que genera mientras se instala el compilador

/!\ Problem running post-install step. Installation may not complete correctly

Error running C:\Windows\systems32\regsvr32/s "C:\Program Files\Microchip\v1.32\bin\MPLABXC9.dll": Program ended with an error exit code
« Última modificación: 29 de Junio de 2014, 12:44:11 por CompSystems »
Desde Colombia

Desconectado EdoNork

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 616
    • ElektroQuark
Re: Mini curso "Programación en XC8"
« Respuesta #244 en: 29 de Junio de 2014, 12:31:37 »
Hoy me he pasado de FREESCALE a MICROCHIP

Yo estoy pensando en hacer lo contrario... Con sus Kinetis te apañas para todo. Y no me parece una tontería utilize<ar un ARM de 32 bits para encender un led, costando poco más que un micro de 8 bits... Pero no nos salgamos del tema. Lo siento.
Mi blog sobre electrónica y cosillas afines: www.elektroquark.com
EQVideo en Youtube
El foro de KiCad en castellano.
Mi librería para KiCad ¡AQUÍ!

Desconectado CompSystems

  • PIC18
  • ****
  • Mensajes: 488
    • Home Page
Re: Mini curso "Programación en XC8"
« Respuesta #245 en: 29 de Junio de 2014, 12:36:31 »
EL problema es que no existen foros en castellano de microcontroladores FREESCALE, y una comunidad (foro, blog) permite avanzar mas rápido en el autoaprendizaje, ademas existen cientos y miles de aficionados o expertos en micros MICROCHIP que colaboran en los foros, blogs, etc, mientras que los de FRESCALE trabajan para empresas y no son nada colaborativos. pienso que si desde un principio me hubiera enfocado en micros MICROCHIP en este momento tuviera un buen nivel de autoaprendizaje
« Última modificación: 29 de Junio de 2014, 12:45:32 por CompSystems »
Desde Colombia

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 627
Re: Mini curso "Programación en XC8"
« Respuesta #246 en: 29 de Junio de 2014, 21:59:15 »
Hoy me he pasado de FRRESCALE a MICROCHIP  :-/, estoy usando MPLAB X ide 2.10, instalo los compiladores pero no aparecen cuando creo un nuevo proyecto, mientras instalaba los compiladores por ejemplo xc8-v1.32-windows-installer.exe sobre win8.1-OS genero un error que decía algo de MPLABXC8.dll pienso que aquí radica el problema aunque la intsalcion si ternina, deseo su colaboración para iniciarme en el mundo de MICROCHIP pues estoy "quieto" hasta solucionar esto  :(

Gracias

Mensaje que genera mientras se instala el compilador

/!\ Problem running post-install step. Installation may not complete correctly

Error running C:\Windows\systems32\regsvr32/s "C:\Program Files\Microchip\v1.32\bin\MPLABXC9.dll": Program ended with an error exit code

Alguna vez vi ese problema, puede probar hacer que el MPLAB X reconozca el compilador a mano. Para esto vaya al menu [Tools]->[Options], en esta ventana seleccione [embedded], en la pestaña [Build Tools] vera los compiladores que el MPLAB X reconocio, si el suyo no esta pruebe de adicionarlo usando el boton [Add].

Puede tambien de probar reinstalar el compilador.

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 Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: Mini curso "Programación en XC8"
« Respuesta #247 en: 28 de Julio de 2014, 04:26:06 »
Hola, alguien seria tan amable de compilar este código y simularlo para decirme cada cuanto tiempo cambia de estado el pin donde esta conectado el led.
En mi simulación cambia cada 16,38325ms pero según los cálculos debería cambiar cada 65ms, mis versiones del MPLABx son
Compiler: XC8 v1.32
IDE:    MPLABX v2.15
Código: C
  1. /**
  2.  *******************************************************************
  3.  *
  4.  *  PIC: 16F876A
  5.  *  Compiler: XC8 v1.32
  6.  *  IDE: MPLABX v2.15
  7.  *
  8.  *  Date: 25.07.2014
  9.  *
  10.  * *****************************************************************
  11.  */
  12.  
  13. #include <xc.h>                                     //PIC hardware mapping
  14. #define _XTAL_FREQ 4000000                         //Used by the XC8 delay_ms(x) macro
  15.  
  16. //#define DOWN                0
  17. //#define UP                  1
  18.  
  19. #define LED              PORTBbits.RB1
  20.  
  21. //#define PULL_UPS
  22.  
  23. // CONFIG
  24. #pragma config FOSC = XT        // Oscillator Selection bits (XT oscillator)
  25. #pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
  26. #pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
  27. #pragma config BOREN = ON       // Brown-out Reset Enable bit (BOR enabled)
  28. #pragma config LVP = OFF        // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
  29. #pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
  30. #pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
  31. #pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)
  32.  
  33.  
  34.     /* -------------------LATB-----------------
  35.      * Bit#:  -7---6---5---4---3---2---1---0---
  36.      * LED:   -------------------|SV2|SV1|-----
  37.      *-----------------------------------------
  38.      */
  39.  
  40.  
  41. unsigned char cuenta = 0;                       //a global variable
  42.  
  43. void main(void)
  44. {
  45.     TRISB = 0b00000000;                         //all pins are outputs
  46.     PORTB = 0;                                   //init SERVOS in OFF state
  47.  
  48. //#ifdef PULL_UPS
  49.    
  50.  
  51. //#endif
  52.  
  53.      // Configuración del timer & interrupcion
  54.    TMR0 = 0;
  55.    OPTION_REGbits.PS0 = 1;
  56.    OPTION_REGbits.PS1 = 1;
  57.    OPTION_REGbits.PS2 = 1;
  58.    OPTION_REGbits.PSA = 0;
  59.    OPTION_REGbits.T0CS = 0;
  60.    INTCONbits.TMR0IE = 1;
  61.    INTCONbits.GIE = 1;
  62.  
  63.    // Bucle infinito
  64.    while (1){
  65.        if (cuenta == 1){
  66.            LED ^= 1;
  67.            cuenta = 0;
  68.        }
  69.    }
  70. }
  71.  
  72. void interrupt ISR(void)
  73. {
  74.    cuenta++;                   // Incremento variable
  75.    INTCONbits.TMR0IF = 0;      // Limpiamos bandera de desborde
  76. }

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

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 627
Re: Mini curso "Programación en XC8"
« Respuesta #248 en: 28 de Julio de 2014, 12:22:11 »
Si esta simulando en el simulador del MPLABX, tiene que configurar la velocidad de acuerdo a los MIPS, por ejemplo: 4M = 1 MIPS

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 Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: Mini curso "Programación en XC8"
« Respuesta #249 en: 28 de Julio de 2014, 12:37:27 »
Gracias sander por la respuesta, pero donde configuro los mips, solo se donde configurar la frecuencia del oscilador.
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 627
Re: Mini curso "Programación en XC8"
« Respuesta #250 en: 28 de Julio de 2014, 12:49:24 »
Supongo que estas usando el simulador del MPLABX, buscas en las propiedades del proyecto, ahí te aparece las opciones para el simulador, buscas
Instruction execution frequency (Fcyc) y colocas el valor de cristal dividido entre cuatro, es decir los MIPS (la frecuencia real a la que se ejecutan las instrucciones)

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 Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: Mini curso "Programación en XC8"
« Respuesta #251 en: 28 de Julio de 2014, 13:32:05 »
Gracias de nuevo sander, yo ponía la frecuencia del cristal 4MHz.  :oops:
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 627
Re: Mini curso "Programación en XC8"
« Respuesta #252 en: 28 de Julio de 2014, 14:27:24 »
Al principio tambien me confundia, porque en el MPLAB 8 se ponia la frecuencia del cristal.

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 alev2477

  • PIC10
  • *
  • Mensajes: 21
Re: Mini curso "Programación en XC8"
« Respuesta #253 en: 28 de Julio de 2014, 23:46:22 »
Supongo que estas usando el simulador del MPLABX, buscas en las propiedades del proyecto, ahí te aparece las opciones para el simulador, buscas
Instruction execution frequency (Fcyc) y colocas el valor de cristal dividido entre cuatro, es decir los MIPS (la frecuencia real a la que se ejecutan las instrucciones)

Saludos.

Saludos amigos,,

Un momento que me perdí.

Se coloca esa configuración para la simulación o también afecta al código real????
Al preguntar aprendo y al responder aprendo tambien

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: Mini curso "Programación en XC8"
« Respuesta #254 en: 03 de Septiembre de 2014, 12:46:31 »
Otra vez necesito de vuestra ayuda, sigo liado con el modulo CCP en un pic 16f876A  por mucho que lo intento no me funciona correctamente, intento la captura del TMR1
pero nunca coincide el valor del timer con la pareja de registros del CCP, solo coincide la parte alta del timer.
Y a mi parecer tengo el codigo de forma correcta:
Código: C
  1. #include <xc.h>                                  //PIC hardware mapping
  2.  
  3. #define _XTAL_FREQ  20000000        //Used by the XC8 delay_ms(x) macro
  4.  
  5.  
  6. // CONFIG
  7. #pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator)
  8. #pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
  9. #pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
  10. #pragma config BOREN = ON       // Brown-out Reset Enable bit (BOR enabled)
  11. #pragma config LVP = OFF        // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
  12. #pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
  13. #pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
  14. #pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)
  15.  
  16. // Declaracion de funciones
  17. void main (void);
  18. void interrupt modulo_captura (void);
  19.  
  20. // Declaracion de Variables
  21.  
  22.  
  23. // FUNCION PRINCIPAL
  24. void main (void)
  25. {
  26.     TRISC = 0b00000100;
  27.  
  28. // Configuramos TMR1 & CCP1
  29.     CCP1CON = 0b00000000;
  30.     TMR1H = 0;
  31.     TMR1L = 0;
  32.     INTCON = 0b00000000;
  33.     PIE1 = 0b00000000;
  34.     PIR1 = 0b00000000;
  35.     CCP1CON = 0b00000101;
  36.     PIE1 = 0b00000100;
  37.     INTCON = 0b11000000;
  38.     T1CONbits.TMR1ON = 1;
  39.  
  40.     while(1)
  41.     {
  42.         continue;
  43.     }
  44. }
  45.  
  46. // Función modulo captura (CCP1)
  47. void interrupt modulo_captura (void)
  48. {
  49.     if(PIR1bits.CCP1IF)
  50.     {
  51.         PIR1bits.CCP1IF = 0;
  52.         TMR1H = 0;
  53.         TMR1L = 0;
  54.     }
  55. }
Captura simulacion
Gracias.
« Última modificación: 03 de Septiembre de 2014, 14:13:02 por Miquel_S »
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.