Autor Tema: Consejos de como iniciarme en el C  (Leído 7015 veces)

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

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re:Consejos de como iniciarme en el C
« Respuesta #15 en: 01 de Julio de 2017, 18:08:45 »
  Hola Carlos. Aquí en el foro de C tienes un "Mini curso programación en XC8".
  Si bien el libro que te recomienda planeta está en ingles, es bastante sencillo de entender. Incluso te diría que más fácil que muchas traducciones que andan dando vueltas.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado EdoNork

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 616
    • ElektroQuark
Re:Consejos de como iniciarme en el C
« Respuesta #16 en: 02 de Julio de 2017, 03:11:38 »
Nunca he encontrado un libro decente de programación de microcontroladores en C++. Y eso sí que me atrae.
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 Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Consejos de como iniciarme en el C
« Respuesta #17 en: 02 de Julio de 2017, 05:55:03 »
La biblia para aprender C sigue siendo el libro que escribieron sus creadores:
El Lenguaje de Programación C, de Kernighan y Ritchie

Si buscas por internet puedes encontrarlo con facilidad.

Saludos.

Desconectado EdoNork

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 616
    • ElektroQuark
Re:Consejos de como iniciarme en el C
« Respuesta #18 en: 02 de Julio de 2017, 05:57:34 »
El C moderno, y sobre todo la forma de utilizarlo, ha evolucionado bastante desde ese libro.
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 manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re:Consejos de como iniciarme en el C
« Respuesta #19 en: 02 de Julio de 2017, 06:34:22 »
La biblia para aprender C sigue siendo el libro que escribieron sus creadores:
El Lenguaje de Programación C, de Kernighan y Ritchie

Si buscas por internet puedes encontrarlo con facilidad.

Saludos.

+1.

Lo puse más arriba. Lo vuelvo a poner:

https://docs.google.com/file/d/0B4FF12HzhOl4OGdLc0FYVEpqNzQ/edit

Saludos.
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re:Consejos de como iniciarme en el C
« Respuesta #20 en: 08 de Julio de 2017, 06:45:18 »
Hola colegas, pues acá estoy para agradecerles, y sencillamente porque gracias a su ayuda, e logrado hacer un a par de programas por mis propios medios, por supuesto estos programas son básicos, pero por fin puedo decir que e programado "algo" en C, y sobre todo, e conseguido entender la idea básica de como configurar un PIC, iniciar un programa y por ahora algunos comandos sencillos. Cosa que antes no podía entender.

Pues ahora que entiendo por lo menos lo mínimo, no pareciera que el C fuera tan complejo, antes me parecía una cosa imposible.

Muchas gracias a todos, y de seguro, más adelante estaré molestando con nuevas dudas.

Un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re:Consejos de como iniciarme en el C
« Respuesta #21 en: 08 de Julio de 2017, 07:07:54 »
Grande!!! ((:-))

Mira que te lo decíamos que no era complejo para nada :lol:. Y además es universal. Me refiero a que aunque a 90% de los informáticos de carrera les de grima usar C porque les parece de muy bajo nivel, para los electrónicos es perfecto ya que no es tan lento de programar como ensamblador (más bajo nivel) ni tan abstracto como los lenguajes modernos de alto nivel con lo que nunca pierdes de vista el hardware. 45 años después estará casi obsoleto en PC y web pero vive su mejor época en electrónica: miles de millones de dispositivos programados en C (o C++): la mayoría de dispositivos basados en micrcontroladores y los que llevan linux (moviles, tablets, cuadros de mando de coches, cartelería, etc.)

Como eres una persona metódica seguro que en poco programas fenomenal!

Saludos.
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re:Consejos de como iniciarme en el C
« Respuesta #22 en: 08 de Julio de 2017, 07:46:43 »
Gracias Manuel, todo esto por culpa tuya  :D :D :D :D

Un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re:Consejos de como iniciarme en el C
« Respuesta #23 en: 08 de Julio de 2017, 08:18:40 »
todo esto por culpa tuya  :D :D :D :D

Si me dieran 1$ por cada vez que me dicen eso no tendría que levantarme para ir a trabajar... :D
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Consejos de como iniciarme en el C
« Respuesta #24 en: 09 de Julio de 2017, 19:50:42 »
También a los informáticos les gusta bastante eso del C:
Sistemas operativos como Windows, Linux, OSX, aplicaciones de escritorio como Word o Excel, lenguajes de programación como Python, PHP, Ruby, lectores de documentos como Adobe Acrobat Reader, tratamiento gráfico como Photoshop, navegadores como Firefox o Chrome, todos ellos son programas escritos en C.

Saludos.

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re:Consejos de como iniciarme en el C
« Respuesta #25 en: 10 de Julio de 2017, 04:51:40 »
Perdón por generalizar. Es lo que he visto en mi entorno, estoy rodeado de muchos y la mayoría se dedican a web con lo que el dia  a dia es PHP, html5, javascript, CCS, angular, etc.

Igual es sólo mi impresión pero tengo la idea preconcebida que en España hay mucha más gente desarrollando web y apps para dispositivos móviles que software para PC/MAC.

Ya digo que es solo mi impresión y quizá esté equivocado....
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado tsk

  • PIC18
  • ****
  • Mensajes: 258
Re:Consejos de como iniciarme en el C
« Respuesta #26 en: 10 de Julio de 2017, 11:51:01 »
Perdón por generalizar. Es lo que he visto en mi entorno, estoy rodeado de muchos y la mayoría se dedican a web con lo que el dia  a dia es PHP, html5, javascript, CCS, angular, etc.

Igual es sólo mi impresión pero tengo la idea preconcebida que en España hay mucha más gente desarrollando web y apps para dispositivos móviles que software para PC/MAC.

Ya digo que es solo mi impresión y quizá esté equivocado....

Según el indice TIOBE primero esta Java, después C y enseguida C++, entre los más usados. Entre los tres cubren el 26.67%

https://www.tiobe.com/tiobe-index/

Aunque a partir del 2016 su uso se ha reducido según ese índice. Probablemente porque todo se esta moviendo a "la nube" y con la potencia de los ordenadores actuales, hay muchas aplicaciones que no justifican el desarrollarlas en estos lenguajes.

Si nos vamos a las estadísticas de github, el primero es Javascript, dejando a java en el segundo puesto y a C++ y C en los puestos 7 y 8 respectivamente.

http://githut.info/

Tanto C con C++ se esta quedando en el lado oculto del servidor donde se requiere desempeño. Si buscas el código fuente
 de sistemas que se usan en "la nube" y bases de datos, están hechos en C o C++. Por ejemplo mongodb,  redis, memcached, php, nodejs,  o el mismo sistema operativo donde se ejecutan todas esas herramientas están hecho en C o C++.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Consejos de como iniciarme en el C
« Respuesta #27 en: 10 de Julio de 2017, 12:18:49 »
De todas formas pienso que C/C++ va a tener mucho tiempo en el mundo de los microcontroladores.

Como dicen el mundo de la PC varia y bastante, sale un nuevo lenguaje cada poco tiempo. Y el mayor consumo es la Web, tanto Front-End ( JS, CCS) como Back-End ( SQL, Java, etc).

Pero para la parte de Electronica. No hay reemplazante inmediato de C/C++, provee una buena potencia de lenguaje respecto a la potencia que poseen los microcontroladores.

Lo que si me sorprende en TIOBE es que ASM se encuentre tan alto. Ya que no veo donde se encuentra la aplicacion para esto. Todo de la PC sinceramente minimo es C no creo que ni se gasten en usar ASM por ejemplo para la UEFI ahora. Lo unico que queda son los microcontroladores, y que a no ser las familias mas chicas se programan en C sin problemas. No se en que aplicaran ASM. Y desde el 2015 en adelante incremento. Lo cual aun es mas insensato.
Cuando busque , dicen que es por los dispositivos IoT, pero no creo que nadie use ASM para hacer el stack TCP/IP

PD: El otro dia desarme un microondas realtivamente actual whirpool y me encontre con un micro de 4bits :P
« Última modificación: 10 de Julio de 2017, 12:38:33 por KILLERJC »

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re:Consejos de como iniciarme en el C
« Respuesta #28 en: 16 de Julio de 2017, 14:55:50 »
Hola Gente, acá nuevamente con una nueva consulta. Comento que estoy intentando hacer un programita, que consta de lo siguiente:

Tomo el valor capturado (1 byte) por un conversor A/D
Con el valor anterior ir a una tabla y retornar con un valor XXX (1 byte)
Con el valor de retorno introducirlo en el TMR para generar el duty de un PWM.

Hasta ahora casi todo perfecto, estoy trabajando con un PIC16F88, logre configurarlo con éxito, el A/D funciona perfecto y el PWM también, esto lo e comprobado ya que tomando el valor del A/D y colocándolo en el TMR el duty varia como debe.

El problema se presenta con la bendita tabla, no logro tomar el valor del A/D para con este ir a la tabla y retornar con el valor adecuado para introducirlo al TMR.

Serían tan amables de indicarme como debo de hacer esto?

Desde ya muchas gracias.

Un saludo.

Atte. CARLOS.
La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Consejos de como iniciarme en el C
« Respuesta #29 en: 16 de Julio de 2017, 16:18:34 »
De hacerlo con una tabla ( realizado con un array en C, deberia quedarte asi), voy a suponer que son 8 bits, porque decis 1 byte, lo que entrega el ADC

Código: C
  1. const uint8_t tabla[256] = { xx,xxx,xx,xx,xx,xx,xx,x,xx,xx, etc}; // Esto lo pones bien arriba, que sea global
  2.  
  3. //Lo que sigue dentro de tu programa.
  4.  
  5. // Aca conversion del ADC
  6. PR2 = tabla[ADRESL];  //<- Utiliza el valor del ADC como indice de la tabla, el valor resultado va al PR2

El const de tabla es para ponerlo en la FLASH (Program Memory), sino estarias intentando reservar el lugar para la tabla en la RAM (Data Memory).
el uint8_t es lo mismo que unsigned char ( La nomclatura que use es de unsigned integer 8 bit )

Consejo sobre los arrays
Lo unico que tenes que asegurarte es que SI o SI lo que pongas de indice, exista en el array. Si tenes un array de 10 elementos, y usas un indice de 20, el compilador C no te va a decir que te pasaste, Y seguramente tengas error en lo que pienses hacer, asi que siempre asegurate de que los indices se cumplen, e implementar limites si es que se necesita. En este ejemplo si detecto un indice mayor a 9 ( los 10 elementos van de 0 a 9 ) o aviso que hay un error o uso un valor de indice definido ejemplo 9.

Aclaracion sobre el tamaño maximo de los arrays en FLASH:
Estos tamaños son impuestos por el compilador.

En los PICs de instrucciones de 12-bit ( baseline ) y que usabas RETLW para guardar algo en la FLASH el tamaño esta limitado a 255 elementos. Pero podes tener varias variables, lo cual no te acomplejaria en nada.
En los demas PICs no hay limitaciones, solo las impuestas por el tamaño de la FLASH obviamente
« Última modificación: 16 de Julio de 2017, 16:51:42 por KILLERJC »