Foro de elhacker.net

Informática => Electrónica => Mensaje iniciado por: chipo en 6 Febrero 2014, 07:29



Título: Duda inicial: PIC 16F84A vs 18F4550 ASM vs C (CCS vs C18)
Publicado por: chipo en 6 Febrero 2014, 07:29
Buenas a todos. La gran duda que tengo es la que muy resumidamente expongo en el asunto. Soy apenas nuevo en el universo de los microcontroladores y antes de meterme de lleno con nada, siguiendo el consejo de Albert, como no hay nada mejor para una buena práctica que una buena teoría me puse a ver las distintas alternativas y la verdad que no logro decidirme por nada, por eso quiero consultar con los que saben.

El objetivo sería en un futuro empezar a hacer proyectos usando Ethernet, para lo que sé que es necesario el pic18f4550 ya que el 16f84a no dispone de esa opción. Pero vi en internet que la mayor parte de la información que hay disponible es para el pic16f84a y que a su vez la mayor parte de esta se encuentra en lenguaje ensamblador. Además del problema que son distintos los códigos en C para los compiladores CCS y C18(solo útil para el pic18). Entonces mi duda es  con respecto a las siguientes opciones:

a) Empezar con el 16f84a en ensamblador y luego pasar al 18f4550 (y seguir en ensamblador).
b) Empezar con el 16f84a en C (por ej CCS) y luego pasar al 18f4550 (tmb en C).
c) Empezar directamente con el 18f4550 en ensamblador.
d) Empezar directamente con el 18f4550 en C.

Estaría muy agradecido si me pueden orientar porque soy estudiante de informática y nuca vi estos temas en la facultad y no tengo a nadie para que me pueda orientar en estos temas y la verdad que al comienzo es bastante frustrante si no se tiene una guía, pero ya teniendo esto en claro va a ser el punta pié para entrar de lleno en todo esto.

Muchas gracias!.


Título: Re: Duda inicial: PIC 16F84A vs 18F4550 ASM vs C (CCS vs C18)
Publicado por: Meta en 8 Febrero 2014, 06:35
Hola:

(http://tdtuto.s3.amazonaws.com/img/2009/08/teclado.jpg)

Para personas nóveles.

Lo mejor es tener las cosas claras, puedes encontrar muchas personas que quieren aprender a programar microcontroaldores y te quedas ahí. Luegon lo dejan de hacer porque descubre que no les gusta, solo lo hacen un poco para entregar un pequeño proyecto fin de curso, otros por mera curiosidad, otros se apasionan, otro un largo etc. Antes de empezar, es hacerse preguntas a uno mismo.

1. ¿Por qué quiero aprender a programar?
(Tener claro si es por curiosidad, te gusta resolver problemas, porque me lo exige los cursos, solo para entregar un proyecto fin de curso, un desafío a mi intelecto, sentir que soy capaz de hacer algo que mis amigos no están acostumbrado a ver ni por mi mismo, por hobby, por profesion que me exige la emrpesa, hacer ciertos proyectos para tenerlo en mi hogar porque me hace falta, vender lo que invento para sacar dinero, me gusta aprender, etc).

2. ¿Qué es lo que quiero programar? (Programar un ordenador, un movil, un microcontrolador, una página Web, una PLC o autómata programable, un Arduino, tener claro lo que tienes enfocado en tu mente).

3. ¿Por dónde empiezo? (Se empieza a buscar información de lo que quieres hacer, por ejemplo microcontroladores, leer mucho y ver ejemplos hechos en realidad por youtube para hacer mejor ideas y si realmente tienen intención meterte en este mundo para ver como es).

4. ¿Cómo aprendo a programar? (Siendo autodidacta a base de libros con mucha paciencia y dedicación, Internet, la mejor opción es con cursos dedicado a ellos aunque te pegues dos años en un ciclo superior de programación de PC y móviles. También hay cursos del paro para aprender a programar o aumentando conocimientos sobre fundametos de programación).

5. ¿Es bueno aprender a programar directamente? (No, no es bueno ni aconsejable a programar directamente, es bueno tener conocimientos sobre fundamentos de programación, luego programación, si no es así tendrás problemas en el aprendizaje y capacidad en resolver problemas  entre otras desventajas).

6. ¿Qué microcontrolador deseo programar? (Hay tantas marcas y modelos de la misma familia para escoger. Normalmente, antes de empezar a correr, se empieza gateando, luego caminando, cuando te sientas con soltura, al ritmo que desees. Las casas se empieza a fabricar desde el suelo, no desde el tejado, hay que tenerlo claro desde el principio).

En centros de enseñansas sea ciclo formativos, Universiades e inclusos cursos privados o del paro, se usa mucho el microcontrolador PIC, especialmente a día de hoy, el famoso y popular PIC16F84A, también Motorola (ahora FreeScale) y rara vez AVR.

Se escoge al PIC16F84A por ser el más usado, el que más información, documentos e incluso tiene su propio libro que puedes ver aquí (http://"http://www.pic16f84a.org/"). Es el mejor libro de Pic16F84A en ensamblador que hay para aprender a programar. Aprenderás a fondo asm de verdad.

PIC, es el más recomendado para empezar aprender muchas cosas, no solo a programar, sino su arquitectura y el control de dispositivos internos o externos. Luego, cuando ya sepas algo, decides dedicarle más tiempos a otros PIC que más necesites, e incluso abrir los ojos a otros horizontes para ver otras marcas. PIC de la firma Microchip es el más usado, donde hay más información, tiene mucho ejemplos hasta en su propia Web, hay más proyectos sobre ello por todo Internet, hay más ejempmlos en asm que en C sea el país que sea.

Cuando ya sepas asm, si quieres ir más allá sin problemas, mejor usar lenguajes como C, es el más estandar y de adaptarse a muchas marcas. El asm es muy bien distinto para cada marca, no es muy transportable el código aunque sea de la misma familia.

Hay muchas marcas, seguro que se me escapan algunas.
7. ¿Por qué enseñan asm en centros educativos? (Para que sepas a fondo no solo en teoría sino en prácticas como funcionan por dentro el dispositivo, en españa es por Ley que los profesores te enseñan así. Hay cursos que tienen optativas para aprender en lenguajes de alto nivel como en C. Cuando aprendas, te darás cuanta que en el fondo, vale la pena).

8. ¿No es perder el tiempo con ASM habiendo C? (Depende de donde lo mires. Para aprender a fondo y saber mucho más que solo saben C, tienes más soltura e ideas para resolver problemas o ingeiártelas con metodos que solo conoces. ASM es más bien para proyectos pequeños, proyectos grandes se recomienda C, sea porque acabas antes, es más fácil encontrar fallos, es código más transportable y más ventajas. Todo conocimiento es bienvenido).

9. ¿Qué microcontrolador o marca es mejor o me hace falta?
(Mejor o no depende de las necesidades de la persona. De una sola marca hay muchísimos para elegir, también hay otras marcas como indica abajo).
Microcontroladores

 
  • ARM (http://"http://www.arm.com/")
  • Atmel (http://"http://www.atmel.com/")
  • Cypress (http://"http://www.cypress.com/")
  • Digi (http://"http://www.digi.com/")
  • Diodes (http://"http://www.diodes.com/")
  • Ember (http://"http://www.ember.com/")
  • Energy Micro (http://"http://www.energymicro.com/")
  • Fairchildsemi (http://"http://www.fairchildsemi.com/")
  • FreeScale (http://"http://www.freescale.com/")
  • FTDIchip (http://"http://www.ftdichip.com/")
  • Fujitsu (http://"http://www.fujitsu.com/")
  • Hitachi (http://"http://www.hitachi.es/")
  • Holtek (http://"http://www.holtek.com/")
  • IDT (http://"http://www.idt.com/")
  • Infineon (http://"http://www.infineon.com/")
  • Intersil (http://"http://www.intersil.com/")
  • JMicron (http://"http://www.jmicron.com/")
  • LSI (http://"http://www.lsi.com/")
  • Maxim-IC (http://"http://www.maxim-ic.com/")
  • Micrel (http://"http://www.micrel.com/")
  • Microchip (http://"http://www.microchip.com/")
  • Microsemi (http://"http://www.microsemi.com/")
  • National (http://"http://www.national.com/")
  • NEC (http://"http://www.nec.com/")
  • Nuvoton (http://"http://www.nuvoton.com/")
  • Oki (http://"http://www.oki.com/")
  • On Semi (http://"http://www.onsemi.com/")
  • Parallax (http://"http://www.parallax.com/")
  • Philips (http://"http://www.philips.es/")
  • Picaxe (http://"http://www.rev-ed.co.uk/picaxe/")
  • Rabbit (http://"http://www.rabbit.com/")
  • Renesas (http://"http://www.renesas.eu/")
  • Rohm (http://"http://www.rohm.com/")
  • Samsung (http://"http://www.samsung.com/")
  • Semtech (http://"http://www.semtech.com/")
  • Silabs (http://"http://www.silabs.com/")
  • STMicroelectronics (http://"http://www.st.com/")
  • TI (http://"http://www.ti.com/")
  • Toshiba (http://"http://www.toshiba.com/")
  • Winbond USA (http://"http://www.winbond-usa.com/")
  • Xmos (http://"http://www.xmos.com/")
[FONT=&quot] Muchos me preguntaron como podemos  aprender a programar en algun lenguaje de programación ya sea C++, JAVA,  Visual Basic, .NET, Power Builder, PHP, javascript, ASP.Net, Python,  Ruby, etc, etc, etc...Hoy te traigo los 5 pasos básicos para hacerlo.[/FONT]
 [FONT=&quot]
[/FONT]
 [FONT=&quot] 1.- Si te gusta resolver problemas, entonces este es tu campo: Un  programador se hace cuando problemas en la vida tiene y anhela  resolverlos, se ingenia como desarrollarlo, desde un simple calculo de  matematica hasta un problema logico.[/FONT]
 [FONT=&quot]
[/FONT]
 [FONT=&quot] 2.- Lo simple, siempre suele ser lo mejor:  En programación debemos de aprender que lo difícil nunca se puede hacer  a menos que se tenga un cierto nivel de aprendizaje, se comienza de  poco subiendo el nivel, comenzando a desarrollar algoritmos sencillos  hasta resolver los más complicados.[/FONT]
 [FONT=&quot]
[/FONT]
 [FONT=&quot] 3.- La Base son los ALGORITMOS:  Toda persona que quiere aprender a programar siempre empieza buscando la  estructura del lenguaje de programación y todo eso sin darse cuenta que  no lo es todo, DEBES APRENDER A ANALIZAR LA LOGICA, Un ingreso, un proceso, una salida.  Si tienes en mente lo que tu programa procesará entonces has creado un  algoritmo: conjunto preescrito de instrucciones o reglas bien definidas,   ordenadas y finitas que permite realizar una actividad mediante pasos   sucesivos que no generen dudas a quien deba realizar dicha actividad.[/FONT]
 [FONT=&quot]
[/FONT]
 [FONT=&quot] 4.- Programador en 2 horas:  Dejame decirte que no aprenderas a programar sin antes aprender a  analizar, diseñar y sobre todo conocer la codificación. Es como aprender  Ingles , tu conoces el español pero para aprender Ingles debes aprender  los verbos, la cultura del país, etc. Es por ello que debes aprender  PRIMERO: declarar variables en el lenguaje que estas aprendiendo,  SEGUNDO: Las estructuras de control(IF, ELSE, WHILE, SWITCH, DO, FOR,  CASE ), TERCERO: Ambito de variables(Local, Instancia, Global). CUARTO:  Arreglos y Matrices, QUINTO: Listas, SEXTO: Archivos, SEPTIMO: Base de  datos. etc etc etc, vez que en 2 horas no podras hacerlo todo, se  requiere tiempo y esfuerzo para hacerlo.[/FONT]
 [FONT=&quot]
[/FONT]
 
[FONT=&quot] 5.- Estar las 8 horas del día programando:  Una vez que ya tengas la base de algoritmos, es hora de comenzar a  prácticar, primero en papel para que puedas recordar el codigo,  comenzando con una simple suma de 2 numeros, calculo de factorial,  calculo de promedios, calculo del mayor de 4 numeros, el menor de 5  numeros, el numero perfecto, el numero impar, par, etc. asi iras  incrementando tu nivel, en Internet hay muchos ejemplos pero lo más  importante es entender lo que escribes. ENTENDER EL CODIGO ES  IMPORTANTE.


Más información recomendable antes de lanzarse a la aventura.
http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=28:quiero-aprender-a-programar-icomo-empiezo&catid=23:lo-mas-basico&Itemid=73 (http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=28:quiero-aprender-a-programar-icomo-empiezo&catid=23:lo-mas-basico&Itemid=73)

He empezado con asm del PIC16F84A con este libro (http://pic16f84a.org/proteus.html) como indiqué arriba.Programé que en base es lo mismo pero con más instrucciones al PIC18Fx550 como el que indicas. Si programas al estilo del 16F84A también se puede, si lo haces solo para PIC18F aprendiendo nuevas instrucciones el código será más pequeño y hace lo mismo. Se recomienda el C para los 18F por ser más fácil, rápido, más fácil importación para otros PIC e incluso otras marcas, proyectos muy grandes. 16F84A se recomienda proyecto muy pequeños porque si no, te pegas media vida. ;)

En cuanto a CCS o C18. CCS no tiene un formato estandar, es buen compilador hasta cierto punto, tiene la ventaja de programar muchas familias de PIC, desde lo 12F, 16F y 18F. En cuanto a C18 es oficial, ya está en desuso, no se actualizará más y solo programa PIC de 18F y te quedas ahí. Es sustituo del C18 es el XC8 con el MPLAB X de www.microchip.com XC8 para 12F, 16F y 18F, XC16 para PIC de 16 bits como los dsPIC y XC32 para PIC32 de 32 bits.

A pesar de ello el programador tiene otras tareas que aprender, algo de electrónica.

(http://www.subeimagenes.com/img/ohm-840908.jpg)

¿Alguna otra pegunta mi muy distinguido amigo?

Saludo.


Título: Re: Duda inicial: PIC 16F84A vs 18F4550 ASM vs C (CCS vs C18)
Publicado por: chipo en 8 Febrero 2014, 21:10
Hola Meta, antes que nada muchísimas gracias por el trabajo que te tomaste en responder a mi consulta. Leí detenidamente lo que me contestaste y me resultó muy interesante para también reflexionar un poco y pensar en el plan de estudio que podría llevar adelante.

Te comento que estudio ing. informática y este año tengo que hacer un trabajo de campo, pero siempre lo que piden (o lo que casi todos hacen) es un sistema de software. Si bien la programación me gusta (de hecho estoy estudiando mucho porque estoy buscando trabajo como programador java jr), me dieron muchas ganas de aprender algo de electrónica, específicamente programación de pics, y siento que este va a ser un gran desafío.
La idea que tengo es implementar algún sistema que haga que el pic funcione mediante internet, por eso elegí el 18f4550.

Me sirvió mucho lo que aclaraste de que el c18 quedó obsoleto, así que voy a buscar cómo instalar el XC8 para linux (porque trato de implementar todo el entorno de desarrollo en sw libre).
Por último, lo que tengo pensado hacer es ir aprendiendo xc8 para el 18f y en paralelo a eso (espero poder hacerme el tiempo) también trabajar en ensamblador para el 16f84a. Creo que sería una forma muy abarcativa de entender la complejidad del funcionamiento de un pic.

Nuevamente, estoy muy agradecido por el tiempo que te tomaste en leer mi consulta y haberte molestado en contestar. Siempre ratifico que el que ayuda de forma desinteresada y con pasión, como vos lo hiciste, (como dijo un profesor de sistemas operativos) es un ser evolucionado.


Título: Re: Duda inicial: PIC 16F84A vs 18F4550 ASM vs C (CCS vs C18)
Publicado por: Meta en 9 Febrero 2014, 03:28
(http://dangerousprototypes.com/wp-content/media/2011/12/21086.jpg)

Hola:

El MPLAP X lo puedes descargar en cualquier Sistema Operativo Windows, Linux y Mac en este enlace (http://www.microchip.com/pagehandler/en-us/family/mplabx/). Te viene con asm incluido. El XC8 no viene incluido que es el compilador C, tienes que descargarlo a parte que el enlace te viene al lado. No olvidar que MPLAB X es un IDE.

Descarga directa pinchando aquí:

Windows:
MPLAB X v2.00 - DESCARGAR (http://www.microchip.com/mplabx-ide-windows-installer).
XC8 v1.30 - DESCARGAR (http://www.microchip.com/mplabxc8windows).

Linux:
MPLAB X v2.00 - DESCARGAR (http://www.microchip.com/mplabx-ide-linux-installer).
XC8 v1.30 - DESCARGAR (http://www.microchip.com/mplabxc8linux).

Mac:
MPLAB X v2.00 - DESCARGAR (http://www.microchip.com/mplabx-ide-osx-installer).
XC8 v1.30 - DESCARGAR (http://www.microchip.com/mplabxc8osx).

Manual MPLAB XC8 Compilador C oficial de microchip en Inglés.
http://ww1.microchip.com/downloads/en/DeviceDoc/52053B.pdf

Muchos ánimos.


Título: Re: Duda inicial: PIC 16F84A vs 18F4550 ASM vs C (CCS vs C18)
Publicado por: chipo en 13 Febrero 2014, 05:11
Muchas gracias! estoy usando todo!. Ahora estoy googleando codigos para el 18f4550 porque considero que si encuentro, la mejor forma de aprender programación en mirando otros códigos.

Saludos!


Título: Re: Duda inicial: PIC 16F84A vs 18F4550 ASM vs C (CCS vs C18)
Publicado por: Meta en 13 Febrero 2014, 05:33
En youtube hay muchos ejemplos como se programa.