Autor Tema: PIC en protoboard  (Leído 4678 veces)

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

Desconectado Scufflee

  • PIC10
  • *
  • Mensajes: 26
PIC en protoboard
« en: 17 de Enero de 2014, 12:28:30 »
Hola estoy trabajando con un PIC 16F628A, ya lo tengo programado y probado en ISIS, pero al momento de llevarlo al protoboard no me funciona. El circuito funciona con dos Switch y 8 salidas. Al momento de encender el switch no hace nada. Estoy trabajando con una fuente de poder regulable y un LM7805 para la alimentación del pic.

PD: De vez en cuando, toco el switch y el circuito comienza a hacer la secuencia, pero se alterna entre las dos que debería hacer.

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: PIC en protoboard
« Respuesta #1 en: 17 de Enero de 2014, 13:02:26 »
podrias poner tu código y esquema de conexión para revisarlos y darte una ayuda
"Nada es imposible, no si puedes imaginarlo"

Desconectado Scufflee

  • PIC10
  • *
  • Mensajes: 26
Re: PIC en protoboard
« Respuesta #2 en: 17 de Enero de 2014, 13:06:47 »
podrias poner tu código y esquema de conexión para revisarlos y darte una ayuda

Aquí el codigo por Niple
Código: [Seleccionar]
;------------------------------------------------------------
; Código assembler generado por Niple V5.6.3
; Proyecto: 2
; Autor: Niple Software
; Fecha: 17-01-2014
; PIC: 16F627A
; Velocidad de reloj: 4 Mhz
; Descripcion:
;------------------------------------------------------------


 LIST    P=PIC16F627A


_HS_OSC               equ  0x3FEE
_WDT_OFF              equ  0x3FFB
_PWRTE_ON             equ  0x3FF7
_MCLRE_ON             equ  0x3FFF
_BODEN_OFF            equ  0x3FBF
_LVP_OFF              equ  0x3F7F
_CPD_OFF              equ  0x3F7F
_CP_OFF               equ  0x3FFF

 __config _HS_OSC & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF


;------------------------------------------------------------
;                  Declaración de Registros
;------------------------------------------------------------
w                     equ  0x0000
status                equ  0x0003
porta                 equ  0x0005
portb                 equ  0x0006
pclath                equ  0x000a
cmcon                 equ  0x001f
_np_tiempo            equ  0x0024
_np_tiempo1           equ  0x0026
_np_tiempo2           equ  0x0027
_np_tiempo3           equ  0x0028
trisa                 equ  0x0085
trisb                 equ  0x0086


;------------------------------------------------------------
;                  Declaración de Bits
;------------------------------------------------------------
c                     equ  0   ;carry / borrow bit
ra0                   equ  0   ;bit 0 del puerto a
ra1                   equ  1   ;bit 1 del puerto a
rp0                   equ  5   ;registrer bank select bit
rp1                   equ  6   ;registrer bank select bit
z                     equ  2   ;bit cero


;------------------------------------------------------------
;               Declaración de Registros EEPROM
;------------------------------------------------------------


;------------------------------------------------------------
;                        Inicio
;------------------------------------------------------------

   org 0x00
   goto paso2


;------------------------------------------------------------
;                      programa principal
;------------------------------------------------------------
paso2
   bcf status,rp0                   ;cambiar a banco 0
   bcf status,rp1
   clrf _np_tiempo
   clrf _np_tiempo1
   clrf _np_tiempo2
   clrf _np_tiempo3
   clrf porta
   movlw b'00001111'                ;configurar el puerto a como xxxseeee
   bsf status,rp0                   ;cambiar a banco 1
   movwf trisa
   movlw b'00000111'                ;puerto a = e/s digital
   bcf status,rp0                   ;cambiar a banco 0
   movwf cmcon
   clrf portb
   movlw b'00000000'                ;configurar el puerto b como ssssssss
   bsf status,rp0                   ;cambiar a banco 1
   movwf trisb
paso4
   bcf status,rp0                   ;cambiar a banco 0
   bcf status,rp1
   btfss porta,ra0
   goto paso5
   ;escribir en el puerto b
   movlw b'10000010'
   movwf portb
   movlw .3                         ;temporizador 30 mse
   call tmp_100_mc                  ;llamada a rutina tmp_100_mc
   btfss porta,ra0
   goto paso4
   ;escribir en el puerto b
   movlw b'01000100'
   movwf portb
   movlw .3                         ;temporizador 30 mse
   call tmp_100_mc                  ;llamada a rutina tmp_100_mc
   btfss porta,ra0
   goto paso4
   ;escribir en el puerto b
   movlw b'10000001'
   movwf portb
   movlw .3                         ;temporizador 30 mse
   call tmp_100_mc                  ;llamada a rutina tmp_100_mc
   btfss porta,ra0
   goto paso4
   ;escribir en el puerto b
   movlw b'00100010'
   movwf portb
   movlw .3                         ;temporizador 30 mse
   call tmp_100_mc                  ;llamada a rutina tmp_100_mc
   btfss porta,ra0
   goto paso4
   ;escribir en el puerto b
   movlw b'01000001'
   movwf portb
   movlw .3                         ;temporizador 30 mse
   call tmp_100_mc                  ;llamada a rutina tmp_100_mc
   goto paso4                       ;cierra el ciclo
paso5
   btfss porta,ra1
   goto paso6
   ;escribir en el puerto b
   movlw b'11100000'
   movwf portb
   movlw .3                         ;temporizador 30 mse
   call tmp_100_mc                  ;llamada a rutina tmp_100_mc
   btfss porta,ra1
   goto paso4
   ;escribir en el puerto b
   movlw b'00000111'
   movwf portb
   movlw .3                         ;temporizador 30 mse
   call tmp_100_mc                  ;llamada a rutina tmp_100_mc
   goto paso4                       ;cierra el ciclo
paso6
   ;escribir en el puerto b
   movlw b'00000000'
   movwf portb
   goto paso4                       ;cierra el ciclo


;------------------------------------------------------------
;                  Declaración de Subrutinas
;------------------------------------------------------------

tmp_100_mc
   movwf _np_tiempo
   goto tmp_100_mc_1
tmp_100_mc_bucle2
   nop
   nop
   nop
   nop
   nop
   nop
   nop
tmp_100_mc_1
   movlw .22
   movwf _np_tiempo1
tmp_100_mc_bucle1
   movlw .150
   movwf _np_tiempo2
tmp_100_mc_bucle
   decfsz _np_tiempo2,1
   goto tmp_100_mc_bucle
   decfsz _np_tiempo1,1
   goto tmp_100_mc_bucle1
   nop
   decfsz _np_tiempo,1
   goto tmp_100_mc_bucle2
   return



;------------------------------------------------------------
;                  DATOS EN MEMORIA EEPROM
;------------------------------------------------------------
   org  0x2100
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff

 End

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: PIC en protoboard
« Respuesta #3 en: 17 de Enero de 2014, 13:22:58 »
tienes conectado el cristal externo y el master clear?
"Nada es imposible, no si puedes imaginarlo"

Desconectado Scufflee

  • PIC10
  • *
  • Mensajes: 26
Re: PIC en protoboard
« Respuesta #4 en: 17 de Enero de 2014, 13:38:06 »
tienes conectado el cristal externo y el master clear?

Sí pero sigue igual. Inclusive cambie la configuración usando la siguiente:
Código: [Seleccionar]
__CONFIG   _INTOSC_OSC_NOCLKOUT & _PWRTE_ON & _WDT_OFF & _CP_ON & _MCLRE_OFF & _BOREN_ON & _LVP_OFF & _DATA_CP_ON
Pero sigue con el mismo problema.

Le conecte resistencias de 10K a las entradas y al negativo y los pulsadores al positivo, pero sigue sin funcionar.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: PIC en protoboard
« Respuesta #5 en: 17 de Enero de 2014, 13:40:25 »
Puede ser un problema del circuito. Has colocado las resistencias correspondientes a los pulsadores? por qué no compartes tu circuito también?

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 rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: PIC en protoboard
« Respuesta #6 en: 17 de Enero de 2014, 13:42:40 »
inclusive, podría ser un falso en tu protoboard, puede que tu switch no haga bien contacto
"Nada es imposible, no si puedes imaginarlo"

Desconectado Scufflee

  • PIC10
  • *
  • Mensajes: 26
Re: PIC en protoboard
« Respuesta #7 en: 17 de Enero de 2014, 14:54:49 »
Aquí hay fotos del circuito en protoboard:

Citar
Imagen 1
Imagen 2
Imagen 3
Imagen 4
Imagen 5
Imagen 6
Imagen 7


Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: PIC en protoboard
« Respuesta #8 en: 17 de Enero de 2014, 15:47:10 »
Lo que veo en tus images es:
1º El pin de MCLR no tienes fijado a ningún potencial. Es el pin y deberías de colocarlo con una R a positivo
2º Tampoco veo por ningún sitio que hayas colocado el cristal y sus condensadores respectivos.
3º Lo mas cerca de la alimentación del pic deberías de colocar un condensador de 0,1uF
4º También deberías de colocar algún condensador de filtro a la salida del regulador 7805.
5º La configuración del oscilador la has colocado como "HS", para esto el cristal debería ser de 10MHz o  mayor. En caso de querer utilizar 4MHz la configuración debería de ser "XT".

Lo que los compañeros querían pedirte, aparte de las imágenes, el esquema de tu circuito.
« Última modificación: 17 de Enero de 2014, 15:52:16 por Fer_TACA »
Todos los días se aprende algo nuevo.

Desconectado Scufflee

  • PIC10
  • *
  • Mensajes: 26
Re: PIC en protoboard
« Respuesta #9 en: 17 de Enero de 2014, 16:00:16 »
Hace poco coloqué un cable suelto en el pin 16 y hacia la secuencia cuando lo tocaba.

Aquí el VIDEO

Y en el ISIS tengo la misma programación y sin cristales. Ahí me funciona sin problemas.

PD: Estoy usando esta programación:
Código: [Seleccionar]
;------------------------------------------------------------
; Código assembler generado por Niple V5.6.3
; Proyecto: 2
; Autor: Niple Software
; Fecha: 17-01-2014
; PIC: 16F627A
; Velocidad de reloj: 4 Mhz
; Descripcion:
;------------------------------------------------------------


 LIST    P=PIC16F627A


_INTOSC_OSC_NOCLKOUT               equ  0x3FEE
_WDT_OFF              equ  0x3FFB
_PWRTE_ON             equ  0x3FF7
_MCLRE_OFF             equ  0x3FFF
_BOREN_ON            equ  0x3FBF
_LVP_OFF              equ  0x3F7F
_DATA_CP_ON              equ  0x3F7F
_CP_ON               equ  0x3FFF

 __CONFIG   _INTOSC_OSC_NOCLKOUT & _PWRTE_ON & _WDT_OFF & _CP_ON & _MCLRE_OFF & _BOREN_ON & _LVP_OFF & _DATA_CP_ON


;------------------------------------------------------------
;                  Declaración de Registros
;------------------------------------------------------------
w                     equ  0x0000
status                equ  0x0003
porta                 equ  0x0005
portb                 equ  0x0006
pclath                equ  0x000a
cmcon                 equ  0x001f
_np_tiempo            equ  0x0024
_np_tiempo1           equ  0x0026
_np_tiempo2           equ  0x0027
_np_tiempo3           equ  0x0028
trisa                 equ  0x0085
trisb                 equ  0x0086


;------------------------------------------------------------
;                  Declaración de Bits
;------------------------------------------------------------
c                     equ  0   ;carry / borrow bit
ra0                   equ  0   ;bit 0 del puerto a
ra1                   equ  1   ;bit 1 del puerto a
rp0                   equ  5   ;registrer bank select bit
rp1                   equ  6   ;registrer bank select bit
z                     equ  2   ;bit cero


;------------------------------------------------------------
;               Declaración de Registros EEPROM
;------------------------------------------------------------


;------------------------------------------------------------
;                        Inicio
;------------------------------------------------------------

   org 0x00
   goto paso2


;------------------------------------------------------------
;                      programa principal
;------------------------------------------------------------
paso2
   bcf status,rp0                   ;cambiar a banco 0
   bcf status,rp1
   clrf _np_tiempo
   clrf _np_tiempo1
   clrf _np_tiempo2
   clrf _np_tiempo3
   clrf porta
   movlw b'00001111'                ;configurar el puerto a como xxxseeee
   bsf status,rp0                   ;cambiar a banco 1
   movwf trisa
   movlw b'00000111'                ;puerto a = e/s digital
   bcf status,rp0                   ;cambiar a banco 0
   movwf cmcon
   clrf portb
   movlw b'00000000'                ;configurar el puerto b como ssssssss
   bsf status,rp0                   ;cambiar a banco 1
   movwf trisb
paso4
   bcf status,rp0                   ;cambiar a banco 0
   bcf status,rp1
   btfss porta,ra0
   goto paso5
   ;escribir en el puerto b
   movlw b'10000010'
   movwf portb
   movlw .3                         ;temporizador 30 mse
   call tmp_100_mc                  ;llamada a rutina tmp_100_mc
   btfss porta,ra0
   goto paso4
   ;escribir en el puerto b
   movlw b'01000100'
   movwf portb
   movlw .3                         ;temporizador 30 mse
   call tmp_100_mc                  ;llamada a rutina tmp_100_mc
   btfss porta,ra0
   goto paso4
   ;escribir en el puerto b
   movlw b'10000001'
   movwf portb
   movlw .3                         ;temporizador 30 mse
   call tmp_100_mc                  ;llamada a rutina tmp_100_mc
   btfss porta,ra0
   goto paso4
   ;escribir en el puerto b
   movlw b'00100010'
   movwf portb
   movlw .3                         ;temporizador 30 mse
   call tmp_100_mc                  ;llamada a rutina tmp_100_mc
   btfss porta,ra0
   goto paso4
   ;escribir en el puerto b
   movlw b'01000001'
   movwf portb
   movlw .3                         ;temporizador 30 mse
   call tmp_100_mc                  ;llamada a rutina tmp_100_mc
   goto paso4                       ;cierra el ciclo
paso5
   btfss porta,ra1
   goto paso6
   ;escribir en el puerto b
   movlw b'11100000'
   movwf portb
   movlw .3                         ;temporizador 30 mse
   call tmp_100_mc                  ;llamada a rutina tmp_100_mc
   btfss porta,ra1
   goto paso4
   ;escribir en el puerto b
   movlw b'00000111'
   movwf portb
   movlw .3                         ;temporizador 30 mse
   call tmp_100_mc                  ;llamada a rutina tmp_100_mc
   goto paso4                       ;cierra el ciclo
paso6
   ;escribir en el puerto b
   movlw b'00000000'
   movwf portb
   goto paso4                       ;cierra el ciclo


;------------------------------------------------------------
;                  Declaración de Subrutinas
;------------------------------------------------------------

tmp_100_mc
   movwf _np_tiempo
   goto tmp_100_mc_1
tmp_100_mc_bucle2
   nop
   nop
   nop
   nop
   nop
   nop
   nop
tmp_100_mc_1
   movlw .22
   movwf _np_tiempo1
tmp_100_mc_bucle1
   movlw .150
   movwf _np_tiempo2
tmp_100_mc_bucle
   decfsz _np_tiempo2,1
   goto tmp_100_mc_bucle
   decfsz _np_tiempo1,1
   goto tmp_100_mc_bucle1
   nop
   decfsz _np_tiempo,1
   goto tmp_100_mc_bucle2
   return



;------------------------------------------------------------
;                  DATOS EN MEMORIA EEPROM
;------------------------------------------------------------
   org  0x2100
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff
   data   0xff

 End

EL ESQUEMA EN ISIS
« Última modificación: 17 de Enero de 2014, 16:08:01 por Scufflee »

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: PIC en protoboard
« Respuesta #10 en: 17 de Enero de 2014, 16:08:18 »
Amigo 2 cosas a tu ultimo mensaje:

- El pin 16 es uno de los terminales del oscilador. Al tocarlo introduces ruido y puede activare el oscilador :shock:
- Isis es un simulador y como tal simula. En la realidad si quieres que e funcione debes de colocar el cristal y los condensadores. Si  no, no te va a funcionar, salvo que configures el pic con oscilador interno, si es que el pic lo tiene, en ese caso y solo en ese caso odrías ahorrarte el cristal.
Todos los días se aprende algo nuevo.

Desconectado Scufflee

  • PIC10
  • *
  • Mensajes: 26
Re: PIC en protoboard
« Respuesta #11 en: 17 de Enero de 2014, 16:12:20 »
Amigo 2 cosas a tu ultimo mensaje:

- El pin 16 es uno de los terminales del oscilador. Al tocarlo introduces ruido y puede activare el oscilador :shock:
- Isis es un simulador y como tal simula. En la realidad si quieres que e funcione debes de colocar el cristal y los condensadores. Si  no, no te va a funcionar, salvo que configures el pic con oscilador interno, si es que el pic lo tiene, en ese caso y solo en ese caso odrías ahorrarte el cristal.

Según había leído el 16F628A tiene oscilador interno y creo que configuré para que lo usara :s

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: PIC en protoboard
« Respuesta #12 en: 17 de Enero de 2014, 16:17:21 »
No había visto el 2º código, ahí si esta como interno en el 1º No.
de todas formas en el esquema no lo veo bien pero no puedo distinguir si tienes puesta a + el pic MCLR a través de una r. So no la has puesto puede que se te este disparando el reset.
Todos los días se aprende algo nuevo.

Desconectado Scufflee

  • PIC10
  • *
  • Mensajes: 26
Re: PIC en protoboard
« Respuesta #13 en: 17 de Enero de 2014, 16:26:57 »
Conecte el mclr a través de una r de 10k a positivo y un condensador de 4,7u en la salida del regulador de voltaje, pero sigue igual.