Autor Tema: Self-write con el PIC12F617  (Leído 3513 veces)

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

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Self-write con el PIC12F617
« en: 17 de Abril de 2017, 12:44:06 »
Que tal amigos del foro. Les comento que estoy en una situación un tanto rara con el PIC12F617, el cual tiene la característica de self-write. Estoy tratando de guardar unos datos de prueba en la propia memoria de programa a partir de la dirección $7FA hasta la $7FF. Empecé mis intentos completamente en PicBasic Pro, después usando ensamblador, luego combinando PBP y ensamblador y existen partes en que en la memoria no se logran guardar los datos. En la simulacion en MPLAB todo funciona bien, pero en la realidad no es asi.

Este es el código que uso en PBP:

Código: QBasic/QuickBASIC
  1. I           VAR byte
  2. J           var byte
  3. A           var word
  4. H           VAR WORD
  5. INICIO:     TRISIO = %11011111  'Configura puerto GPIO.5 como salida
  6.             ANSEL = 0   'Configura puerto como digital
  7.             LOW LED
  8.             J = 0
  9.             FOR A=$7A0 TO $7FF STEP 4
  10.                 FOR I = 0 TO 3
  11.                     H = A + I
  12.                     WRITECODE H,J
  13.                     J = J+1
  14.                 NEXT    I
  15.             NEXT    A
  16.            HIGH    LED
  17.                
  18. AGAIN:     GOTO    again

« Última modificación: 17 de Abril de 2017, 12:49:47 por elreypic2 »

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:Self-write con el PIC12F617
« Respuesta #1 en: 17 de Abril de 2017, 13:18:55 »
Este es otro intento que realizo, en este combino PBP con ensamblador.

Código: QBasic/QuickBASIC
  1. I           VAR byte
  2. PM_ADDR     VAR WORD
  3. PM_ADDRL    VAR PM_ADDR.LOWBYTE
  4. PM_ADDRH    VAR PM_ADDR.HIGHBYTE
  5. ADC_CH0     VAR WORD
  6. ADC_CH0_L   VAR ADC_CH0.LOWBYTE
  7. ADC_CH0_H   VAR ADC_CH0.HIGHBYTE
  8. INICIO:     TRISIO = %11011111  'Configura puerto GPIO.5 como salida
  9.             ANSEL = 0   'Configura puerto como digital
  10.             LOW LED
  11.           FOR PM_ADDR = $7A0 TO $7FF STEP 4
  12.                 PMADRH = PM_ADDRH
  13.                 PMADRL = PM_ADDRL - 1
  14.                 FOR i = 0 TO 3
  15.                     PMADRL = PMADRL + 1
  16.                     PMDATH = ADC_CH0_H
  17.                     PMDATL = ADC_CH0_L
  18.                     ADC_CH0 = ADC_CH0 + 1
  19.                     GOSUB   WR_D
  20.                 NEXT I
  21.             NEXT PM_ADDR
  22.             HIGH    LED
  23.                
  24. AGAIN:     GOTO    again
  25.  
  26. WR_D:
  27. ASM
  28.     BANKSEL PMCON1
  29.     BSF     PMCON1,WREN     ;Habilita la escritura de la memoria de programa
  30.     MOVLW   55H
  31.     MOVWF   PMCON2
  32.     MOVLW   0AAH
  33.     MOVWF   PMCON2
  34.     BSF     PMCON1,WR       ;Comienza la escritura en la memoria de programa
  35.     NOP
  36.     NOP
  37.     CLRF    PMCON1
  38.     BANKSEL _PM_ADDRL
  39. ENDASM
  40.     RETURN[attachment id=1 msg=396290]

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:Self-write con el PIC12F617
« Respuesta #2 en: 06 de Mayo de 2017, 21:18:47 »
He encontrado el problema para este tema.
Todo el problema esta en mi programador PICkit2, que no lee correctamente esos datos. He utilizado un pickit3 y bingo! todo esta perfecto.

elreypic.