Autor Tema: 1ª proyecto.Dado electrónico. 1ª parte  (Leído 4967 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado ceuti

  • PIC10
  • *
  • Mensajes: 15
1ª proyecto.Dado electrónico. 1ª parte
« en: 14 de Febrero de 2014, 12:06:01 »
Hola chicos, me llamo Pedro y soy de Ceuta, esto como indicación para los compañeros españoles.

Ahora que tengo un poco, o mucho tiempo libre, con esto del paro me ha dado por cacharrear y aprender un poco.

El primer proyecto que he pensado es realizar un dado electronico, creo que en el libro de Angulo hay un ejemplo pero yo he querido empezar de cero por mi cuenta.

El circutio consta de un 16f84A que controla un display de 7 segmentos. Aprovechando el que en el display se puede escribir el nombre de mi sobrino al conectar el circuito en el display se muestra en intervalo de 1 segundo las letras G U I L L E, en bucle infinito.

Al accionar un pulsador conectado a RB0 se enciende un Led conectado a RA1 y a través de una subrutina se manda al display de 7 segmentos un número de 1 a 6, el cual se muestra durante 3 segundos  y luego vuelve al bucle infinito a mostrar el nombre.


Fallos que he encotrado:

- El led conectado a RA1 parpadea junto con cada letra, incluso cuando fuerzo un 0 justo al principio del bucle infinito.
- La rutina de generación del número aleatorio no esta muy lograda porque mayormente sale el 1 y el 6 no sale nunca.
-La permanencia en pantalla del número sacado en la tirada no es fija,  en vez de estar 3 segundos, varia entre 20 y 35...

Por otro lado es mi primer programa asi que la nomenclatura, estitica del programa... igual no es la más ortodoxa asi que espero que me deis algún consejo también sobre ello.

Os pongo la priemera parte del codigo para ir solucionando las cosas paso a paso, y además el parpadeo del LED es lo que más me intriga.
Código: [Seleccionar]
LIST  P=16F84A;
 RADIX HEX;
W EQU 5;
PUERTAA EQU 0x05;Declaración
PUERTAB EQU 0x06;
STATUS  EQU 0x03;
TMR_OPTION EQU 0x01;
INTCON EQU 0x0B;
CUENTA EQU 0x0C;
 org 0;
 goto inicio;

 org 4;
 btfss INTCON,2; comprobación de las interrupciones, no se usa en esta parte del codigo
 goto inter1;
 goto inter2;

 org 10;

inicio
 bsf STATUS,5;

 movlw B'00000001';
 movwf PUERTAB;

 movlw B'00000000';
 movwf PUERTAA;

 movlw B'10010000';1 he cambiado el bit 3 a 0 y el 4 a 1
 movwf INTCON;

 movlw B'01010111';
 movwf TMR_OPTION;

 bcf STATUS,5;



 movlw B'00000000';
 movwf PUERTAA;
 movlw B'11101110'; Escribe la letra G
 movwf PUERTAB;
 call conteo;
 clrf PUERTAB;
 call conteo;

 movlw B'01011110'; Escribe la letra U
 movwf PUERTAB;
 call conteo;
 clrf PUERTAB;
 call conteo;

 movlw B'00011000'; Escribe la letra I
 movwf PUERTAB;
 call conteo;
 clrf PUERTAB;
 call conteo;

 movlw B'01000110'; Escribe la letra L
 movwf PUERTAB;
 call conteo;
 clrf PUERTAB;
 call conteo;

 movlw B'01000110'; Escribe la letra L
 movwf PUERTAB;
 call conteo;
 clrf PUERTAB;
 call conteo;

 movlw B'11100110'; Escribe la letra E
 movwf PUERTAB;
 call conteo;
 clrf PUERTAB;
 call conteo;

 goto inicio;

conteo 
 clrf TMR_OPTION; Rutina de retraso de 1 segundo para las letras
 movlw b'00001010';
 movwf CUENTA;
 bcf INTCON,2;

com1 btfss INTCON,2;
goto com1;
bcf INTCON,2;
decfsz CUENTA,1;
goto com1;
 return;

Por si sirve de algo os digo que uso el MPLAB versión 8.92,  uso   este  programador y grabador microbrn.


Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: 1ª proyecto.Dado electrónico. 1ª parte
« Respuesta #1 en: 14 de Febrero de 2014, 12:24:32 »
El PIC16F84A es muy conocido, pero ahora está obsoleto.
Es mucho más caro que otros actuales, que tienen más prestaciones.

Si el mundo de los PIC te gusta y quieres seguir con ello, te recomiendo que pases a otro micro más moderno.

Saludos.

Desconectado ceuti

  • PIC10
  • *
  • Mensajes: 15
Re: 1ª proyecto.Dado electrónico. 1ª parte
« Respuesta #2 en: 14 de Febrero de 2014, 12:48:59 »
Si me imagino lo que dices, pero para esto no necesitaba más potente y tampoco se encuentra en mi ciudad gran cosa, ya para el próximo proyecto si usare otro más grande ya que necesitaria un AD y un generador PWM para controlar servos de aeromodelismo.

Gracias por tu comentario, un saludo.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: 1ª proyecto.Dado electrónico. 1ª parte
« Respuesta #3 en: 14 de Febrero de 2014, 13:48:00 »
tampoco se encuentra en mi ciudad gran cosa,

El PIC16F628A puede llegar a ser más fácil de encontrar y es más barato.
El PIC16F88 tiene conversores A/D y casi vale lo mismo.
El PIC16F886 es más potente y casi igual de caro que el 16F84. Es como un 16F88 ampliado y con más patillas.

Todos son fáciles de encontrar e igual de caros o más baratos que el 16F84.

Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: 1ª proyecto.Dado electrónico. 1ª parte
« Respuesta #4 en: 14 de Febrero de 2014, 13:50:40 »
Otra ventaja de los micros anteriores es que puedes trabajar con ellos con un Bootloader. Una vez que trabajas con bootloader, no quieres dejarlo. Te facilita mucho la vida.

Te aconsejo este por su sencillez y pequeño tamaño:

http://www.etc.ugal.ro/cchiculita/software/picbootloader.htm

Saludos.

Desconectado ceuti

  • PIC10
  • *
  • Mensajes: 15
Re: 1ª proyecto.Dado electrónico. 1ª parte
« Respuesta #5 en: 14 de Febrero de 2014, 14:01:46 »
Tomo nota Picuino.

Ten en cuenta que Ceuta no es la peninsula, aqui nadie vende componentes, si acaso resitencias y poco más. En Algeciras solo pude encontrar este y realizar pedidos a la peninsula si son por debajo de 22 euros, 10 euros de gastos de envio no se los quita nadie, y si  es por encima de los 22 además de esos 10 euros de gastos de envío añadele otros 18 euros de aduana... vamos una jodienda, cada proyecto que haga tengo que medirlo al milimetro para hacer un solo pedido ....Este lo encotré en Algeciras y también me costo  :? :? :? :? :?

Estudiare lo del bootloader que me dices también, además de ir pensando migrarme al C a la hora de programar.

¿Sobre el codigo, se te ocurre algo por lo que el LED parpadea tal y como se ve en el video?

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: 1ª proyecto.Dado electrónico. 1ª parte
« Respuesta #6 en: 14 de Febrero de 2014, 14:25:02 »
El código que muestras en el video no corresponde con el código que has publicado, por ende los problemas de parpadeo y otros no pueden realmente analizarse si no muestras el código que sabes que contiene los errores. El código que has colocado, pese a que se podría limpiar un poco, me parece correcto y no veo motivo por el cual deba encenderse un LED conectado en RA0 cada vez que envías un dato al display. Evidentemente o tienes algo mal en el protoboard o es porque el error lo tiene el código perteneciente al video.

Saludos
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado ceuti

  • PIC10
  • *
  • Mensajes: 15
Re: 1ª proyecto.Dado electrónico. 1ª parte
« Respuesta #7 en: 14 de Febrero de 2014, 15:26:42 »
El código que muestras en el video no corresponde con el código que has publicado, por ende los problemas de parpadeo y otros no pueden realmente analizarse si no muestras el código que sabes que contiene los errores. El código que has colocado, pese a que se podría limpiar un poco, me parece correcto y no veo motivo por el cual deba encenderse un LED conectado en RA0 cada vez que envías un dato al display. Evidentemente o tienes algo mal en el protoboard o es porque el error lo tiene el código perteneciente al video.

Saludos

Hola Bruno, gracias por contestar.

Solo he colocado el bucle infinito y he omitido las interrupciones por claridad pensando que no son necesarias mostrarlas para esto, igual estoy equivocado. Ya con tu opinion me inclino a pensar algun fallo de hardware, en las conexiones o en la protoboard no se, lo revisaré este fin de semana y te comento..., cuando resolviera iba a poner la otra parte del codigo con las demas cosas que no me cuadran...
 La verdad que ya es por cabezoneria miay terminar lo que he hecho, ya que he considerado migrarlo a C, que seguro que consigo esto de forma más facil, ¿me recomendais el C para este micro?, En el MPLAB IDE creo que no se pueden simular las interrupciones, hay algún otro simulador en el que se pueda hacer¿?

De nuevo, gracias.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: 1ª proyecto.Dado electrónico. 1ª parte
« Respuesta #8 en: 14 de Febrero de 2014, 16:38:15 »
Tomo nota Picuino.

Ten en cuenta que Ceuta no es la peninsula, aqui nadie vende componentes, si acaso resitencias y poco más. En Algeciras solo pude encontrar este y realizar pedidos a la peninsula si son por debajo de 22 euros, 10 euros de gastos de envio no se los quita nadie, y si  es por encima de los 22 además de esos 10 euros de gastos de envío añadele otros 18 euros de aduana... vamos una jodienda, cada proyecto que haga tengo que medirlo al milimetro para hacer un solo pedido ....Este lo encotré en Algeciras y también me costo  :? :? :? :? :?

Estudiare lo del bootloader que me dices también, además de ir pensando migrarme al C a la hora de programar.

¿Sobre el codigo, se te ocurre algo por lo que el LED parpadea tal y como se ve en el video?

Puedes pedir muestras gratis a Microchip y a otras empresas de electrónica. Sólo necesitas tener acceso a un correo de empresa o similar (que no sea gmail o yahoo).

https://www.microchip.com/samples/Default.aspx

Te lo envían gratis a casa.

Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: 1ª proyecto.Dado electrónico. 1ª parte
« Respuesta #9 en: 14 de Febrero de 2014, 16:47:52 »
También te puedes plantear comenzar con Arduino. Fácil, potente, barato, completo... En e-bay consigues una placa de China por 11 Euros (con gastos de envío incluidos)

También puedes conseguir placas baratas con el PIC18F4550. Es un micro potente, con USB, muchas entradas/salidas y uno de los pic18 más conocidos.

Saludos.

Desconectado ceuti

  • PIC10
  • *
  • Mensajes: 15
Re: 1ª proyecto.Dado electrónico. 1ª parte
« Respuesta #10 en: 14 de Febrero de 2014, 17:32:56 »
Gracias niño. Si conozco Arduino y demsa sistemas pero quiero diseñar mis propios circuitos desde cero... pero lo del correo de empresa se puede mirar

Desconectado ceuti

  • PIC10
  • *
  • Mensajes: 15
Re: 1ª proyecto.Dado electrónico. 1ª parte
« Respuesta #11 en: 18 de Febrero de 2014, 14:11:22 »
Hola de nuevo chicos, solo deciros que después de probar el codigo en proteus, estoy empezando en esto y no me aclaro con los distintos programas, simuladores.... el dichoso led no parpadea, asi que será fallo de hardware, tocará desmontar y volver a montar el circuitos.

Saludos y gracias.