Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

04/11/2010 #1


Crear un jego electronico
Buenas, soy nuevo en este foro y la razón por la que me he regstrado es por que busco ayuda para un poryecto en la carrera (Ingenieria industrial). Estoy en segundo año y conozco poco (porque no me han enseñado aún) de electronica y de programación.
Lo que yo quero hacer para un proyecto que dura un semestre es crear un juego de 3 en raya impreso. La idea es que las "fichas" del juego sean LED's rojas apra un jugador y verdes para el otro (18 led's en total).
Habria unos interruptores (9) que el usuario accionaría para "colocar su ficha" (accionando los interruptores la maquina resgistraría que led ha encendido, sabria como se encuentra el tablero actualemtne y actuaria en consecuencia)

Crear el programa de juego en sí mismo no me preocupa. En pronicipio lo programaría en Maple (que conozco bastante bien) y luego con ayuda de un profesor lo pasaría a C o Basic.

Mi gran incognita (y de hecho es la problematica de mi proyecto) es como unir informatica a electronica. He leido sobre los microcontroladores PIC y si he enteniddo bien, controlaría la placa mediante programas que estaría en su interior.
Mis dudas son:

-Mi programa JUEGO (el juego en sí mismo), cómo y en que lenguaje lo meto en el PIC? (constaría de varios sub-programas)
-Donde irían las ordenes a la maquina? (i.e He de programar las acciones tipo "encender tal led" en el programa JUEGO? o irian aparte)


Si alguien me pudiera explicar un poco como funcionaría la maquina, se lo agradecería, por que aún no tengo el nivel apra hacerlo, pero quiero intentarlo de verdad.

Muchas gracias.
04/11/2010 #2

Avatar de ByAxel

Que tal:
Sea el lenguaje que sea para programar el firmware de un microcontrolador, este al compilar genera un archivo *.HEX; dicho archivo contiene todas las instrucciones aun nivel más bajo (codificado en el formato Intel HEX); para grabar el *.Hex en el microcontrolador es necesario usar un programa que envíe el archivo al PIC pero en un formato que solo el microcontrolador conoce (binario). Tal programa necesita de un hardware que se conecte a la PC (RS232, USB, etc) para que pueda enviar los datos al microcontrolador.
04/11/2010 #3


Muchas gracias por tu respuesta tan rapida.
Me dejas bastante mas tranquilo, pensé que iba a tener que escribir cosas del tipo
Código:
.MODEL SMALL
.CODE
Programa:
MOV AX,4C00H
INT 21H
.STACK
END Programa
de lo cual no me snetía capaz, xD.

Entonces, yo escribo en C, y mediante un compilador, obtendo un archivo .HEX (lisisbe directamente pr el pic). Una vez obtenido este, basta con introducirlo en el PIC (con un programa que he visto en la pagina web de la empresa que fabrica los PICs) y ya estará listo apra soldarlo a la placa y usarlo?
Me parecen demasiadas pocas etapas... No hay nada intermedio a hacer? He leido que habria que meter un bootloader en el el PIC (una especie de programa que lo volveria "operativo"), es cierto?

Por saber, si el proceso es copiar el .hex en en PIC, cómo sabrá leerlo el PIC (como sabra por donde empezar a leer? por que apra el es solo un monton de 1 y 0 grabados en su memeoria, no?)

Mil gracias
04/11/2010 #4

Avatar de ByAxel

Bueno si no sabes mucho del tema, entender es algo difícil puesto que tienes que ir a lo más bajo de todo... a nivel hardware el binario como se conoce '0', '1' son solo niveles de tensión (voltaje) donde 0V (voltios) representa el cero lógico y 5V (voltios con lo que se alimenta el PIC) representa el uno lógico... (es un tema muy grande)...

El PIC como la mayoría de microcontroladores es como una minicomutadora; tiene el CPU (el que realiza todos los procesos), memoria RAM (volátil), memoria Flash (donde se almacena el programa), memoria EEPROM (no volátil), periféricos (módulos que se especializan en algún trabajo) y tan solo requiere los pines para comunicarse con el mundo exterior. Aquí descuida que tal y como lo programas en C, va a funcionar en el micro; sin embargo debes de conocer lo mínimo (Puertos, registros de configuración, de almacenamiento, fuses, etc) que los encuentras en el datasheet (hoja de datos) del PIC que uses (todo está en el datasheet; me atrevo a decir que ahí está el curso completo para dominarle...).

Toma en cuenta que los compiladores que incluyen los IDEs son especiales para estos, claro está que la sintaxis es la misma o similar (estándar ANSI C).

PIC CCS:
- Es muy práctico (uno muy usado, principiantes o no), incluye muchas librerías y funciones pre-establecidas que facilitan la programación.
- Hay momentos en que sus bugs se hacen visibles, cosa que aveces molesta y su código no puede ser adaptado a otros ya que no sigue el ANSI C.

MikroC:
- Es práctico, incluye librerías para las cosas más usadas.
- También sufre la enfermedad de los bugs en ciertos casos.

HiTech-C (Para PIC16):
- No tan práctico, a pesar de tener algunas librerías (las más comunes) pero sigue con el estándar ANSI C. Considero que es como el MPLAB (lenguaje asm) ya que ahí no existen bugs y las fallas son por causa del usuario; ademas si lo dominas puedes iniciar la programación en los C18 (PIC18), C30, etc del mismo microchip ya que son casi compatibles que siguen el estándar que antes mencioné.

Tu elijes...
Para programar el PIC, si es necesario un hardware y lo mejor seria usar el que se encuentra en la web del fabricante; en el foro hay uno si quieres construirlo (Programador de microcontroladores PIC y memorias por puerto USB PICKIT2 CLONE).

El bootloader no es necesario; eso sirve para evitar el hardware para programar el PIC (solo reduces en tamaño), además se necesita grabar un previo firmware que hace el trabajo de bootloader; en caso de los PIC que tienen USB o módulos Ethernet integrado, el bootloader puede ser una facilidad ya que se programa el PIC directamente por los puertos USB/Ethernet sin otro hardware adicional...

Y como a todos, es mejor hacer pruebas en el hardware o simulación (PROTEUS) hasta que te acostumbres ya que en las primeras experiencias suelen pasar cosas raras , por eso te sugiero armar un previo en el protoboard y luego ya lo pasas aun placa a soldar.

saludos.
05/11/2010 #5


ByAxel dijo: Ver Mensaje
Bueno si no sabes mucho del tema, entender es algo difícil puesto que tienes que ir a lo más bajo de todo... a nivel hardware el binario como se conoce '0', '1' son solo niveles de tensión (voltaje) donde 0V (voltios) representa el cero lógico y 5V (voltios con lo que se alimenta el PIC) representa el uno lógico... (es un tema muy grande)...

El PIC como la mayoría de microcontroladores es como una minicomutadora; tiene el CPU (el que realiza todos los procesos), memoria RAM (volátil), memoria Flash (donde se almacena el programa), memoria EEPROM (no volátil), periféricos (módulos que se especializan en algún trabajo) y tan solo requiere los pines para comunicarse con el mundo exterior.
Esto ultio ya lo habia leido en algún sitio... Por eso me gusto eso de los PICs, porque yome esperaba (cuando tuve al idea) a tener que montar una memoria, un rpocesador etc... pero me quede tranquilo cuando vi que los PIC's son como ordenadorcitos.
La explicacion de 1 y 0 me ha encnatao, por que no tenia ni idea, y era siempre uno de mis grandes misterios (espero aprender ams sobre eso con mis estudios, )

ByAxel dijo: Ver Mensaje
Aquí descuida que tal y como lo programas en C, va a funcionar en el micro;
ahi me dejas tranquilo

ByAxel dijo: Ver Mensaje
sin embargo debes de conocer lo mínimo (Puertos, registros de configuración, de almacenamiento, fuses, etc) que los encuentras en el datasheet (hoja de datos) del PIC que uses (todo está en el datasheet; me atrevo a decir que ahí está el curso completo para dominarle...).
ok, muchas gracias... Cuando lo tenga me leere bien el datasheet como dices. Todo eso de puertos, registros, memoria y fuses son los valores en los que he de almacenar las variables de mi programa y los "identificadores" de lo que recibe el PIC de el mundo exterior? (quiero decir que por ejemplo un valor A representa la tension de tal pín puedo decir en mi programa C "Si A=5V entonces.... bla bla .."? donde A sería un "identificador"?)

ByAxel dijo: Ver Mensaje
Toma en cuenta que los compiladores que incluyen los IDEs son especiales para estos, claro está que la sintaxis es la misma o similar (estándar ANSI C).
Uy, yo lo de los compiladores no lo entinde mucho, es loq eu estaba investigando ahora... de momento lo dejo de lado, ya trataré este problema despues (pero gracias por al info )

ByAxel dijo: Ver Mensaje
Para programar el PIC, si es necesario un hardware y lo mejor seria usar el que se encuentra en la web del fabricante;.
No entiendo... ¿No se suponía que el PIC entenderia lo que le programaré en C? Este harware, si entiendo bien, es unicamente para pasar mi programa C (en .hex, si he entendido bien) al PIC, no? A nivel del harware necesario, no me quiero aventurar a decidir ya lo que quiero, pues aún tengo que ver el material del que dispone al niversidad y ver qué cosas podria utilizar para ello.

ByAxel dijo: Ver Mensaje
]
El bootloader no es necesario; eso sirve para evitar el hardware para programar el PIC (solo reduces en tamaño), además se necesita grabar un previo firmware que hace el trabajo de bootloader; en caso de los PIC que tienen USB o módulos Ethernet integrado, el bootloader puede ser una facilidad ya que se programa el PIC directamente por los puertos USB/Ethernet sin otro hardware adicional...
si dispongo pues de PIC con ethernet o USB sería interesante usar un bootloader, es eso? Bueno, aún no sé que material tengo, pero en todo caso intentaré que sea lo mas simple posible. Prefiero porgramar en C y meterlo directo al PIC sin tener que meter mas cosas como el bootloader ni firmwares.

ByAxel dijo: Ver Mensaje
]
Y como a todos, es mejor hacer pruebas en el hardware o simulación (PROTEUS) hasta que te acostumbres ya que en las primeras experiencias suelen pasar cosas raras , por eso te sugiero armar un previo en el protoboard y luego ya lo pasas aun placa a soldar.

saludos.
jaja, está claro, mejor probar antes de lanzarse. De todas formas en un proyecto apra el semestre que viene, pero como va a ser largo todo esto prefiero enterarme ya de todo loq eu voy a tener que saber hacer.


Oye, muchisismas gracias, me estas ayudando muchisimo
05/11/2010 #6

Avatar de ByAxel

excalibur1491 dijo: Ver Mensaje
No entiendo... ¿No se suponía que el PIC entenderia lo que le programaré en C? Este harware, si entiendo bien, es unicamente para pasar mi programa C (en .hex, si he entendido bien) al PIC, no? A nivel del harware necesario, no me quiero aventurar a decidir ya lo que quiero, pues aún tengo que ver el material del que dispone al niversidad y ver qué cosas podria utilizar para ello.
Ok:
- Programas en C (con un software especial para escribir el programa -'lo llamo firmware'- para los PICs), este al compilar genera un archivo *.HEX (el que contiene el firmware que se va a grabar/quemar en el PIC).
- Para grabar/quemar el firmware en el PIC se necesita de un programa (software) que use el archivo *.Hex y lo envíe al PIC en un formato (instrucciones en binario).
- El programa que graba/quema el programa necesita de un hardware (donde se pone el PIC para ser grabado) que se conecte por algún puerto de la PC (Serial, USB, etc...).

saludos
05/11/2010 #7


Genial, muchas gracias. está mucho mas claro ahora. En serio: muchas gracias.
Acabo de bajar la demo de PROTEUS y he mirato los ejemplos en el ISIS y me ha alucinao.. es genial ese programa, muchisimas gracias.

Una preguntilla: como estoy trasteando un poco con proteus querría er lo máximo en los ejemplos que trae la demo.... hay manera de ver el código que maneja el PIC? (he mirado el ejemplo de PIC16-> calculator y he conseguido ahcer aparecer el programa, pero he cerrado la ventana por error y no sé como la habia abierto, xD)
05/11/2010 #8

Avatar de ByAxel

En la carpeta de instalación, la carpeta de samples "C:\Program Files\Labcenter Electronics\Proteus 7 Professional\SAMPLES\VSM for PIC16\PIC Calculator" encuentras el programa.
Desde el proteus si te lo permite, al lado del botón de Play esta el botón de Step que sirve para simular paso a paso... y cuando un archivo *.cof está ligado al PIC se abre un ventana donde se visualiza el programa; ha y en este modo puedes usar algunas herramientas de debug para revisar errores...

PD: El programa de ejemplo parece estar echo con el IAR IAR system, que es uno de los varios compiladores que hay para microcontroladores.

saludos.
21/01/2011 #9


Hola de nuevo
Vuelvo a tener una duda, que de hecho e sla misma que antes: como meto mi codigo en .c al PIC? (me refiero a "cómo" en que estado ha de estar mi código; no a "cómo" fisicamente)?
He estado programando en Code::Blocs en C, y compila en .exe (obviamente no me sirve). Entonces tneog todos los archivos .c (y un header .h) que componene mi porgrama.
Ahora la pergunta es: que hago con esos archivos para que esten listos para meterlos al PIC?
Otra pregunta es: al programarlo para una consola, tengo varias funciones typo printf y scanf que voy a tener que modificar para que lean la tension (saber que interruptor pulsó el usuario), y enciendadn led's. ¿Cómo sabré que modificaciones he de hacer en mi código? este tipo de informaciones viene en el data sheet? (aún no tneog ningun data sheet)


Muchisimas gracias de antemano
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.