Autor Tema: Programar 12F629 con Flowcode  (Leído 4699 veces)

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

Desconectado xcalibour

  • PIC10
  • *
  • Mensajes: 10
Programar 12F629 con Flowcode
« en: 14 de Marzo de 2016, 08:30:27 »
Hola nuevamente amigos de todopic, esta vez estoy aqui porque tengo una duda, estoy tratando de programar mi PIC12F629 con flowcode, todo muy lindo el programita funciona perfecto en el simulador (les comento que es solamente un led que parpadea), el compilador no me tira ningun error, programo el pic con el icprog sin problemas, leo el dispositivo y aparece el programa, en fin todo muy lindo, pero cuando voy al protoboard no pasa naranja, lo que pasa es que no se como deberia ser la conexion, por eso les muestro como lo conecte yo, y asi me dicen que estoy haciendo mal, les paso una foto de mi diagrama de conexiones:



Se agradece cualquier dato, saludos y gracias!

Desconectado lmtreser

  • PIC16
  • ***
  • Mensajes: 133
    • Automatismos Mar del Plata
Re:Programar 12F629 con Flowcode
« Respuesta #1 en: 14 de Marzo de 2016, 09:52:02 »
Hola, el esquema se ve bien. Configuraste el pin GP0 como salida? Como configuraste el reloj? No veo cristal por ejemplo. Y el pin de reset? Esta habilitado?

Saludos!

Desconectado xcalibour

  • PIC10
  • *
  • Mensajes: 10
Re:Programar 12F629 con Flowcode
« Respuesta #2 en: 14 de Marzo de 2016, 10:30:58 »
Hola, no se como se hace eso en el flowcode, aca pedo el archivo ASM que genera el Flowcode para que lo veas y me digas, muchas gracias por contestar!!

Código: [Seleccionar]
;/////////////////////////////////////////////////////////////////////////////////
;// Code Generator: BoostC Compiler - http://www.sourceboost.com
;// Version       : 7.03
;// License Type  : Pro License
;// Limitations   : PIC12,PIC16 max code size:Unlimited, max RAM banks:Unlimited
;/////////////////////////////////////////////////////////////////////////////////

include "P12F629.inc"
; Heap block 0, size:27 (0x00000044 - 0x0000005E)
__HEAP_BLOCK0_BANK               EQU 0x00000000
__HEAP_BLOCK0_START_OFFSET       EQU 0x00000044
__HEAP_BLOCK0_END_OFFSET         EQU 0x0000005E
; Heap block 1, size:0 (0x00000000 - 0x00000000)
__HEAP_BLOCK1_BANK               EQU 0x00000000
__HEAP_BLOCK1_START_OFFSET       EQU 0x00000000
__HEAP_BLOCK1_END_OFFSET         EQU 0x00000000
; Heap block 2, size:0 (0x00000000 - 0x00000000)
__HEAP_BLOCK2_BANK               EQU 0x00000000
__HEAP_BLOCK2_START_OFFSET       EQU 0x00000000
__HEAP_BLOCK2_END_OFFSET         EQU 0x00000000
; Heap block 3, size:0 (0x00000000 - 0x00000000)
__HEAP_BLOCK3_BANK               EQU 0x00000000
__HEAP_BLOCK3_START_OFFSET       EQU 0x00000000
__HEAP_BLOCK3_END_OFFSET         EQU 0x00000000
gbl_status                       EQU 0x00000003 ; bytes:1
gbl_14_LSR                       EQU 0x00000020 ; bytes:4
gbl_float_detect_tininess        EQU 0x00000039 ; bytes:1
gbl_float_rounding_mode          EQU 0x0000003A ; bytes:1
gbl_float_exception_flags        EQU 0x0000003B ; bytes:1
gbl_15_gbl_aSig                  EQU 0x00000024 ; bytes:4
gbl_15_gbl_bSig                  EQU 0x00000028 ; bytes:4
gbl_15_gbl_zSig                  EQU 0x0000002C ; bytes:4
gbl_15_gbl_aExp                  EQU 0x0000003C ; bytes:1
gbl_15_gbl_bExp                  EQU 0x0000003D ; bytes:1
gbl_15_gbl_zExp                  EQU 0x00000037 ; bytes:2
gbl_15_gbl_aSign                 EQU 0x0000003E ; bytes:1
gbl_15_gbl_bSign                 EQU 0x0000003F ; bytes:1
gbl_15_gbl_zSign                 EQU 0x00000040 ; bytes:1
gbl_15_gbl_zSigZero              EQU 0x00000041 ; bytes:1
gbl_15_gbl_ret                   EQU 0x00000030 ; bytes:4
gbl_indf                         EQU 0x00000000 ; bytes:1
gbl_tmr0                         EQU 0x00000001 ; bytes:1
gbl_pcl                          EQU 0x00000002 ; bytes:1
gbl_fsr                          EQU 0x00000004 ; bytes:1
gbl_gpio                         EQU 0x00000005 ; bytes:1
gbl_pclath                       EQU 0x0000000A ; bytes:1
gbl_intcon                       EQU 0x0000000B ; bytes:1
gbl_pir1                         EQU 0x0000000C ; bytes:1
gbl_tmr1l                        EQU 0x0000000E ; bytes:1
gbl_tmr1h                        EQU 0x0000000F ; bytes:1
gbl_t1con                        EQU 0x00000010 ; bytes:1
gbl_cmcon                        EQU 0x00000019 ; bytes:1
gbl_option_reg                   EQU 0x00000081 ; bytes:1
gbl_trisio                       EQU 0x00000085 ; bytes:1
gbl_pie1                         EQU 0x0000008C ; bytes:1
gbl_pcon                         EQU 0x0000008E ; bytes:1
gbl_osccal                       EQU 0x00000090 ; bytes:1
gbl_wpu                          EQU 0x00000095 ; bytes:1
gbl_iocb                         EQU 0x00000096 ; bytes:1
gbl_ioc                          EQU 0x00000096 ; bytes:1
gbl_vrcon                        EQU 0x00000099 ; bytes:1
gbl_eedata                       EQU 0x0000009A ; bytes:1
gbl_eeadr                        EQU 0x0000009B ; bytes:1
gbl_eecon1                       EQU 0x0000009C ; bytes:1
gbl_eecon2                       EQU 0x0000009D ; bytes:1
CompTempVar2182                  EQU 0x00000042 ; bytes:1
delay_ms_00000_arg_del           EQU 0x00000043 ; bytes:1
delay_s_00000_arg_del            EQU 0x00000042 ; bytes:1
Int1Context                      EQU 0x0000005F ; bytes:1
Int1BContext                     EQU 0x00000034 ; bytes:3
ORG 0x00000000
GOTO _startup
ORG 0x00000004
MOVWF Int1Context
SWAPF STATUS, W
BCF STATUS, RP0
MOVWF Int1BContext
SWAPF PCLATH, W
MOVWF Int1BContext+D'1'
SWAPF FSR, W
MOVWF Int1BContext+D'2'
BCF PCLATH,3
BCF PCLATH,4
GOTO interrupt
ORG 0x00000010
delay_ms_00000
; { delay_ms ; function begin
MOVF delay_ms_00000_arg_del, F
BTFSS STATUS,Z
GOTO label1
RETURN
label1
MOVLW 0xF5
label2
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
ADDLW 0xFF
BTFSS STATUS,Z
GOTO label2
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ delay_ms_00000_arg_del, F
GOTO label1
RETURN
; } delay_ms function end

ORG 0x00000038
delay_s_00000
; { delay_s ; function begin
label3
MOVLW 0xFA
MOVWF delay_ms_00000_arg_del
CALL delay_ms_00000
MOVLW 0xFA
MOVWF delay_ms_00000_arg_del
CALL delay_ms_00000
MOVLW 0xFA
MOVWF delay_ms_00000_arg_del
CALL delay_ms_00000
MOVLW 0xFA
MOVWF delay_ms_00000_arg_del
CALL delay_ms_00000
DECFSZ delay_s_00000_arg_del, F
GOTO label3
RETURN
; } delay_s function end

ORG 0x00000047
main
; { main ; function begin
MOVLW 0x07
BCF STATUS, RP0
MOVWF gbl_cmcon
MOVLW 0xC0
BSF STATUS, RP0
MOVWF gbl_option_reg
label4
MOVLW 0xFE
BSF STATUS, RP0
ANDWF gbl_trisio, W
MOVWF gbl_trisio
MOVLW 0xFE
BCF STATUS, RP0
ANDWF gbl_gpio, W
MOVWF CompTempVar2182
MOVLW 0x01
IORWF CompTempVar2182, W
MOVWF gbl_gpio
MOVLW 0x02
MOVWF delay_s_00000_arg_del
CALL delay_s_00000
MOVLW 0xFE
BSF STATUS, RP0
ANDWF gbl_trisio, W
MOVWF gbl_trisio
MOVLW 0xFE
BCF STATUS, RP0
ANDWF gbl_gpio, W
MOVWF gbl_gpio
MOVLW 0x02
MOVWF delay_s_00000_arg_del
CALL delay_s_00000
GOTO label4
; } main function end

ORG 0x00000067
_startup
MOVLW 0xD5
BCF STATUS, RP0
MOVWF gbl_14_LSR
MOVLW 0xC4
MOVWF gbl_14_LSR+D'1'
MOVLW 0xBB
MOVWF gbl_14_LSR+D'2'
MOVLW 0xDC
MOVWF gbl_14_LSR+D'3'
CLRF gbl_15_gbl_aSig
CLRF gbl_15_gbl_aSig+D'1'
CLRF gbl_15_gbl_aSig+D'2'
CLRF gbl_15_gbl_aSig+D'3'
CLRF gbl_15_gbl_bSig
CLRF gbl_15_gbl_bSig+D'1'
CLRF gbl_15_gbl_bSig+D'2'
CLRF gbl_15_gbl_bSig+D'3'
CLRF gbl_15_gbl_zSig
CLRF gbl_15_gbl_zSig+D'1'
CLRF gbl_15_gbl_zSig+D'2'
CLRF gbl_15_gbl_zSig+D'3'
CLRF gbl_15_gbl_aExp
CLRF gbl_15_gbl_bExp
CLRF gbl_15_gbl_zExp
CLRF gbl_15_gbl_zExp+D'1'
CLRF gbl_15_gbl_aSign
CLRF gbl_15_gbl_bSign
CLRF gbl_15_gbl_zSign
CLRF gbl_15_gbl_zSigZero
CLRF gbl_15_gbl_ret
CLRF gbl_15_gbl_ret+D'1'
CLRF gbl_15_gbl_ret+D'2'
CLRF gbl_15_gbl_ret+D'3'
CLRF gbl_float_rounding_mode
CLRF gbl_float_exception_flags
CLRF gbl_float_detect_tininess
BCF PCLATH,3
BCF PCLATH,4
GOTO main
ORG 0x0000008E
interrupt
; { interrupt ; function begin
BCF STATUS, RP0
SWAPF Int1BContext+D'2', W
MOVWF FSR
SWAPF Int1BContext+D'1', W
MOVWF PCLATH
SWAPF Int1BContext, W
MOVWF STATUS
SWAPF Int1Context, F
SWAPF Int1Context, W
RETFIE
; } interrupt function end

END

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:Programar 12F629 con Flowcode
« Respuesta #3 en: 14 de Marzo de 2016, 13:04:46 »
Debes ir a :

Build -> opciones de proyecto -> configurar chip

Eliges las opciones deseadas tanto en configurar chip: pines de reset, oscilador (externo o interno),...
En opciones de proyecto la velocidad del cristal.

date cuenta que si tienes configurado como oscilador externo necesitas el cristal entre los pines 2 y 3 con sus respectivos condensadores. En simulación no necesitas el cristal

Luego en el pin 4 que es de reset si lo usas debes de fijar el potencial al nivel que te indica el datasheet bien poniéndolo a masa o a 5V, y a través de una resistencia mejor.
Evidentemente el pin 7 debe de estar como salida.
Una vez que se cumple lo anterior nada mas dar tensión al pic te debería de oscilar el led.
Todos los días se aprende algo nuevo.

Desconectado xcalibour

  • PIC10
  • *
  • Mensajes: 10
Re:Programar 12F629 con Flowcode
« Respuesta #4 en: 14 de Marzo de 2016, 13:21:28 »
Listo ahora me pongo a ver y comento como me fue, muchas gracias!

Desconectado xcalibour

  • PIC10
  • *
  • Mensajes: 10
Re:Programar 12F629 con Flowcode
« Respuesta #5 en: 14 de Marzo de 2016, 15:58:46 »
Bueno les comento que ahi en las configuraciones que me dijo el amigo Fer_TACA encontre que el PIC queria usar el clock externo, entonces volvi a programar todo y lo que me sucede es que el led se queda encendido, y tengo un voltaje de 2,4 aprox a la salida de la pata 7 que es la que estaria configurada como salida, entonces me puse a fijar el tema del reset y no encontre nada en la hoja de datos, salvo tambien lo que me dijo Fer_TACA que es la pata 4, y resulta que en dicha pata tengo como 3,4V y si le pongo un cable o la toco con el dedo se apaga el led y no prende hasta que no le saco el cable o el dedo, aunque no conecte el cable a ingun lugar queda apagado hasta tanto se lo saque, que mas tendria que revisar? como se configura eso con el flowcode? Gracias!

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:Programar 12F629 con Flowcode
« Respuesta #6 en: 15 de Marzo de 2016, 02:56:10 »
Si colocas el oscilador como externo en tu montaje fisico debs de poner el cristal de la frecuencia que desees y ese valor de freceuncia debes de colocarlo en las configuraciones tambien. El cristal debe de llevar los condensadores asociados si o si.
Elpin de reset normalmnet ehya que colocal a +5v, mejor atraves de una resistencia de unos 4,7K.

Tambien las placas protoboar debes de comprobar las conexiones ,ya que se suelen producir con mucha frecuencia flsos contactos. con eso deberia de funcioar si o si
Todos los días se aprende algo nuevo.

Desconectado xcalibour

  • PIC10
  • *
  • Mensajes: 10
Re:Programar 12F629 con Flowcode
« Respuesta #7 en: 15 de Marzo de 2016, 07:07:44 »
Hola denuevo, les comento que al fin lo pude hacer funcionar, le cambie una configuracion del clock que me parecio que iba mejor y le puse la R de 4,7K a +5V, la configuracion que tenia era la siguiente: Build-->Opciones del Proyecto-->Opciones Generales-->Velocidad del Reloj 10000000
y en Configurar Chip elegi la opcion Oscillator: Internal RC no clock. Con eso quedo joyita, y aqui viene mi otra pregunta, si yo quisiera usar las 6 salidas para distintos leds (esto en teoria se puede hacer) como hago con el tema del reset? porque si saco la R se me queda prendido siempre, muchas gracias nuevamente, y a medida que avance en mi proyecto les comento como voy!

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:Programar 12F629 con Flowcode
« Respuesta #8 en: 15 de Marzo de 2016, 09:55:51 »
Para usar las patillas como salidas, en configuraciones debes de seleccionar el reloj como interno y poner la patilla de reset como I/O. Con eso los pines 2 y 3 (conexion del oscilador) ya puedes usarlos como entradas o salidas.
Pero ojo que algunos micros esta patilla solo se puede configurar como entrada y no se puede utilzar como salida.
Todos los días se aprende algo nuevo.

Desconectado xcalibour

  • PIC10
  • *
  • Mensajes: 10
Re:Programar 12F629 con Flowcode
« Respuesta #9 en: 15 de Marzo de 2016, 10:11:46 »
Bien, voy a darle un intento a ver como me va, muchas gracias!!!!


 

anything