Autor Tema: Problemas grabando Eprom en PIC 16f84  (Leído 1794 veces)

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

Desconectado Iqas

  • PIC10
  • *
  • Mensajes: 2
Problemas grabando Eprom en PIC 16f84
« en: 01 de Noviembre de 2005, 06:08:00 »
Hola a todos!

Espero que me echeis una mano, ya que llegue a un punto que no veo la luz. Estoy realizando un circuito basado en el pic 16f84, para controlar el riego, la alarma,... Esto lo controlo desde un servidor en Linux a traves del puerto serie. He realizado un sistema repetidor del puerto con un Max232, para poder conectar hasta 128 m�dulos. En estos momentos estoy realizando las rutinas de asignaci�n de n�mero de modulo (Hasta ahora todo el desarrollo lo he realizado con un m�dulo). El n�mero de m�dulo se deber�a grabar en la direcci�n 0 de la memoria Eprom, algo que ocurre si la llamada a la rutina la hago en la rutina MAIN, pero si lo hago desde donde debo hacerlo, la memoria no se graba.

No consigo enviar el fichero adjunto. Lo dejo en http://www.lucus.org/test/main.asm por si le quereis echar un vistazo.

Aqui transcribo un par de rutinas.

 ;************** PROGRAMA PRINCIPAL **************

MAIN
        clrf    INTCON          ; reset interrupts (disable all)
        RS232init               ; RS232 initialization
        clrf    FLAGreg         ; initialize all flags
        BANK1
        movlw   B"11110"        ;RA0 = salida, resto= entradas
        movwf   PORTA
        movlw   B"00000001"     ;RB0 = entrada, resto= salidas
        movwf   PORTB
        BANK0
        movlw B"10000000"       ;Todas las salidas apagadas
        movwf PORTB
        movlw B"00000000"       ;Desactiva el latch
        movwf PORTB

        BANK0   ; CARGAMOS EN REGISTRO EL NUMERO DE MODULO
        movlw 0x00
        movwf EEADR
        BANK1
        bsf EECON1, RD
        BANK0
        movf EEDATA, W
        movwf   MODULO  ; Modulo contiene el numero de modulo


;       call _WRE1      ; Graba la eprom !!AQUI FUNCIONA!! Muchas risasDDD

        movlw   0x00    ; Por defecto no estamos en modo comando
        movwf   MODO
        movlw   0x04 ; Nombre empieza en la cuarta posicion
        movwf   N_CONT  ; Por defecto contador de nombre a 0

LOOP    btfsc   RSflag          ; Mira si hay datos en la entrada RS-232
        call    Recibe_byte     ; Si hay datos, llama a la rutina
        goto    LOOP

; Rutina de grabacion
_WRE1   movlw d"167"
        movwf EEDATA    ; Nuevo numero de modulo en W
;       movwf MODULO    ; Modulo contiene el numero de modulo
        movlw E_MOD
        movwf EEADR     ; Direccion en EEADR
loopl
        bcf     INTCON , GIE
        btfsc   INTCON , GIE
        goto    loopl
        bsf     STATUS , RP0
        bcf     EECON1,EEIF
        bsf     EECON1,WREN
        movlw   0x55
        movwf   EECON2
        movlw   0xAA
        movwf   EECON2
        bsf     EECON1 , WR
        bcf     EECON1,WREN
        bsf     INTCON , GIE
        bcf     STATUS , RP0
        return



La rutina Recibe_byte, comprueba la petici�n y si todo es corecto llama a c_numero desde donde ejecuta la rutina de grabaci�n, sin �xito:

c_numero                ; Cambia el numero de modulo
;
;
        call _WRE1

; ESTA LLAMADA NO FUNCIONA!!!!

; Enciendo la salida 1 como comprobacion
        bsf PORTB,7     ; Activa el latch
        bsf PORTB,6     ;Activa la salida 1
        bcf PORTB,7
        movlw 0x00      ; Entramos en modo normal
        movwf   MODO
        goto NO_DATA


Un saludo a todos y gracias por vuestro tiempo.

Desconectado Y@el

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 415
RE: Problemas grabando Eprom en PIC 16f84
« Respuesta #1 en: 01 de Noviembre de 2005, 10:14:00 »
Responder, has tomado en cuenta los 10ms, q hay entre la grabacion de la EEPROM, este es mucha veces el factor mas importante, y donde solemos caer Muchas risas

Desconectado Iqas

  • PIC10
  • *
  • Mensajes: 2
RE: Problemas grabando Eprom en PIC 16f84
« Respuesta #2 en: 01 de Noviembre de 2005, 11:36:00 »
Hola!!

Si, pero ¿hay que hacer algo especial después de grabar la eprom?. En principio solo pasaría que el dato tardaría en aparecer o es necesario hacer un bucle de espera?
He probado con esto:

Esper   BTFSC   EECON1,WR       ; Y espero hasta que se complete
        GOTO    Esper           ; la escritura.

pero tengo el  mismo problema. Además no entiendo que si la rutina la pones al inicio si lo haga. ¿Podrá ser problema de algún registro mal iniciado?

Un saludo.
Iqas.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
RE: Problemas grabando Eprom en PIC 16f84
« Respuesta #3 en: 01 de Noviembre de 2005, 16:22:00 »
Las rutinas DEBEN ir al inicio en un programa en assembler, por el tema de la paginacion de memoria.Sonrisa GiganteSonrisa Gigante
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado fenix_jn

  • PIC18
  • ****
  • Mensajes: 418
RE: Problemas grabando Eprom en PIC 16f84
« Respuesta #4 en: 01 de Noviembre de 2005, 16:23:00 »
WR es una bandera que se activa por programa y al terminar el ciclo NO SE BORRA, hay que hacerlo manualmente, el flag correcto es EECON1, EEIF, este si se desactiva luego de que el periodo de escritura ha terminado.


 

anything