TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: danielsan2004 en 15 de Julio de 2013, 01:50:49

Título: Ayuda para un aspirante a novato
Publicado por: danielsan2004 en 15 de Julio de 2013, 01:50:49
 :D

He estado husmeando lo que he podido para dar el primer paso en programación de pics y estoy atorado; No se si acomodarme con los amables Protón o CCS C o de plano enfrentar al león Ensamblador.

Ya avance algo con el conocimiento general de lo que es un pic.

Mi intensión es aprender a programar pics y de ahi entrarle a C o Java o alguno de esos robustos.

Como se puede notar ando en el limbo, asi que aqui hay una oportunidad de salvar un alma. jejeje.

Gracias anticipadas.
Título: Re: Ayuda para un aspirante a novato
Publicado por: fuente en 15 de Julio de 2013, 03:33:51
Asomarte al ensamblador no está de más, y te peude venir muy bien para entender como funcionan estos chismes. Intentalo con cosas sencillas.
Después, yo te recomendaría el C, y entre ellos, el C18.

Saludos.
Título: Re: Ayuda para un aspirante a novato
Publicado por: AngelGris en 15 de Julio de 2013, 09:39:41
Asomarte al ensamblador no está de más, y te peude venir muy bien para entender como funcionan estos chismes. Intentalo con cosas sencillas.
Después, yo te recomendaría el C, y entre ellos, el C18.

Saludos.

  Comparto la opinión de Fuente respecto a echarle una mirada y a hacer cosillas con asm. En cuanto al compilador C, creo que depende con que tipo de micros quieras trabajar. Yo uso XC8 (también de microchip) ya que permite trabajar con las familias 10, 12, 16 y 18.
Título: Re: Ayuda para un aspirante a novato
Publicado por: danielsan2004 en 15 de Julio de 2013, 10:36:58
Hola amigos, que agradable impresión me provocan con sus excelentes y prontas aportaciones, hoy mismo empiezo con asm y luego le entraré a C, para esto ultimo esperaré a ver que IDE me recomiendan.

Con lo que he estado viendo me parece una buena META, llegar a trabajar con los dsPic ya que "se antoja" el manejo de señales de forma mas estable.

Estaré atento y  abierto a toda observación.

¡Muchisimas gracias!
Título: Re: Ayuda para un aspirante a novato
Publicado por: AngelGris en 15 de Julio de 2013, 10:39:25
  Como IDE tanto para asm como para C puedes usar XMPLAB. Es un en Java del propio microchip y hay versiones tanto para win como para linux
Título: Re: Ayuda para un aspirante a novato
Publicado por: danielsan2004 en 15 de Julio de 2013, 15:07:26
Muchas gracias AngelGris, voy a trabajar y luego te comento que tal me va. Saludos.
Título: Re: Ayuda para un aspirante a novato
Publicado por: danielsan2004 en 24 de Julio de 2013, 17:58:44
Hola Amigos.

Ya estoy en lo que me recomendaron pero tengo un detalle:

Al realizar el clásico de luces del auto increíble resulta una falla en el oscilador, tengo que acercar la mano al cable para que parpadeen los leds, entre mas cerca mas rápido. Hay campo magnético.

Incluso si quito el oscilador y dejo el cable solo hay parpadeo como si estuviera funcionando el oscilador interno.

   __CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
   INCLUDE      <P16F84A.INC>
   LIST      P=16F84A

Esta es una de las configuraciones que he probado.



Por favor ayúdenme a entender que pasa.  :-)
Título: Re: Ayuda para un aspirante a novato
Publicado por: AngelGris en 24 de Julio de 2013, 18:18:32
Hola Amigos.

Ya estoy en lo que me recomendaron pero tengo un detalle:

Al realizar el clásico de luces del auto increíble resulta una falla en el oscilador, tengo que acercar la mano al cable para que parpadeen los leds, entre mas cerca mas rápido. Hay campo magnético.

Incluso si quito el oscilador y dejo el cable solo hay parpadeo como si estuviera funcionando el oscilador interno.

   __CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
   INCLUDE      <P16F84A.INC>
   LIST      P=16F84A

Esta es una de las configuraciones que he probado.



Por favor ayúdenme a entender que pasa.  :-)


  Intenta dar mas detalles de tu circuito. ¿De que valor es el cristal utilizado? ¿Colocaste los capacitores cerámicos del cristal? Estaría muy bien también que muestres tu programa completo.
Título: Re: Ayuda para un aspirante a novato
Publicado por: danielsan2004 en 24 de Julio de 2013, 18:55:15
Si perdon.

Le  monte un oscilador de 4mhz con dos condensadores de 22pF
Título: Re: Ayuda para un aspirante a novato
Publicado por: danielsan2004 en 24 de Julio de 2013, 18:57:53
Este es uno de los programas con que he intentado:


   
   
   __CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
   INCLUDE      <P16F84A.INC>
   LIST      P=16F84A
   
   
      TIEMPO   EQU   0X0C
      
   
      
      ORG      0
      bsf      STATUS,RP0
      CLRF   TRISB
      bcf      STATUS,RP0
      
      
;xxxxxxxZONA DE CODIGO
      
INICIO
      MOVLW   b'00000000'
      MOVWF   PORTB
      CALL   RETARDO
      MOVLW   b'00011000'
      MOVWF   PORTB
      CALL   RETARDO
      MOVLW   b'00100100'
      MOVWF   PORTB
      CALL   RETARDO
      MOVLW   b'01000010'
      MOVWF   PORTB
      CALL   RETARDO
      MOVLW   b'10000001'
      MOVWF   PORTB
      CALL   RETARDO
      MOVLW   b'01000010'
      MOVWF   PORTB
      CALL   RETARDO
      MOVLW   b'00100100'
      MOVWF   PORTB
      CALL   RETARDO
      MOVLW   b'00011000'
      MOVWF   PORTB
      CALL   RETARDO 
      GOTO   INICIO
      
RETARDO
      MOVLW   D'255'
      MOVFW   TIEMPO
DEC      DECFSZ   TIEMPO
      GOTO   DEC
      RETURN

      END

lo monte en protoboard alimentando con 5 V. y también en un laboratorio. hace lo mismo en ambos.
Título: Re: Ayuda para un aspirante a novato
Publicado por: danielsan2004 en 24 de Julio de 2013, 19:00:41
En MPLAB configure  el pic y en la configuración de bits elegí XT. En settings 4mhz.
No se que me estaré brincando.
Título: Re: Ayuda para un aspirante a novato
Publicado por: AngelGris en 24 de Julio de 2013, 19:03:19
  ¿El pin MCLR no colocas a VCC?

  En tu programa veo un error, aunque tal vez sea un error de tipeo. En la función RETARDO deberías utilizar MOVWF para llevar el valor 255 a la variable TIEMPO
Título: Re: Ayuda para un aspirante a novato
Publicado por: danielsan2004 en 24 de Julio de 2013, 19:18:11
¡Que rápido revisas! efectivamente habia ese error ya lo corregí y sigue igual. Si le estoy mandando voltage a MCLR.
Título: Re: Ayuda para un aspirante a novato
Publicado por: danielsan2004 en 24 de Julio de 2013, 19:21:35
ES curioso hermano, con acercar la mano a unos 5 cms. empieza a parpadear, si la retiro se queda en el led que estaba leyendo. Por eso digo que hay campo magnético.
Título: Re: Ayuda para un aspirante a novato
Publicado por: willynovi en 24 de Julio de 2013, 19:37:39
Seria bueno si adjuntas el esquematico de tu circuito, y si se te está metiendo ruido al PIC, seguramente tendrias que poner los pines libres a GND y configurarlos como entradas.

Si te hace ese problema cuando le acercas la mano no busques el error en el firmware, seguro esta en el montaje.
Título: Re: Ayuda para un aspirante a novato
Publicado por: danielsan2004 en 24 de Julio de 2013, 19:39:40
Voy a hacerlo en Proteus y lo agrego, dame 5 mins. por fa.
Título: Re: Ayuda para un aspirante a novato
Publicado por: danielsan2004 en 24 de Julio de 2013, 20:05:05
A ver si esta claro este circuito amigo AngelGris si no mañana lo hago en otro formato.
Gracias por tu apoyo.

Hasta mañana.
Título: Re: Ayuda para un aspirante a novato
Publicado por: AngelGris en 24 de Julio de 2013, 21:51:14
  No entiendo porque RA4 lo mandas a VCC. ¿Como obtienes los 5V, con un regulador 7805? Si es así te recomiendo que el capacitor sea de 10uF en lugar de 10nF.

  Otra cosa que tiene que ver con el retardo de tu programa. Al utilizar cristal de 4MHz, el tiempo de instrucción es de 1uS. Tu rutina de retardo hace 255 * 3 (que son los tres ciclos que toma en decrementar y saltar hacia DEC, mientras el contador TIEMPO sea mayor a 0) + 2 (que serían los dos ciclos de MOVLW y MOVWF) por lo tanto sería 255*3 + 2 --> 767 uS. Creo que podría ser poco tiempo para notar el "movimiento" de los leds
Título: Re: Ayuda para un aspirante a novato
Publicado por: danielsan2004 en 25 de Julio de 2013, 15:26:05
  No entiendo porque RA4 lo mandas a VCC. ¿Como obtienes los 5V, con un regulador 7805? Si es así te recomiendo que el capacitor sea de 10uF en lugar de 10nF.

  Otra cosa que tiene que ver con el retardo de tu programa. Al utilizar cristal de 4MHz, el tiempo de instrucción es de 1uS. Tu rutina de retardo hace 255 * 3 (que son los tres ciclos que toma en decrementar y saltar hacia DEC, mientras el contador TIEMPO sea mayor a 0) + 2 (que serían los dos ciclos de MOVLW y MOVWF) por lo tanto sería 255*3 + 2 --> 767 uS. Creo que podría ser poco tiempo para notar el "movimiento" de los leds

Tienes razón en todo Angel Gris;

Lo del pin Ra4 fue error en el gráfico que preparé de prisa, en realidad esté con una resistencia pull down y un switch para reset (esto en el montaje en protoboard) por que en el laboratorio entrenador no he checado.

Lo del retardo lo probé con un programa sin bucle, con el puerto A como entrada y el B leyendo y mostrando a través de leds; Cada vez que le mandaba un 1  no encendía el led hasta que acercaba la mano al cable del oscilador.

También le duplique los retardos al programa que te mostré antes asi:

   ....GOTO   INICIO
            
RETARDO
      MOVLW   D'255'
      MOVFW   TIEMPO
DEC      DECFSZ   TIEMPO
      GOTO   DEC1
      RETURN
DEC1   MOVLW   D'255'
      MOVFW   TIEMPO2
DEC3   DECFSZ   TIEMPO2   
      GOTO   DEC3
      GOTO   DEC
      RETURN

      END




 y de igual manera dependía de que tanto acercaba mi mano :-) , incluso le conecté un cable a masa y así se veía bonito el efecto pero creo que no debe ir así.

En cuanto a los condensadores que recomiendas lo voy  a hacer pero estoy decidido a montar todo en una placa aparte con lo que me indicas por que la alimentación la he estado tomando del laboratorio que comenté. Voy a  aislarlo de todo y soldar cada cosa para ir restando posibles causas.


Espero estar probando a mas tardar mañana el circuito montado y poder comentarte como me fué.

Mi admiración por tus conocimientos y mi agradecimiento por el esfuerzo que me dedicas Amigo.

Seguimos.
Título: Re: Ayuda para un aspirante a novato
Publicado por: RALF2 en 25 de Julio de 2013, 16:39:41
Hola danielsan2004
Yo te recomendaria, si vas a comenzar con ASM que te pases por el sub foro del almacen del asembler y coloques tus dudas alli, ademas vas a encontrar mucho material que te puede servir   :mrgreen:

Este sub foro esta dedicado al C no al asm   ;-)

En cuanto a los compiladores el proton es un excelente compilador para el basic y para el C podrias utilizar uno poco utilizado aqui el llamado mikroC Pro, que segun veo es muy parecido al proton pero se programa en C y sino los compiladores xc8 de microchip; no obstante siempre para darle un buen uso es recomendable que conozcas la arquitectura del pic con que estes trabajando y eso lo podras aprender muy bien si empiesas con el asembler  :mrgreen:

Saludos
Título: Re: Ayuda para un aspirante a novato
Publicado por: danielsan2004 en 25 de Julio de 2013, 19:35:22
Hola Ralf.

No había reparado en esto de los sub-foros y es justo lo que me faltaba, lo voy a hacer. Llegue aquí por mi pregunta inicial y tuve la suerte de encontrar a dos buenos amigos y ahora contigo tres. :-)

Siguiendo tus observaciones voy a continuar con ASM y después tomare de lleno la programación en C, para entonces no se que nuevos programas hayan salido o en que versión vayan los que hay,  jajaja...

Quedo a tus apreciables ordenes  y no te extrañe que un dia de estos te moleste con alguna duda que tenga.
Gracias y  Saludos.
Título: Re: Ayuda para un aspirante a novato
Publicado por: RALF2 en 25 de Julio de 2013, 19:58:29
Estamos a la orden danielsan2004!
En lo que respecta a C o basic  :mrgreen:

Saludos
Título: Re: Ayuda para un aspirante a novato
Publicado por: danielsan2004 en 25 de Julio de 2013, 20:30:05
Ya quedo amigos.
 Con los comentarios de AngelGris decidí hacer tres cosas:

1.Monte todo en una tarjeta universal en ves del laboratorio y del protoboard.
2. Duplique los retardos.
3.Cambié el pic

Ahora trabaja excelente pero me toca descubrir cuál fué el error exactamente.

Muchas gracias Angel Gris .

Seguimos.
Título: Re: Ayuda para un aspirante a novato
Publicado por: AngelGris en 25 de Julio de 2013, 20:51:21
Ya quedo amigos.
 Con los comentarios de AngelGris decidí hacer tres cosas:

1.Monte todo en una tarjeta universal en ves del laboratorio y del protoboard.
2. Duplique los retardos los retardos .
3.Cambié el pic

Ahora trabaja excelente pero me toca descubrir cuál fué el error exactamente.

Muchas gracias Angel Gris .

Seguimos.

  En ocasiones, el protoboard genera falsos contactos o incluso capacidades parásitas que pueden producir que falle el oscilador.
Título: Re: Ayuda para un aspirante a novato
Publicado por: danielsan2004 en 26 de Julio de 2013, 02:12:55
Es cierto eso de los protoboard.

Ya pude correr el pic nuevo en el laboratorio de entrenamiento y trabajo perfecto.
De modo que el sospecho que quedaba era el pic anterior, lo volví a correr e hizo lo mismo en el laboratorio, cuando lo monte en el protoboard ya no hizo nada.
A partir de ahí no lo reconoce el programador.

¿Será que ya estaba dañado?

Lo mas probable es eso pero por fin puedo continuar practicando :-) a ver que nuevo tropezón me encuentro.

Te agradezco los tips, voy a repasarlos y seguir estudiando.

 Por favor cuenta con mi reciprocidad en todo lo que esté a mi alcance.

Seguimos en contacto.