Autor Tema: encender led pic16f877a  (Leído 6282 veces)

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

Desconectado d4n13l4

  • PIC16
  • ***
  • Mensajes: 107
encender led pic16f877a
« en: 10 de Octubre de 2010, 16:18:37 »
Hola
no he podido encender un led para este tipo de pic segun este codigo que encontre en un video
Código: [Seleccionar]
led var portb.0
trisb=0
inicio:
high led
pause 500
low led 500
goto inicio
genere el .hex con mplab y lo cargue sin problema, arme el circuito alimentado a 5 pero el led no me prende y el led si esta bueno pq si lo conecto solo a 5v se prende

no se basic segui un video para probar el pic pero no me resulto, tendra algo malo el codigo?
no se de programar pic, se C pero encontre este ejemplo en  basic y no pense q no fuera a resultar  :?


Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: encender led pic16f877a
« Respuesta #1 en: 10 de Octubre de 2010, 16:34:01 »
Ya has preguntado lo mismo en otro lado. Sigue allá por favor.

http://www.todopic.com.ar/foros/index.php?topic=31866.msg269833#msg269833

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: encender led pic16f877a
« Respuesta #2 en: 10 de Octubre de 2010, 18:31:56 »
He estado viendo el enlace donde colocaste tus preguntas y ciertamente es un hilo de carácter básico para controlar un led igual que intentas hacer tu mismo, pero el lenguaje que manejan en el hilo no es lenguaje BASIC, por lo que es posible que no te puedan contestar. Hay que tomarse un tiempo para colocar las preguntas en el subforo adecuado.

De todas formas he echado un vistazo al video, y realmente no pude reprimir una sonrisa, es un video que muestra un proceso de compilación y simulación, por lo que no tiene nada que ver con la realidad. El programa no está configurado para trabajar sobre un circuito real. Así que suponiendo que tu circuito este bien construido y suponiendo que en el programador configuraste correctamente los bit de la palabra de configuración (también se conoce como fuses) del PIC el programa sigue teniendo algunos carencias:

En él no se indica a la velocidad que va a trabajar el micro.

No se indican si los pin del micro serán digitales o analógicos, por defecto si no se indica nada, trabajan como analógicos.

Llegados hasta aquí te diré que yo no trabajo con esta versión de lenguaje Basic y por lo tanto no sé exactamente que tomara por defecto este lenguaje, pero como mínimo le añadiría al programa la declaración “ALLDIGITAL” que creo que es común a todos los lenguajes BASIC, esta declaración indica al pic que los Pin I/O trabajaran en modo digital, que es como se deduce de tu programa.

led var portb.0
alldigital
trisb=0
inicio:
high led
pause 500
low led 500
goto inicio

Y una pequeña aclaración sobre la palabra de configuración del pic o fuses, sino para ti que a lo mejor sabes su funcionamiento, si para todos aquellos que lean el hilo y se estén iniciando con los Pic y sean muy amantes de los simuladores. En los simuladores se tiende a simplificar en el programa, las configuración del modo de trabajo del pic y también a simplificar el hardware que soportara el programa, esto para un iniciado no suele tener la mayor importancia, pero si estas prácticas con simulador las sigue un amater en la materia, es un pecado por parte del supuesto “profe” no mencionar estas simplificaciones.

Los Pic’s son microcontroladores, y los microcotroladores tienen la propiedad de incluir en el mismo chip a demás del procesador o núcleo una serie de módulos especializados como son, trabajar con reloj externo y tipo (lento, medio, rápido), reloj interno, módulos I/O digital, modulo analógico, comparador analógico, usart, I2C, usb y etc. Esto está muy bien ya que nos ahorra mucha circuitería adicional externa, pero tiene sus inconvenientes, y es que estos módulos en la mayoría de Pic comparten Pin, y una de las funciones de los fuses junto con la configuracion de registros en tiempo de ejecucion, es la de modificar el modo de trabajo interno y asignar pin al modulo que usemos según la tarea que realice nuestro circuito. Algunas veces cuando no se indica nada la configuración por defecto de los fuses y registros coinciden más o menos con lo deseado y nuestro circuito aparentemente funciona correctamente, pero estas veces son las menos.
« Última modificación: 10 de Octubre de 2010, 18:46:56 por dogflu66 »
Saludos desde Granada, España.

Desconectado d4n13l4

  • PIC16
  • ***
  • Mensajes: 107
Re: encender led pic16f877a
« Respuesta #3 en: 10 de Octubre de 2010, 18:51:45 »
hola
la verdad es que no se basic pero pense que podia ser tan simple como mostraba el video, ya veo que no segun lo que dijiste.
de los fuses no entiendo mucho tampoco soy mas bien nueva en esto de los pics y solo se programar en C pero no es mucha la practica que tengo
los fuses se configuran en el programador cierto? yo he utilizado el winpic y lo que se es que tengo que ponerle que usare un oscilador externo y off en el resto de los fuses

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: encender led pic16f877a
« Respuesta #4 en: 10 de Octubre de 2010, 21:25:27 »
La palabra de configuración, compuesta de bit también llamados fuses, es conveniente especificarla en el código fuente (en nuestro programa) de esta forma no hay que preocuparse de hacerlo en el programador, y de esta forma tambien, cada código llevara su propia configuración.
Pero para hacerse una idea de cómo afectan los fuses es mejor leerlo en el datasheet del micro, y de paso, así, los distinguirlos de los registros de configuración de los módulos. Por ejemplo:  “ALLDIGITAL” no pertenece a los fuses, pero afecta directamente a los módulos de I/O del pic.
Saludos desde Granada, España.

Desconectado d4n13l4

  • PIC16
  • ***
  • Mensajes: 107
Re: encender led pic16f877a
« Respuesta #5 en: 13 de Octubre de 2010, 20:34:13 »
se puede echar a perder un oscilador?
porque primero tenia el pic malo me compre otro y ahora esta bien porque al grabarlo lo detecta y lee sin problemas el winpic
pero aun asi el led no se prende y las conexiones estan bien
puede ser que haya arruinado el oscilador al matar el pic?


Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: encender led pic16f877a
« Respuesta #6 en: 14 de Octubre de 2010, 04:46:36 »
Si usas el tradicional cristal de cuarzo y los dos condensadores no tiene que afectarle en nada que el pic este averiado.
« Última modificación: 14 de Octubre de 2010, 05:27:09 por dogflu66 »
Saludos desde Granada, España.

Desconectado d4n13l4

  • PIC16
  • ***
  • Mensajes: 107
Re: encender led pic16f877a
« Respuesta #7 en: 14 de Octubre de 2010, 12:29:40 »
Hola
tengo condensadores de 33p no hay problema con este valor? habia visto circuitos con 22p pero no hay donde compro
este es mi cristal
cual puede ser el problema de no lograr encender el led si el cristal no se ehca a perder?


Saludos

Desconectado marcelo2112

  • PIC12
  • **
  • Mensajes: 64
Re: encender led pic16f877a
« Respuesta #8 en: 26 de Octubre de 2010, 21:55:07 »
No usas proteus para simular?

Desconectado d4n13l4

  • PIC16
  • ***
  • Mensajes: 107
Re: encender led pic16f877a
« Respuesta #9 en: 26 de Octubre de 2010, 23:08:41 »
hola
grax por tu respuesta aunque hace ya varios dias que pude encender el led, si lo simule con proteus pero en principio era un problema de la proto.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: encender led pic16f877a
« Respuesta #10 en: 27 de Octubre de 2010, 06:05:26 »
Hola
tengo condensadores de 33p no hay problema con este valor? habia visto circuitos con 22p pero no hay donde compro
este es mi cristal
cual puede ser el problema de no lograr encender el led si el cristal no se ehca a perder?


Saludos


Si los condensadores son próximos a los recomendados producirá que el arranque y estabilización del cristal del micro será más lento. Y si son demasiado grandes puede que no llegue a oscilar correctamente o incluso que no oscile.
Saludos desde Granada, España.