Autor Tema: Tratando de arrancar con XC8  (Leído 513 veces)

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

Desconectado madscientist

  • PIC10
  • *
  • Mensajes: 24
Tratando de arrancar con XC8
« en: 24 de Julio de 2024, 09:46:01 »
Tengo instalado mplabx 6.2.0 en Linux. Tengo un Pickit 3 que funciona bien.

Tengo un par de micros pic16fxx mas o menos grandes y un par de placas experimentales para hacerlos mover cosas, hasta ahi creo que estoy bien.

Tengo un problema con el lenguaje: mplab usa el compilador XC8 y no me puedo formar una nocion de las instrucciones de este compilador.

Estuve leyendo el libro "Programming PIC Microcontrollers With XC8" de Armstrong Subero, no dudo de la calidad del libro,este explica que primero hay que hacer una libreria .h en C con las funciones que uno quiera utilizar y despues incluirla al comienzo del codigo del micro.

Nombra instrucciones tipo "TrisbA, TrisbC, Amsel", etc etc para definir entradas y salidas, pero no me queda casi nada al leerlo.

Entiendo lo basico de programacion en C, pero me gustaria encontrar un resumen o algo de las instrucciones de este compilador.
Me gustaria poder darle un nombre a cada pin del micro para volver menos confuso el codigo y no encuentro como hacerlo.
Necesito poder leer, por ejemplo, si un pin esta alto o bajo por causa de un interruptor y que otros pines se prendan y apaguen a determinados intervalos en secuencia, para manejar un motor o llegado el caso darle un mensaje a otro microcontrolador. 

Estas cosas son posibles de resolver con Xc8? Hay algun "cheatsheet" que tenga estas cuestiones mas o menos visibles de forma ordenada, que pueda tener al lado de la pc al intentar escribir el programa?


Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Tratando de arrancar con XC8
« Respuesta #1 en: 24 de Julio de 2024, 09:55:55 »
Nombra instrucciones tipo "TrisbA, TrisbC, Amsel", etc etc para definir entradas y salidas, pero no me queda casi nada al leerlo.

No son instrucciones, son los registros del microcontrolador (ubicados en la RAM) para configurar los periféricos, los denominados TRIS te permiten configurar como entradas o salidas los bits o pines de los puertos físicos.

Lo que te falta a parte del conocimiento en C, es entender la arquitectura del microcontrolador y un conocimiento de electrónica (sobre todo digital)

https://mu.microchip.com/8-bit-microcontrollers-architecture-of-the-pic16

Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado madscientist

  • PIC10
  • *
  • Mensajes: 24
Re:Tratando de arrancar con XC8
« Respuesta #2 en: 24 de Julio de 2024, 10:16:02 »
Hay alguna libreria para xc8 generica que me permita  llamar a tal puerto del bus a "switch", a tal otro "led 1", "motor 1", etc etc y definir si son entradas y/o salidas usando un lenguaje mas o menos razonable para empezar?

Asi como en C++ se pueden hacer muchas cosas con la libreria "iostream.h" y es facil de entender, necesito una cosa asi para poder escribir programas simples. Si bien tengo idea de como funcionan estos microcontroladores, honestamente no estoy en condiciones de mezclar lenguaje assembler con c, necesito algo mas amigable para empezar.

Si lo que estoy buscando no es la solucion, hay otro entorno de programacion para estos micros que pueda usarse en linux? Tengo una PC con Win 10 solo para robotica, pero si pudiera, quisiera hacerlo en esta que tiene linux..

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Tratando de arrancar con XC8
« Respuesta #3 en: 24 de Julio de 2024, 13:55:20 »
Hay alguna libreria para xc8 generica que me permita  llamar a tal puerto del bus a "switch", a tal otro "led 1", "motor 1", etc etc y definir si son entradas y/o salidas usando un lenguaje mas o menos razonable para empezar?

Asi como en C++ se pueden hacer muchas cosas con la libreria "iostream.h" y es facil de entender, necesito una cosa asi para poder escribir programas simples. Si bien tengo idea de como funcionan estos microcontroladores, honestamente no estoy en condiciones de mezclar lenguaje assembler con c, necesito algo mas amigable para empezar.

Si lo que estoy buscando no es la solucion, hay otro entorno de programacion para estos micros que pueda usarse en linux? Tengo una PC con Win 10 solo para robotica, pero si pudiera, quisiera hacerlo en esta que tiene linux..

Tu te estas queriendo complicar la vida, como que si el microcontrolador fuera un PC con toda su gran capacidad de memoria y recursos.

Lo entiendo desde un punto de vista de alguien experto en sistemas y software que propone elegantes y complejas soluciones, sin considerar lo antes mencionado.

Lo que suele usarse, son definiciones (#define) para  nombrar de otra manera a los registros, o usar estructuras de datos para crear "tus propias variables".

Pero mientras más complejo quieras que sea la definiciones de variables, registros, periféricos, y eso implica un manejo más complejo, vas a crear un código posiblemente inestable, y enorme que no entre en la memoria del microcontrolador.

La idea de utilizar C, y escribir todo más sencillo, es optimizar el código, ya que como mencioné, no tienes una gran capacidad de memoria, inclusive hay veces que es necesario, en algunos casos recurrir a escribir en ensamblador para optimizar aun más el código.

tal vez para ti sea una mejor manera de programar, es usar un lenguaje gráfico.

La otra es que uses un microcontrolador de 32 bits y ahí hagas todo lo que quieres en C++, ya que uno de 32 bits tiene más recursos, pero ojo, sigue siendo algo minúsculo en comparativa a una computadora convencional.

« Última modificación: 24 de Julio de 2024, 13:57:52 por DominusDRR »
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado madscientist

  • PIC10
  • *
  • Mensajes: 24
Re:Tratando de arrancar con XC8
« Respuesta #4 en: 24 de Julio de 2024, 17:08:14 »
Encontre de casualidad una web incompleta que parece ser lo que estaba buscando, ahora empece a entender un poco mejor lo de los registros y la configuracion de los pines de los micros.

No se si es o no la solucion, voy a probar lo que dice aca y ver si consigo hacer algo.

https://picguides.com/beginner/digital.php

Desconectado Eduardo2

  • PIC24F
  • *****
  • Mensajes: 965
Re:Tratando de arrancar con XC8
« Respuesta #5 en: 24 de Julio de 2024, 17:33:39 »
Te sugiero que además de eso, busques el datasheet del micro que vas a usar y lo tomes como referencia de los puntos a investigar.

 

Desconectado madscientist

  • PIC10
  • *
  • Mensajes: 24
Re:Tratando de arrancar con XC8
« Respuesta #6 en: 26 de Julio de 2024, 00:57:32 »
Me parece que es la manera... creo que ya empece a entender de que se trata:

1. hay que incluir la libreria "xc.h".
2. hay que designar todos los puertos del micro como R(x) digital por que algunos pines permiten uso digital o analogico con las sentencias Anseld y Anselh, creo que se puede hacer que ninguno quede en modo analogo dando el parametro "OxFF" o algo asi para que tome todos los pines en modo digital;

3. hay que definir cuales son los pines de entrada y los de salida usando TrisB, TrisC y creo que hay un TrisD para definir entradas y salidas , con sentencias tipo TrisDBits.Ra1.

Despues puedo escribir un programa con unos comandos llamados Port que leen y escriben cada bit.
Ports. Portbit (RA1) o algo asi.

Lo estoy escribiendo como me lo acuerdo, despues lo tengo que mirar bien en detalle pero creo que empece a poder superar la confusion.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Tratando de arrancar con XC8
« Respuesta #7 en: 26 de Julio de 2024, 22:20:18 »
Me parece que es la manera... creo que ya empece a entender de que se trata:

1. hay que incluir la libreria "xc.h".
2. hay que designar todos los puertos del micro como R(x) digital por que algunos pines permiten uso digital o analogico con las sentencias Anseld y Anselh, creo que se puede hacer que ninguno quede en modo analogo dando el parametro "OxFF" o algo asi para que tome todos los pines en modo digital;

3. hay que definir cuales son los pines de entrada y los de salida usando TrisB, TrisC y creo que hay un TrisD para definir entradas y salidas , con sentencias tipo TrisDBits.Ra1.

Despues puedo escribir un programa con unos comandos llamados Port que leen y escriben cada bit.
Ports. Portbit (RA1) o algo asi.

Lo estoy escribiendo como me lo acuerdo, despues lo tengo que mirar bien en detalle pero creo que empece a poder superar la confusion.

En YouTube hay varios tutoriales que podrías seguir, hasta en este mismo foro hay:

https://www.todopic.com.ar/foros/index.php?topic=40649.0
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado madscientist

  • PIC10
  • *
  • Mensajes: 24
Re:Tratando de arrancar con XC8
« Respuesta #8 en: 27 de Julio de 2024, 01:28:58 »
Buenisimo, lo voy a mirar, por ahi es lo que necesito, gracias.

Actualizo: existe alguna manera de descargar ese tutorial y poder pasarlo a una tablet de algun modo como si fuera un libro electronico?
« Última modificación: 27 de Julio de 2024, 19:38:47 por madscientist »

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino

Desconectado madscientist

  • PIC10
  • *
  • Mensajes: 24
Re:Tratando de arrancar con XC8
« Respuesta #10 en: 01 de Agosto de 2024, 10:10:05 »
Lo pude ver todo completo e imprimir como PDF, se lo agradezco profundamente.

Desconectado madscientist

  • PIC10
  • *
  • Mensajes: 24
Re:Tratando de arrancar con XC8
« Respuesta #11 en: 08 de Agosto de 2024, 16:04:22 »
Acabo de poder hacer un programa para Pic 16f819.

No lo arme del todo, es para que encienda un par de cosas u otras de acuerdo a si se presiona un pulsador u otro.

Este chip parece no soportar Ansel ni AnselH y lo que pude estudiar parece hacer pensar que usan un comando llamado "Adcon0" o "Adcon1" para volver todos los pines digitales, despues uno los podria configurar como input / output usando Tris(x)bits.RAx o RBx.

MPlab X, al tipear "ADCON1Bits. me ofrece opciones como "adcs, adfm, pcfg 1,2,3,4..." tengo que usar alguna de estas y darle algun valor que diga "quiero todos los puertos digitales sin entrada ni salida analogica"?

Resuelto esto, si quiero usar ciclos for, while, do while, para que mientras tenga un boton apretado haga una cosa y si otro otra y se detenga al soltarlos, hace falta que incluya al comienzo "stdio.h" y "stdlib.h" como si programara en un sistema C o C++ normal?

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Tratando de arrancar con XC8
« Respuesta #12 en: 08 de Agosto de 2024, 23:20:00 »
Acabo de poder hacer un programa para Pic 16f819.

No lo arme del todo, es para que encienda un par de cosas u otras de acuerdo a si se presiona un pulsador u otro.

Este chip parece no soportar Ansel ni AnselH y lo que pude estudiar parece hacer pensar que usan un comando llamado "Adcon0" o "Adcon1" para volver todos los pines digitales, despues uno los podria configurar como input / output usando Tris(x)bits.RAx o RBx.

MPlab X, al tipear "ADCON1Bits. me ofrece opciones como "adcs, adfm, pcfg 1,2,3,4..." tengo que usar alguna de estas y darle algun valor que diga "quiero todos los puertos digitales sin entrada ni salida analogica"?

Resuelto esto, si quiero usar ciclos for, while, do while, para que mientras tenga un boton apretado haga una cosa y si otro otra y se detenga al soltarlos, hace falta que incluya al comienzo "stdio.h" y "stdlib.h" como si programara en un sistema C o C++ normal?

¿Has intentado leer las hojas de datos del microcontrolador? Parecería que te resistes a leer la información disponible

Respecto a stdio.h y stdlib.h cuando vas a trabajar con funciones de entrada y/o salida (por ejemplo getchar) y deseas manejar cadenas de caracteres, respectivamente, debes incluirlas.

En tu caso, parece que sólo deseas manipular los puertos del microcontrolador, por ahora.
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado madscientist

  • PIC10
  • *
  • Mensajes: 24
Re:Tratando de arrancar con XC8
« Respuesta #13 en: 09 de Agosto de 2024, 08:56:51 »
Tengo la hoja del micro y empece a leerla.. ahora creo que entiendo: el MPlab X  tiene una libreria llamada "xc.h" que adentro tiene incluidas las librerias de cada micro, por eso pregunta que micro voy a usar.

Estuve leyendo el tema registros, tenia una idea algo equivocada de lo que son, Tambien pense que al soportar C y tener una libreria en comun, las instrucciones eran comunes para los micros y ahora veo que no es 100% asi.

Bajje mucha info pero , sinceramente, no alcanzo a procesar todo lo que obtuve, eso me pasa.


 

anything