Autor Tema: Iniciando proyecto con PIC16F877  (Leído 14655 veces)

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

Desconectado afisicos

  • PIC12
  • **
  • Mensajes: 58
    • afisicos blog
Re: Iniciando proyecto con PIC16F877
« Respuesta #15 en: 28 de Diciembre de 2007, 12:33:46 »
una pregunta. El archivo de cabecera P16F877.INC  hay que incluirlo en el proyecto?, o basta con nombrarlo en la linea de codigo del fichero source?...

Desconectado afisicos

  • PIC12
  • **
  • Mensajes: 58
    • afisicos blog
Re: Iniciando proyecto con PIC16F877
« Respuesta #16 en: 28 de Diciembre de 2007, 12:38:05 »
Por cierto. A mi tampoco me deja colocar el .asm en sources. Se me mete en other files. ¿Como correjiste eso?

al dar a source files , add files, solo me deja coger .c y .h  (tengo la version 7.50)

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Iniciando proyecto con PIC16F877
« Respuesta #17 en: 28 de Diciembre de 2007, 14:44:16 »
una pregunta. El archivo de cabecera P16F877.INC  hay que incluirlo en el proyecto?, o basta con nombrarlo en la linea de codigo del fichero source?...

no hace falta, el propio mplab lo hace por tí una vez que compilas

Por cierto. A mi tampoco me deja colocar el .asm en sources. Se me mete en other files. ¿Como correjiste eso?

al dar a source files , add files, solo me deja coger .c y .h  (tengo la version 7.50)

el asm lo aceptará en esa y en cualquier versión, si te lo guarda en other files quiere decir que no le dijiste al asistente que era en ensamblador que ibas a trabajar. En el asistente basta seleccionar las tool del mpasm de microchip para la familia que estes trabajando (no recuerdo es algo como 12/16/ ...)

Intenta usar el 16f877A, que es la version mejorada del 16f877, ...

no creo que resuelva el problema porque según entiendo hay un malentendido con el asistente del mplab, (y además que si hay diferencias con/sin la A)

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado afisicos

  • PIC12
  • **
  • Mensajes: 58
    • afisicos blog
Re: Iniciando proyecto con PIC16F877
« Respuesta #18 en: 28 de Diciembre de 2007, 17:51:45 »
Muchas gracias PalitroqueZ, eran dos grandes misterios para mi.

saludos

Desconectado fin

  • PIC10
  • *
  • Mensajes: 15
Re: Iniciando proyecto con PIC16F877
« Respuesta #19 en: 28 de Diciembre de 2007, 19:01:46 »
Hola afisicos

Como ha dicho palitroquez es configuracion en el asistente. Se ve que en el asistente en el primer proyecto no elegí la herramienta adecuada (MPASM... o algo así... la primera que sale en el asistente...). En los últimos ya lo tengo configurado así y me acepta los .asm

En cuanto a lo del 16f877A que comenta palitroquez... entonces continuaré en el normal si hay diferencias. Creo que con este va de sobra, ya que creo que al final aunque use todos los puertos... seguramente esto sea por novato ya que creo que no uso ni la mitad de las posibilidaddes de este pic tal y como he visto en otros proyectos del foro.

Iré posteando los avances tanto para dudas como por si pueden servir de guia a otros usuarios que como yo se inicien en este tema.

Un saludo.

Desconectado afisicos

  • PIC12
  • **
  • Mensajes: 58
    • afisicos blog
Re: Iniciando proyecto con PIC16F877
« Respuesta #20 en: 28 de Diciembre de 2007, 20:37:16 »
Hola fin. Si, ya he podido hacer el proyecto en asm. Así pude probar lo del led y ver que iba, ahora mis problemas vienen con c... jeje pero me paso a otro post que ya he invadido mucho el tuyo. Gracias.

chao.

Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: Iniciando proyecto con PIC16F877
« Respuesta #21 en: 28 de Diciembre de 2007, 21:12:37 »
Intenta usar el 16f877A, que es la version mejorada del 16f877, ...

no creo que resuelva el problema porque según entiendo hay un malentendido con el asistente del mplab, (y además que si hay diferencias con/sin la A)

Claro que no, solo que si hay una version mejor, para que trabajar con una anterior, es solo mi opinion. Pero es valedero trabajar con ese pic.

Acabo de bajar la ultima version de tu programa. Ahora esta mejor, ya no me sale los errores anteriores. solo mensajes pero no es relevante eso, pero cuando sale warning si hay que chequearlos y ni que decir con el error. Bueno esperamos las ultimas noticias de tu proyecto  :D

Desconectado fin

  • PIC10
  • *
  • Mensajes: 15
Re: Iniciando proyecto con PIC16F877
« Respuesta #22 en: 10 de Enero de 2008, 10:38:58 »
Hola,

¿qué tal fueron las fiestas navideñas?

Después de descansar unos días he vuelto al lío... prácticamente he completado el código (faltan algunos retoques pero lo básico está o al menos compila en MPLAB). Ahora es el momento de ver cómo  funciona todo simulando en Proteus, y surgen problemas nada más empezar y es que no saca los caracteres por el LCD y se queda ahí colgado el circuito (sólo funciona el Reset, creo). Mirando por el foro y por internet, he cogido otras rutinas (me he quedado con una de Pocher que colgó en el foro, - gracias Pocher -) para el control del LCD ya que según he leído en Proteus dan problema con los tiempos del LCD (hay que poner retardos y demás creo). Sin embargo por muchos cambios que haga no da ningun caracter.

De hecho el último código que le he metido es prácticamente una copia del código que pillé en el foro (ya que corto el resto del código con un bucle a sleep) y aún así nada. No se si puede ser por el micro (la rutina original es para el 16F84).

Si alguien le pudiera echar un ojo se lo agradecería bastante.

Os adjunto el circuito y los tres códigos:
-Codigo con teclado es el mio original.asm
-Proteus.asm es la primera modificación
-Proteus2.asm es la última modificación que es casi copiado.

(En el primer código uso RA.1, RA.2 y RA.3 para RS, R/W y E que es como está en el circuito mientras que en los otros dos uso los pines 0,1y2)

Muchas gracias,

Un saludo

Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: Iniciando proyecto con PIC16F877
« Respuesta #23 en: 10 de Enero de 2008, 20:51:40 »
lo que pasa es que en la configuracion de los fuses estaba habilitado el WDT, enonces el porgrama apenas acanzaba unas lineas y se desbordaba el WDT provocando un reset en tu programa, deberias cambiar en tu codigo asi:

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_ENABLE_OFF & _LVP_OFF & _DEBUG_OFF & _CPD_OFF

entus 3 programas, has la prueba y veras como se visualiza en el LCD el mensaje que quieres, ahora creoq ue lo que tratas de hacer es capturar que tecla se pulso generando interrupciones en un determinado intervalo de tiempo, no esta mal la idea pero si te fijas en la parte de tu programa que trata las interrupciones, cuando se produce una interrupcion esta parte del programa no hace nada
solo ingres a este pero no hace nada y luego sale de el, creo que deberias leer mas el datasheet del pic, y darte una vuleta por el foro ya que este tema de generar interrupciones con el timer0,1 o 2 se a tocado ampliamente.

Desconectado fin

  • PIC10
  • *
  • Mensajes: 15
Re: Iniciando proyecto con PIC16F877
« Respuesta #24 en: 12 de Enero de 2008, 13:57:09 »
Gracias de nuevo Poseidon por tu respuesta.

Ya funciona la pantalla. Sin embargo los dos primeros codigos parpadean de forma extraña y no muestra todas las lineas. No se si esto es por causa de la media rutina que uso para los menus, pero bueno la verdad es que en el tercer codigo funciona esto a la perfeccion y no tengo problema en ponerlo así.

Ahora es lo del teclado lo que no me funciona como también me has dicho. Echaré un ojo por el foro a lo que me comentas de interrupciones. Cuando hice esta parte del código, buscando por el foro, pensé en hacer esto como interrupción de programa (creo que es lo que me comentas con el timer0,1 o 2) pero mirando ejemplos veia que estas interrupciones se podían producir en cualquier parte del programa saltando al vector de interrupicon, y al interesarme (al menos al principio) que sólo se pudieran dar en unos momentos determinados y que el programa se quedase en espera hasta que se produjera alguna... traté de buscar una alternativa. Ahora supongo que esto tambien se puede hacer con estas interrupciones habilitandolas o no en el código cuando me interese. De todas formas buscaré por el foro.

Seguiré dando noticias cuando avance con esto.

Otra pregunta, ¿tú verías necesario activar el Watchdog en alguna parte del programa como seguro? o no lo ves especialmente útil o al menos para esto?

De nuevo gracias,
Un saludo



Desconectado fin

  • PIC10
  • *
  • Mensajes: 15
Re: Iniciando proyecto con PIC16F877
« Respuesta #25 en: 18 de Enero de 2008, 11:23:03 »
Hola de nuevo,

pues bien fui retocando el código y el circuito de simulación y la verdad es que conseguí que fuera bien, como yo quería. Sin embargo empecé a reestructurar el código para ordenarlo, ponérmelo más claro para cuando por lo que fuera tuviera que consultarlo pasado un tiempo me acordase del tema, así que usé más subrutinas  y demás y ahora no sé por qué la simulación no da los mismos resultados (y la cosa de ir sobreescribiendo el código me ha dejado sin saber bien cómo lo tenía exactamente). Llevo 3 días dando vueltas qué he podido tocar para reventarlo pero iendo linea a linea veo correcto el código. El tema entre otros es que cuando abro el switch de la puerta la primera vez que me lo pide se me activa el buzzer (sin yo tenerlo así) y me cambia de menú en pantalla como una rutina que uso más adelante (en la rutina de chequeo la ITERR2). Aparte en el segundo menu de seleccion (el que aparece A) 80    B)160....) tengo configurado para que al pulsar el tercer boton no haga nada pero éste sí que hace, casí igual que la opcion de volver. Y por último (creo) al final, cuando termina el proceso tengo escrito que me saque la salida del puertoD 6 y 2 y la dos no se activa, aparte de esperar a que se abra y cierre el switch de la puerta que tampoco lo hace (sólo me espera a que abra para volver al primer menú). Sinceramente no entiendo el porqué de esto.

A ver si me pudierais echar una mano por si hay algo que se me haya escapado.

Gracias, os adjunto el circuito y el código.

Saludos

Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: Iniciando proyecto con PIC16F877
« Respuesta #26 en: 18 de Enero de 2008, 16:44:45 »
Intenta hacer la simulacion paso a paso para ver por que es que hace cosas raras tu programa  :mrgreen:

Desconectado fin

  • PIC10
  • *
  • Mensajes: 15
Re: Iniciando proyecto con PIC16F877
« Respuesta #27 en: 21 de Enero de 2008, 07:45:28 »
¿Qué tal?

No logro simularlo paso a paso. En el MPLAB se me queda siempre pillado en las comprobaciones del LCD. Por mucho que le de a "Step Out" se queda pillado el sistema en "Stepping..." y de ahi no sale.

Con la ayuda descubrí la opcion de Stimulus... por si podría ir metiendo yo las entradas de los puertos a mano para simular por ejemplo el teclado... pero no llegué a nada con eso.

¿Cómo se puede hacer?

Un saludo

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Iniciando proyecto con PIC16F877
« Respuesta #28 en: 22 de Febrero de 2008, 19:57:38 »
Disculpen que les lleve la contraria a los que le aconsejan al amigo Fin simular con assembler su proyecto y eso... pero como el dice, es "muy nuevo" con los micros... yo pienso que lo mejor será que trabajes con picbasic... es muy sencillo! y luego tú mismo le irás agarrando el truco a la cosa y podrás experimentar con otros lenguajes... por ejemplo, para usar lcd en assembler requiere largas líneas de código (que para los expertos ok, pero para los nuevos no son nada agradables)... en cambio, pic basic bastará decirle:
lcdout "lo que quiero mandar"
y más nada!! sólo hace falta que le digas al principio del programa en qué pines del pic tienes conectadas qué pines del lcd y si la transmisión será a 4 o a 8 bits y otras cosillas tontas...
Lo mismo para leer el teclado.. simplemente puedes usar un:
if (pin=0) ...  (en caso de que se coloque cero al presionar, que es común).
Bueno Fin si deseas ahorrarte problemas usa pic basic, te lo digo como un buen consejo.
Y el compilador es facilísimo de usar.
Lo corres desde la cónsola de windows con una instrucción:
pbp -p16f877 nombre_del_programa.bas
Si quieres métete en la sección del foro de pic basic o me dices y te puedo facilitar información...
Exito en tu proyecto!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado fin

  • PIC10
  • *
  • Mensajes: 15
Re: Iniciando proyecto con PIC16F877
« Respuesta #29 en: 20 de Marzo de 2008, 20:37:33 »
Hola firepic,

gracias por tu respuesta. La verdad es que he tenido que dejar un poco colgado el proyecto este por falta de tiempo, aunque espero poder retomarlo en breve.
La verdad es que aunque a duras penas y con ayuda de este hilo ya tenía bastante avanzado el tema con assembler, así que éste creo que lo terminaré así más que nada por no tener que volver a empezar.
Sin embargo me voy a ir dando vueltas por la sección de pic basic ya que tal y como me lo presentas suena sencillo, y para los próximos proyectos que se me vayan ideando seguramente lo intenté con esa herramienta a ver qué tal.

Gracias de nuevo.

Un saludo.