fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Empezar desde 0 en ...
 
Avisos
Vaciar todo

Empezar desde 0 en C, ejemplos de programación

22 Respuestas
7 Usuarios
0 Reactions
108.3 K Visitas
rashii
Respuestas: 530
Topic starter
(@rashii)
Ardero
Registrado: hace 19 años

Hola, este post lo creamos para ayudar a todos aquellos que empiezan desde cero y se quieren adentrar en este mundo de la robótica programando en C.
¿Porque C?
Hay muchos lenguajes, pero en mi opinión C es uno de los mas extendidos, que más gente conoce y bastante fácil de manejar una vez que te haces con él.

INDICE
Espero que poco a poco vayamos ampliando esta lista con los ejemplos que colgemos entre todos, ya que yo me considero novato y no os voy a poder ayudar mucho, de momento cuelgo el primer ejemplo básico que comentamos:

1-Hacer parpadear un led - Página 1
2-Encender y apagar un led con un interruptor - Pagina 2

Teoría de C
Para el que no sepa nada de C, os podeis mirar estos dos temas iniciales de teoría, en la que se describen de manera esquemática el manejo de C para los ejemplos básicos con los que empezaremos (entradas/salidas):

Fundamentos de Programación de C
Puertos de Entrada y Salida

Ambos ejemplos están sacados de la web de "El Rebujito", y su pass es "micro" . Si colgais algún tutorial/manual/codigo poned por favor la procedencia por respeto a sus autores.
Herramientas electrónicas
Las herramientas que desde mi punto de vista os aconsejo son:
-Programador-> Os podeis hacer con cualquier programador para pics, aunque uno de los más usados por la gente es el TE-20 bastante conocido.
-Proto board o placa de pruebas-> Placa fundamental para todos los ejemplos que vamos a hacer, en ella se pueden insertar componentes tantas veces como se quieran. Si quieres dejarlos fijos, también puedes adquirir una "placa de topos" en la que son muy fáciles de soldar los componentes
-Multimetro (opcional pero muy recomendable)-> Aunque no es obligatorio, para comprobar conexiones, intensidades...os aconsejo tener a mano un multímetro
Microprocesador
Entre todos hemos decidido que el microprocesador será el PIC 16F876 (o 16F876A), ya que es uno que ofrece bastante potencia para ejemplos futuros. Podeis ver su hoja de carácterísticas que os aconsejo que la tengais a mano en esta direccion:

Hola de características del PIC 16F876A
Software
-Uno de los compiladores más usados en C es el CCS por lo que podeis usar ese compilador si quereís, aunque es de pago. Os podeis bajar una versión demo en esta dirección:
http://www.ccsinfo.com/content.php?page=compdemo " onclick="window.open(this.href);return false;
-Para simular y crear los circuitos, una de las herramientas más usadas y no muy complicadas es el programa Proteus. También os podeis bajar una versión demo en su web:
http://www.labcenter.co.uk/index_uk.htm " onclick="window.open(this.href);return false;
-Para integrar el compilador al simulador, y hacer las simulaciones en el foro de todopic pusieron dos manuales:
Integrar CSS en Proteus
Simular CCS en Proteus
De manuales, tradujeron al español el de CCS, sus autores: Andrés Canovas y Victor Dorado, lo podeis descargar de aquí:
Manual en Español de CCS
Descarga/subida de archivos
Como con internet explorer a algunos os van mal los archivos (si cumpliera los estandares el explorador como mozilla..ejem) podeis subir los archivos a esta dirección en formato comprimido:
http://www.webdearde.com/upload/ " onclick="window.open(this.href);return false;
y el link donde se ubicará el archivo será:
http://www.webdearde.com/upload/foro/ " onclick="window.open(this.href);return false;
Modificación 28/3/09 (jariza): hace tiempo que se dejó de usar este sistema de upload.

Creo que no me olvido de nada, a continuación colgaré los ejemplos, os animo a todos a colgar vuestros ejemplos y a plantear todas las dudas que tengais, para que entre todos vayamos subiendo el nivel. Un saludo.

Responder
21 respuestas
gonzao
Respuestas: 218
(@gonzao)
Estimable Member
Registrado: hace 19 años

Hola:

Lo de use fast_io() es como tú dices.

En cuando a cómo indicar si un pin es de entrada o salida:
Cada puerto tiene asignado un registro. La correspondencia es:
PORTx <-> TRISx

Nos fijamos en el puerto B: TRISB es un registro de 8bits y cada corresponde a un pin del puerto. Así el bit de mayor peso (MSB) es para RB7 y el de menor peso para RB0. Por cosas de la electrónica si pones un bit a 1 ese pin se convierte en entrada y si lo pones a 0 el pin pasa a ser una salida. (Quien quiera saber por qué o más cosas sobre eso que pregunte o envie privado).
Tras el reset TRISx toma el valor 0xFF, es decir 11111111b, todos los pines son entradas.
Imaginamos que queremos poner el pin 3 como entrada y los demás como salida. No tenemos que pasarle como parámetro de la función el número del pin sino el valor 00001000b que es el 0x08. Por lo tanto set_trisb(0x08). Si le hubieramos mandado el pin en hexadecimal habría sido set_trisb(0x03) y quedarían los pines RB0 y RB1 como entradas y el resto como salida (00000011b).

Un saludo
gONzAO

Responder
rashii
Respuestas: 530
Topic starter
(@rashii)
Ardero
Registrado: hace 19 años

Si, gizer si no te quedo claro lo de fast_io esta tambien explicado en la teoria que colgue en lo de entradas y salidas. Un saludo.

Responder
Nocturno
Respuestas: 36
(@nocturno)
Eminent Member
Registrado: hace 18 años

Los comandos fast_io y standard_io especifican al compilador si el control de los TRIS queda en manos del programador, o por el contrario es el compilador quien debe colocarlos.

Me explico:

STANDARD_IO: al especificar este modo, el compilador colocará el comando set_tris_x() donde necesite cambiar los pines de entrada a salida o viceversa, para asegurarse que los comandos OUTPUT o INPUT funcionan correctamente.

FAST_IO: el compilador se olvida por completo de los TRIS y es el programador quien debe colocar el set_tris_x donde haga falta.

Mi experiencia con PIC me dice que la mayoría de las veces configuras el sentido de los pines con set_tris una sóla vez al principio del programa y ya no vuelves a tocarlo más, por lo que siempre prefiero el FAST_IO. Así evito que el compilador me guarree el código.

Pero supongo que es una cuestión de preferencias, al fin y al cabo, el compilador te da las dos opciones.

Una cosa que también me gustaría aclarar para los que aprenden C. Estos comandos son característicos de CCS pero no los encontrarás disponibles en el resto de compiladores, por lo que si estás utilizando C18 o Hi-tech C te petará al compilar.

Responder
gizer20
Respuestas: 1570
(@gizer20)
Noble Member
Registrado: hace 19 años

entonces ke kompilador es el mas extendido?

Responder
Nocturno
Respuestas: 36
(@nocturno)
Eminent Member
Registrado: hace 18 años

No tengo ningún estudio de cuota de mercado de los compiladores, pero de todos los conocidos que tengo en el foro Todopic, el 99% utiliza CCS.

Responder
Página 3 / 5
Compartir: