Autor Tema: Crossing page boundary  (Leído 13684 veces)

0 Usuarios y 8 Visitantes están viendo este tema.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Crossing page boundary
« Respuesta #15 en: 16 de Septiembre de 2007, 19:32:17 »
Con lo cual se me ocurre que si conozco en que pagina esta tal variable, estare llendo a esa pagina, a encontrar por ejemplos RUTINAS...es decir estaria usando el BANKSEL en lugar del PAGESEL, para iguales propositos !!!

Es eso correcto ??? O hay diferencia entre BANCOS DE MEMORIA y PAGINAS ???  :shock:

QUE CONFUSION MAMITA, y a mi el PAGESEL que no me anda !!!  :-)


De verdad que estas muy muy confundido.... El pic tiene una arquitectura harvard, la memoria de programa está separada de la de datos y además tienen un "ancho" diferente.  En un pic 16F, la memoria de programa tiene 14bits por posición y la de datos 8 bits por posición.

Un banksel configurará el RP0 y RP1 para que apunten al "bancos de memoria" adecuado y un pagesel modificara el PROGRAM COUNTER para que apunten a la posición de memoria de programa!

Tal vez estes acostumbrado a otras arquitecturas (como la de las pcs) donde memoria de programa y de datos cohabitan.

PD: sin que pongas el código que no te funciona, difícil saber qué te sucede.
Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Crossing page boundary
« Respuesta #16 en: 16 de Septiembre de 2007, 19:37:31 »
Bueno, todo tiene una explicación. Si bien la más cómoda sería usar la macro PAGESEL(formada por una instruccion movlw xxx y otra movwf PCLATH) en lugar de la PAGESELW(solo la instruccion movlw xxx), hace un tiempo atrás tuve problemas con la PAGESEL. Hubo una tanda(aunque no sé si el error no continúa) de versiones del MPLAB en las que sencillamente el PAGESEL no hacía absolutamente nada. Ponías un PAGESEL y en el código de salida no generaba instrucción alguna(y en más de una ocasión me ha generado instrucciones completamente bizarras).
Si en las nuevas versiones el PAGESEL efectivamente mueve el literal al acumulador y luego lo copia al registro PCLATH, aliento a usar dicha macro en reemplazo de la PAGESELW.

:shock: :shock: la verdad solamente me ocurrió eso en pics que no tenían paginas por eso el MPASM no generaba las instrucciones.  ¿Es posible que el pic del proyecto estuviera mal seleccionado?

Pregunto porque el MPASM rara vez cambia, el que cambia suele ser el IDE; los include files que se agregan, el simulador que permite soportar nuevos pics (mediante el agregado de archivos .dev, no siempre cambia el MPSIM) o demas yerbas pero el ejecutable en sí no cambia con mucha frecuencia que digamos.  Hace rato está la versión 5.1  del MPASM.

Saludos


- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado Resistencio

  • PIC12
  • **
  • Mensajes: 82
Re: Crossing page boundary
« Respuesta #17 en: 16 de Septiembre de 2007, 20:47:18 »
y BUENO, aca esta, el que lo hace andar !!!

Lo hice como para probar, pero ni por sencillo anda !!!

================================================

LIST      P=16F648a, F=INHX8M
            include <P16F648a.inc>
       ERRORLEVEL -302 , -305
       RADIX   HEX
      
; *******************************************
; *       DECLARACION DE VARIABLES          *
; *******************************************

   CBLOCK   0x20
   AUXA, AUXB, AUXC
   ENDC

; *******************************************
; *                COMIENZO                 *
; *******************************************

   ORG      0x00
   GOTO   INICIO   

INICIO   NOP
   BANKSEL   PORTA
   CLRF   PORTA
   MOVLW   0x07
   MOVWF   CMCON
   CLRF    PORTB
   BANKSEL   TRISA
   MOVLW   0xFF            
   MOVWF   TRISA      ;config. PORTA con *11111111*
   MOVLW   0x00      
   MOVWF   TRISB      ;config. PORTB con *00000000*
   MOVLW   0x07     
   MOVWF   OPTION_REG
   BANKSEL   PORTA
   CLRF   AUXA
   CLRF   AUXB
   CLRF   AUXC
   
; *************************************
; *          INICIA RUTINA            *
; *************************************

MAIN   NOP   
   BSF      PORTB  , 04
   PAGESEL   DEL2M
   CALL   DEL2M
   BCF      PORTB  , 04
   PAGESEL   DEL1M
   CALL   DEL1M
   GOTO   MAIN
   
; *******************************************
; *            DEMORA 100 ms                *
; *******************************************

DEL1M   MOVLW   0x04      ;d'4'
   MOVWF   AUXC
DE10M   MOVLW   0x0A            ;d'10'
   MOVWF   AUXB
DE20M   MOVLW   0xFA            ;d'250' 
   MOVWF   AUXA
DE22M   NOP         ;aprox. = (10 * 1us) * 250 = 2,5 ms   
   GOTO   $+1
   GOTO   $+1
   GOTO   $+1
   DECFSZ   AUXA  , F   ;son 2 ciclos en DECFSZ
   GOTO   DE22M
   DECFSZ  AUXB  , F
   GOTO   DE20M      ;hasta aca demora = 2,5 ms * 10= 25 ms
   DECFSZ   AUXC  , F
   GOTO   DE10M   
   RETURN         ;total demora 25 ms * 4 = 100 ms


   ORG   0x900

; *******************************************
; *            DEMORA 100 ms                *
; *******************************************

DEL2M   MOVLW   0x04      ;d'4'
   MOVWF   AUXC
DE12M   MOVLW   0x0A            ;d'10'
   MOVWF   AUXB
DE222M   MOVLW   0xFA            ;d'250' 
   MOVWF   AUXA
DE222   NOP         ;aprox. = (10 * 1us) * 250 = 2,5 ms   
   GOTO   $+1
   GOTO   $+1
   GOTO   $+1
   DECFSZ   AUXA  , F   ;son 2 ciclos en DECFSZ
   GOTO   DE222
   DECFSZ  AUXB  , F
   GOTO   DE222M      ;hasta aca demora = 2,5 ms * 10= 25 ms
   DECFSZ   AUXC  , F
   GOTO   DE12M   
   RETURN         ;total demora 25 ms * 4 = 100 ms

; ******************************************
; *                 FIN                    *
; ******************************************
         
   END

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Crossing page boundary
« Respuesta #18 en: 16 de Septiembre de 2007, 21:13:03 »
Bueno, todo tiene una explicación. Si bien la más cómoda sería usar la macro PAGESEL(formada por una instruccion movlw xxx y otra movwf PCLATH) en lugar de la PAGESELW(solo la instruccion movlw xxx), hace un tiempo atrás tuve problemas con la PAGESEL. Hubo una tanda(aunque no sé si el error no continúa) de versiones del MPLAB en las que sencillamente el PAGESEL no hacía absolutamente nada. Ponías un PAGESEL y en el código de salida no generaba instrucción alguna(y en más de una ocasión me ha generado instrucciones completamente bizarras).
Si en las nuevas versiones el PAGESEL efectivamente mueve el literal al acumulador y luego lo copia al registro PCLATH, aliento a usar dicha macro en reemplazo de la PAGESELW.

:shock: :shock: la verdad solamente me ocurrió eso en pics que no tenían paginas por eso el MPASM no generaba las instrucciones.  ¿Es posible que el pic del proyecto estuviera mal seleccionado?

Pregunto porque el MPASM rara vez cambia, el que cambia suele ser el IDE; los include files que se agregan, el simulador que permite soportar nuevos pics (mediante el agregado de archivos .dev, no siempre cambia el MPSIM) o demas yerbas pero el ejecutable en sí no cambia con mucha frecuencia que digamos.  Hace rato está la versión 5.1  del MPASM.

Saludos

Hmm...Ahora me haces poner en duda si no fue una burrada mía, pero no creo...porque estoy seguro que era un proyecto con un 16F877A...
Ahora se hade dificil conseguir la evidencia. Igual estoy hablando hace más de un año atrás.



Hola Resistencio.

El código anda perfecto. Desactivá el watchdog timer y tiene que salir andando...no es problema de paginación...

Saludos.
« Última modificación: 16 de Septiembre de 2007, 21:16:39 por BrunoF »
"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 Resistencio

  • PIC12
  • **
  • Mensajes: 82
Re: Crossing page boundary
« Respuesta #19 en: 16 de Septiembre de 2007, 21:17:25 »
A mi me parecia que era asi nomas, como decis MAUNIX, pero como en la explicacion dice:

banksel REGISTRO  --> hará un bsf y bcf del STATUS,RP0 y STATUS,RP1   para que apunten a la página donde está definida la variable

pagesel SUBRUTINA  --> hará una carga del PCLATH con los bits adecuados de acuerdo a la página donde esté SUBRUTINA


Osea siempre hablabas de PAGINA, eso me confundia...me parece que tiene mas que ver con una cuestion de definiciones...una cosa es PAGINAS y otras BANCOS, creo que eso me genera mucha confusion...como siempre digo esto a riesgo de estar equivocado, y a la espera que se pueda aclarar si es lo mismo en cuanto a definicion, en cuanto a la arquitectura esta bastante claro...(cada vez me gusta mas la VON NEWMAN, creo que es la que usa MOTOROLA)

SALUDOS !!! a tutti !!!
______________________________
"Justo a mi me toco ser YO" QUINO

Desconectado Resistencio

  • PIC12
  • **
  • Mensajes: 82
Re: Crossing page boundary
« Respuesta #20 en: 16 de Septiembre de 2007, 21:22:06 »
Pero como haces BRUNO ??? Cuando lo compilo me tira:

Message[306] Crossing page boundary -- ensure page bits are set.

Siempre hace lo mismo, y lo peor es que no anda el programa...tengo que desactivar el WDT en el WINPIC o en donde ???

Cada vez estoy  mas descorcertado, sera que tengo que usar ICPROG ???

Lo estoy haciendo ahora mismo...

SALUDOS !!!

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Crossing page boundary
« Respuesta #21 en: 16 de Septiembre de 2007, 21:23:28 »
banksel REGISTRO  --> hará un bsf y bcf del STATUS,RP0 y STATUS,RP1   para que apunten a la página donde está definida la variable

Lo importante es que habla de VARIABLE. Se esta refiriendo a una posicion de memoria.


pagesel SUBRUTINA  --> hará una carga del PCLATH con los bits adecuados de acuerdo a la página donde esté SUBRUTINA

Lo importante es que habla de SUBRUTINA. Se esta refiriendo a memoria de DATOS.

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 Resistencio

  • PIC12
  • **
  • Mensajes: 82
Re: Crossing page boundary
« Respuesta #22 en: 16 de Septiembre de 2007, 21:32:39 »
Gracias BRUNO esa es la diferencia que no veia...ahora esta mucho mas claro...VARIABLE y SUBRITINA !!! eso tiene sentido, totalmente !!! GRACIAS - GRACIAS !!!  :-)

Como haces para que no te tire el mensaje 306 que me dice a mi el MPLAB ???  :shock:

Desactive el WDT, y hace lo mismo !!!

O meto todo el programa en una sola pagina, o uso un 18F...XD !!!

ALGUIEN MAS QUE LO PUEDA COMPILAR....PLZ !!!

SALUDOS !!!

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Crossing page boundary
« Respuesta #23 en: 16 de Septiembre de 2007, 21:39:17 »
Primero: ¡No desesperes, hombre!

Tranquilo que todo tiene una explicación y por suerte estás lidiando en áreas técnicas/científicas que te aportarán la mayoría de las respuestas que necesitas con gran precisión.

Pero como haces BRUNO ??? Cuando lo compilo me tira:

Message[306] Crossing page boundary -- ensure page bits are set.


Nadie dijo que los "Messages" e inclusive "Warnings" fuesen malos.

Los Messages son meramente eso: mensajes. Es un detalle del MPASM que intenta avisarte que puede que estés cometiendo un error en este caso, por lo que te larga un mensaje diciendote simplemente que reuerdes eso. El MPASM no es tan inteligente(y dudo que algun dia lo sea ya que resulta practicamente imposible) como para saber si efectivamente se trata de un error o lo hiciste adrede. El simplemente te avisa. Lo mejor que puedes hacer tu es seguir su consejo y "Ensure page bits are set" es decir, asegurarte que hayas seteado los bits de paginacion correctamente.


Siempre hace lo mismo, y lo peor es que no anda el programa...tengo que desactivar el WDT en el WINPIC o en donde ???


Lo podés hacer desde muchos lugares. Pero hay que mantener la coherencia entre las partes.
Podés agregarle la configuración directamente al archivo .asm, y el MPASM se encargara de incluirla en el .hex generado. Si optas por esta opcion, asegurate que el ICPROG(lo he usado durante años antes de pasar al WINPIC800 y nunca tuve mayores problemas)  lea la configuracion desde el archivo .hex.

Ejemplo de configuracion(varia de PIC en PIC segun la disponibilidad de las diversas opciones/módulos)

__CONFIG    _CP_OFF & _PWRTE_ON&_WDT_OFF & _BODEN_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT

_CP_OFF= Code Protect OFF (no protejo la zona de datos contra lectura)
_PWRTE_ON= Power Up Timer ON (demora inicial al encender el PIC activada)
_WDT_OFF = WatchDog Timer OFF (perro guardian desactivado)
_BODEN_OFF=Brown Out Detection OFF (reiniciado ante deteccion de voltaje fuera de limite desactivado)
_MCLRE_OFF= Memory Clear OFF (no uso pin MCLR)
_INTRC_OSC_NOCLKOUT = Internal Clock Oscillator No Clock Out (oscilador interno, no genero clocks de salida)

Si querés ver la lista completa de posibilidades para setear la configuracion de un PIC, lo mas facil es abrir su archivo .inc y encontras el listado ahi dentro.

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 BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Crossing page boundary
« Respuesta #24 en: 16 de Septiembre de 2007, 22:18:30 »
Bueno...

1) No sos el hombre con más fortuna del planeta*;
2) El error es ajeno a la paginación;

El error:

El PIN RB4 del PIC 16F648A puede ser configurado para funcionar como PGM. Está asociado a la función de Low Voltage Programming(LVP). Si esta función está activa, el pin RB4 se utiliza como ENTRADA(por eso no variaba su estado).

¿Solución?

Indicarle al programa grabador(ICPROG en tu caso) que NO vamos a usar la función LVP.

Te paso el programa asm para que lo ensambles y pruebes.
El mensaje 306 se suprime como cualquier otro, con la instruccion ERRORLEVEL -numero


      LIST      P=16F648a, F=INHX8M
            include <P16F648a.inc>

   __CONFIG    _CP_OFF&_PWRTE_ON&_WDT_OFF & _BODEN_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT & _LVP_OFF

       ERRORLEVEL -302 , -305 , -306
       RADIX   HEX
     
; *******************************************
; *       DECLARACION DE VARIABLES          *
; *******************************************

   CBLOCK   0x20
   AUXA, AUXB, AUXC
   ENDC

; *******************************************
; *                COMIENZO                 *
; *******************************************

   ORG      0x00
   GOTO   INICIO   

INICIO   NOP
   BANKSEL   PORTA
   CLRF   PORTA
   MOVLW   0x07
   MOVWF   CMCON
   CLRF    PORTB
   BANKSEL   TRISA
   MOVLW   0xFF           
   MOVWF   TRISA      ;config. PORTA con *11111111*
   MOVLW   0x00     
   MOVWF   TRISB      ;config. PORTB con *00000000*
   MOVLW   0x07     
   MOVWF   OPTION_REG
   BANKSEL   PORTA
   CLRF   AUXA
   CLRF   AUXB
   CLRF   AUXC
   
; *************************************
; *          INICIA RUTINA            *
; *************************************

MAIN   NOP   
   BSF      PORTB  , 04
   PAGESEL   DEL2M
   CALL   DEL2M
   BCF      PORTB  , 04
   PAGESEL   DEL1M
   CALL   DEL1M
   GOTO   MAIN
   
; *******************************************
; *            DEMORA 100 ms                *
; *******************************************

DEL1M   MOVLW   0x04      ;d'4'
   MOVWF   AUXC
DE10M   MOVLW   0x0A            ;d'10'
   MOVWF   AUXB
DE20M   MOVLW   0xFA            ;d'250' 
   MOVWF   AUXA
DE22M   NOP         ;aprox. = (10 * 1us) * 250 = 2,5 ms   
   GOTO   $+1
   GOTO   $+1
   GOTO   $+1
   DECFSZ   AUXA  , F   ;son 2 ciclos en DECFSZ
   GOTO   DE22M
   DECFSZ  AUXB  , F
   GOTO   DE20M      ;hasta aca demora = 2,5 ms * 10= 25 ms
   DECFSZ   AUXC  , F
   GOTO   DE10M   
   RETURN         ;total demora 25 ms * 4 = 100 ms


   ORG   0x900

; *******************************************
; *            DEMORA 100 ms                *
; *******************************************

DEL2M   MOVLW   0x04      ;d'4'
   MOVWF   AUXC
DE12M   MOVLW   0x0A            ;d'10'
   MOVWF   AUXB
DE222M   MOVLW   0xFA            ;d'250' 
   MOVWF   AUXA
DE222   NOP         ;aprox. = (10 * 1us) * 250 = 2,5 ms   
   GOTO   $+1
   GOTO   $+1
   GOTO   $+1
   DECFSZ   AUXA  , F   ;son 2 ciclos en DECFSZ
   GOTO   DE222
   DECFSZ  AUXB  , F
   GOTO   DE222M      ;hasta aca demora = 2,5 ms * 10= 25 ms
   DECFSZ   AUXC  , F
   GOTO   DE12M   
   RETURN         ;total demora 25 ms * 4 = 100 ms

; ******************************************
; *                 FIN                    *
; ******************************************
         
   END   



*) Si hubieses elegido cualquier otro pin I/O el programa te hubiese funcionado(siempre y cuando el WDT estuviese deshabilitado).

Saludos y a desarrollar la paciencia! ;)
"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 Resistencio

  • PIC12
  • **
  • Mensajes: 82
Re: Crossing page boundary
« Respuesta #25 en: 17 de Septiembre de 2007, 00:05:57 »
Efectivamente BRUNO, en este ejemplo que puse el error esta resuelto...si a esto le agrego el -306...quedaria OK !!!

Paso a explicar lo que me pasaba, que de hecho era simple...Eso puedo decirlo ahora !!!

cuando volvia de la pagina 1, no incluia el nuevo pagesel para indicarle al contador que ahora estaba sobre la pagina 0...

eso en el ejemplo que puse estaba bien...entonces solo perseguia que se arreglara lo del mensaje 306, que ahora y segun lo que me decis, es una advertencia...quizas por eso la compilacion daba siempre BUILD SUCCEEDED...

Aun asi...si no pones el pagesel de RETORNO, no anda el soft, porque el P_T_ pclath se queda con el dato de la pagina donde estaba...probe el programa en cuestion (que no es precisamente este) y lo probe con y sin el pagesel a primera pagina...entonces descubri que con el pagesel anda ok y sin el NO...Yo pensaba que con el RETURN volvia a la pagina desde la cual venia y sabia que estaba, en posicion...

En resumen si haces:

MAIN   NOP   
   BSF      PORTB  , 04
   PAGESEL   DEL2M
   CALL   DEL2M
   BCF      PORTB  , 04
   PAGESEL   DEL1M
   CALL   DEL1M
   GOTO   MAIN

Anda OK !!!

Pero si haces:

MAIN   NOP   
   BSF      PORTB  , 04
   PAGESEL   DEL2M
   CALL   DEL2M
   BCF      PORTB  , 04
     CALL   DEL1M
   GOTO   MAIN

ALPISTE !!!

Seguire investigando un poquito mas, pero parece que si solo tomo al 306 como una advertencia y verifico esa condicion estaria todo bien...

Ahora me doy cuenta de otro detalle...cuando revisaba donde estaba el error, en IDE, lo señala con una flecha VERDE a la izquierda, desde donde esta el ERROR...y en este caso lo indicaba despues del primer PAGASEL, con lo cual Yo deberia haber concluido que el ERROR estaba por debajo de esa linea...dende efectivamente estaba !!! porque me faltaba indicar que estaba devuelta en la pagina 0...XD !!!

Pero nunca habia visto esa flecha VERDE antes !!!, estaba trabajando con el MPLAB 5, hasta hace unos dias !!!  :-)

SALUDOS y gracias por los aportes !!!

_____________________________
"Justo a mi me toco ser YO! QUINO


Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Crossing page boundary
« Respuesta #26 en: 17 de Septiembre de 2007, 00:13:54 »
Hola Resistencio.

¿Pero vos leiste más arriba que lo que impedía que RB4 cambie de estado era la configuración del LVP?

La flecha es el cursor, y se usa mucho para simular código.

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 Resistencio

  • PIC12
  • **
  • Mensajes: 82
Re: Crossing page boundary
« Respuesta #27 en: 17 de Septiembre de 2007, 00:24:59 »
Si BRUNO, lo lei...en el programa ese pin lo estaba usando para otra cosa...se dio que en el ejemplo puse sin darme cuenta ese mismo pin...y en la practica no tenia como probarlo porque estaba probando sobre un circuito que usaba el PB,02...

Yo estaba emperrado con el tema del 306 y como nunca dejaba de aparecer, pensaba que iba a tener el mismo error con cualquier pin que eligiera...lo cierto es que con el PB,02 y con el mismo progrma del ejemplo anda bien...

Voy a mirar lo que me decis del PB,04...que pasara a ser otro tema a tener en cuenta...

Estoy usando ahora el WINPIC y al igual que en el ICPROG tengo todo desmarcado !!!

Ahora pruebo, lo de PGM en PB,04 !!!  :-/

SALUDOS !!!
« Última modificación: 17 de Septiembre de 2007, 00:50:48 por Resistencio »

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Crossing page boundary
« Respuesta #28 en: 17 de Septiembre de 2007, 08:36:03 »
Yo estaba emperrado con el tema del 306 y como nunca dejaba de aparecer, pensaba que iba a tener el mismo error con cualquier pin que eligiera...lo cierto es que con el PB,02 y con el mismo progrma del ejemplo anda bien...
Pero Resistencio, fíjate que te hemos explicado una y otra vez lo del mensaje 306.  Lee desde el 1er post al último y fíjate que no has prestado mucha atención o tal vez no hayas comprendido del todo su significado.

Nada pero nada tiene que ver que elijas un pin u otro en tu código o el LVP con un mensaje 306.

Saludos

PD: Bruno, respecto a la 'evidencia' no tiene mayor trascendencia ahora, solamente curiosidad de mi parte ¿si? Ya que no había oído de tal problema y yo tengo firmwares viejos hechos completamente en assembly para 16F876, 16F876A, 16f873, 16f873A , 16f877A, 16F874A y los uso con muchísima frecuencia y jamás me pasó eso, por ello mi duda.  Es todo.

Saludos 2
« Última modificación: 17 de Septiembre de 2007, 08:38:39 por maunix »
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado Resistencio

  • PIC12
  • **
  • Mensajes: 82
Re: Crossing page boundary
« Respuesta #29 en: 17 de Septiembre de 2007, 22:00:35 »
Gracias MAUNIX, he leido todos los post...entendi que era una advertencia...lo que pasa, es que en mi caso, ademas de advertirme, me tiene que sonar alguna trompeta, para que me avive !!!

Estaba interpretando, que me decian que por salir por porta,04, se me generaba ese mensaje...perdon fue mal interpretada esa parte...

En resumen el mensaje aparece, solo como una advertencia, como bien me dicen ambos...Pero OJO que sino le das "bola" puedo estar en un verdadero ERROR !!!

Probe volviendo a la pagina de origen, y sin reescribir el PCLATH, y el IDE me tiraba la misma advertencia...y el programa NO ANDABA !!!

Luego probe, volver a la pagina de origen y escribir en el PCLATH (que es como debe hacerse) y el IDE me tiraba la misma advertencia, por lo cual, Yo creia, que nada se habia solucionado...Pero de esta menera el programa ANDA OK...

Por eso digo, que no veia diferencia entre una compilacion y otra (en cuanto a mensaje, se trata)...a lo cual se agrego el tema del LVP y el PORTB,04, para terminar de pensar que estaba haciendo todo para el "CUCU" !!!

Lo que finalmente hice, fue llevar a la practica y probar el programa en el mismo circuito, y ahi descubri que con una compilacion y a igual mensaje (306), en un caso andaba y en otro no...

En fin, un enrededo, de conceptos y pruebas...Lo importante que rescate de todo esto, es que el PAGESEL resuelve perfectamente del tema del paginado...basta con poner el nombre de cualquier etiqueta que se encuentre en la pagina que quiero apuntar, y el PC, sabe que tiene que ir a esa pagina !!!

Ahora voy a probar un poquito el PAGESELW, y ver como trabaja !!!

A la final, me parece que esto de los micros no se termina de aprender nunca...y menos mal que son RISC !!!

Les agradezco infinitamente el compromiso y las ganas de aportar, siempre los estoy leyendo...de hecho antes de preguntar esto, repase algunos casos similares, pero como nadie preguntaba sobre este micro, pensaba que era diferente en algo...

En fin, sigo aprendiendo cada dia un poco mas...GRACIAS por las molestias !!!

_____________________________
"Justo a mi me toco ser YO" QUINO