Autor Tema: banco 0 o memoria llena  (Leído 4476 veces)

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

Desconectado diego_z

  • PIC16
  • ***
  • Mensajes: 225
banco 0 o memoria llena
« en: 07 de Marzo de 2009, 01:25:28 »
hola gente tengo un problemilla con un programa que estoy haciendo en un 16f876 , el problema radica en que agregue una nueva subrrutina y dejo de funcionar nisiquiera arranca , yo creo que es porque se lleno el banco 0 , ahora intentando ponerla en el banco 1 con los bit rp0 y rp1 no me funciono , hay alguna manera de hacerlo ? mirando el winpic va en la direccion 0x830espor eso que digo que esta lleno el 0 gracias de antemano , diego
,,,,option,,,,,,,,,,,explicit,,,,,,,

DR800 big a la venta ,solo argentina por privado

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: banco 0 o memoria llena
« Respuesta #1 en: 07 de Marzo de 2009, 02:31:49 »
Los bancos se refieren a la RAM y las páginas se refieren a la ROM de programa.

¿Exactamente qué es lo que te hace falta?

Desconectado diego_z

  • PIC16
  • ***
  • Mensajes: 225
Re: banco 0 o memoria llena
« Respuesta #2 en: 07 de Marzo de 2009, 03:27:08 »
hola migsantiago , fijate que nunca habia escrito un programa con tantas lineas , tenia el programa funcionando ok , y luego de agregar una subrrutina bastante larga el display no arranca es como si no arrancara el programa , saco la subrrutina y todo vuelve a la normalidad , da la casualidad que sin la misma el winpic me marca 0x76 (banco o pagina 0 0x7f creo ) y con la misma me llega hasta 0x830 , digo sera que se lleno la pagina ? en ese caso como hago para cambiar , o que debo hacer para seguir
,,,,option,,,,,,,,,,,explicit,,,,,,,

DR800 big a la venta ,solo argentina por privado

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: banco 0 o memoria llena
« Respuesta #3 en: 07 de Marzo de 2009, 07:20:02 »
hola
para poner una rutina en otra pagina puedes usar
pagesel  y_el_nombre_de_la_rutina
call     y_el_nombre_de_la_rutina
asi el compilador pone los bits para cambiar de pagina de programa
y antes del return igual
pagesel  y_el_nombre_del_programa_al_que_quieres_volver
return
y asi el compilador te pone los bits para que vuelva a la pagina donde esta el programa, esto se puede hacer con goto tambien

cuidado con las call solo se pueden poner en las 256 primeras posiciones de cada pagina

y los bancos se refieren a los bancos de los registros de la ram y perifericos, por ej. para dirigirte a trisb

banksel   trisb
movwf     b'00110011'
asi el compilador te pone los bits de estatus para que apunten al banco de trisb

un saludo

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: banco 0 o memoria llena
« Respuesta #4 en: 07 de Marzo de 2009, 12:20:44 »
hola migsantiago , fijate que nunca habia escrito un programa con tantas lineas , tenia el programa funcionando ok , y luego de agregar una subrrutina bastante larga el display no arranca es como si no arrancara el programa , saco la subrrutina y todo vuelve a la normalidad , da la casualidad que sin la misma el winpic me marca 0x76 (banco o pagina 0 0x7f creo ) y con la misma me llega hasta 0x830 , digo sera que se lleno la pagina ? en ese caso como hago para cambiar , o que debo hacer para seguir

Ah entonces el problema es con el salto de página de memoria de programa.

Aquí la solución:

http://www.todopic.com.ar/foros/index.php?topic=23718.0

Desconectado diego_z

  • PIC16
  • ***
  • Mensajes: 225
Re: banco 0 o memoria llena
« Respuesta #5 en: 07 de Marzo de 2009, 13:20:57 »
hola gente , gracias por sus prontas respuestas ,bueno el problema radica no en el modo de llamar a la subrrutina , sino en como declararla o escribirla en  otro banco o pagina, ya que segun veo compilo con la misma escrita , y aunque no la llame no funciona y si corto el parrafo comienza a andar , pido disculpas si no me expreso muy bien en lo que quiero decir , saludos diego
,,,,option,,,,,,,,,,,explicit,,,,,,,

DR800 big a la venta ,solo argentina por privado

Desconectado Javicho

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 570
Re: banco 0 o memoria llena
« Respuesta #6 en: 07 de Marzo de 2009, 14:15:45 »
Espera antes que nada ten en claro esto ... los bancos unicamente se refieren a la memoria RAM tu problema parece que va por el tema de las paginas (1pagina es de 2K de programa) lo digo porque otros foreros que al leer tus mensajes los puedes confundir mas.

Tal vez estas pegando en la mitad de tu programa dicha subrutina y hay otras que si usas las estas mandando cada vez mas abajo y pasa la pagina 0.

Javicho.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: banco 0 o memoria llena
« Respuesta #7 en: 07 de Marzo de 2009, 14:59:52 »
Diego, seguramente tengas algún computed goto suelto por el programa, o bien estés llamando mal a alguna subrutina que se encuentra en la página 1.

Buscá en tu código si tenés algún addwf PCL,F que es al instrucción que generalmente se usa para hacer el salto.

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 diego_z

  • PIC16
  • ***
  • Mensajes: 225
Re: banco 0 o memoria llena
« Respuesta #8 en: 07 de Marzo de 2009, 18:56:43 »
Espera antes que nada ten en claro esto ... los bancos unicamente se refieren a la memoria RAM tu problema parece que va por el tema de las paginas (1pagina es de 2K de programa) lo digo porque otros foreros que al leer tus mensajes los puedes confundir mas.

Tal vez estas pegando en la mitad de tu programa dicha subrutina y hay otras que si usas las estas mandando cada vez mas abajo y pasa la pagina 0.

Javicho.
hola es eso lo que me esta pasando la pagina 0  esta llena aparentemente , pregunto hay que poner alguna instruccion para cambiar de pagina , creo que ese es mi problema
,,,,option,,,,,,,,,,,explicit,,,,,,,

DR800 big a la venta ,solo argentina por privado

Desconectado diego_z

  • PIC16
  • ***
  • Mensajes: 225
Re: banco 0 o memoria llena
« Respuesta #9 en: 08 de Marzo de 2009, 01:20:09 »
gracias por sus respuestas les comento que hera como me explico alogic.on , pasa que yo al tener varias librerias .inc iva agregando arriba y no abajo como deberia ser entonces me las ubicaba primero en la compilacion
deberia haber puesto asi
      INCLUDE    <LCD_4BIT_1.INC>
      INCLUDE   <eprommm.INC>
      INCLUDE   <RUTINAS.INC> 
      INCLUDE   <NICCAD.INC>
      INCLUDE   <LIPO.INC>
      END
 y no asi
      INCLUDE   <NICCAD.INC>
      INCLUDE   <LIPO.INC>
      INCLUDE   <RUTINAS.INC> 
      INCLUDE   <eprommm.INC>
      INCLUDE    <LCD_4BIT_1.INC>
     END
,,,,option,,,,,,,,,,,explicit,,,,,,,

DR800 big a la venta ,solo argentina por privado

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: banco 0 o memoria llena
« Respuesta #10 en: 08 de Marzo de 2009, 16:55:55 »
para ver como te coloca el programa en la memoria las librerias, utiliza la ventana view/program memory
 yo incluyo las librerias y cada grupo de rutinas tiene un macro, asi por ej. coloco los include y con la orden ORG le indico en que direccion quiero que ponga determinado grupo de macros que estan en los include como el cad, usart... el resultado, es bastante ordenadito. a causa de que en su dia me volvi loco con los cambios de pagina  :mrgreen:
Código: ASM
  1. #include        <P16F877A.INC>
  2.                         #include        <definitions.inc>
  3.                         #include        <rutinas.inc>  
  4.                         __CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC&_BODEN_ON&_LVP_OFF
  5. ;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  6. ;####################################################################################################################
  7.                         org             0x00   
  8.                         PAGESEL CONFIGURACION
  9.                         GOTO    CONFIGURACION
  10. ;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  11. ;####################################################################################################################
  12.                         ORG             0X04
  13.                         RUTINA_DE_INTERRUPCION                          ;RUTINA DE INTERRUPCION
  14. ;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  15. ;####################################################################################################################
  16. RUTINAS                                                                                 ;RUTINAS QUE USA EL PROGRAMA
  17.                         CONVERT_7SEGMENT                                        ;CONVERTIDOR BCD A 7 SEGMENTOS PARA LOS DISPLAYS
  18.                         ;------------------------------------
  19.                         OUT_SHIFT_REGISTER                                      ;PARA LOS 74595
  20.                         ;------------------------------------
  21.                         MIDI_OUT                                                        ;RUTINA DE ENVIO USART
  22.                         ;------------------------------------
  23.                         PULSADORES_MENU                                         ;PARA EL TECLADO CON LOS 74165
  24.                         ;------------------------------------
  25.                         ADC_IN                                                          ;PARA LOS 4051 Y LOS POTES
  26.                         ;------------------------------------
  27.                         CONVERTIDORES
  28.                         ;------------------------------------
  29.                         R_W_EEPROM                                                      ;ESCRITURA LECTURA DE LA EEPROM
  30.                         ;------------------------------------
  31.                         PAUSAS                                                          ;PAUSAS CAD, TECLADO...
  32.                         ;------------------------------------  
  33. ;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  34. ;####################################################################################################################
  35. PROGRAMA       
  36. ;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  37. ;##################################################### LLAMADA A RUTINAS ############################################
  38.  
  39.                         TODOS_LOS_CANALES                                       ;TESTEA LOS CANALES ANALOGICOS
  40.  
  41.  
  42.                         TECLADO_DIN                                                     ;TESTEA LOS PULSADORES DEL MENU Y TECLADO
  43.  
  44. ;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  45. ;####################################################################################################################
  46.                         GOTO    PROGRAMA                                        ;BUCLE EL MICRO NO DESCANSA ;)
  47. ;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  48. ;####################################################################################################################
  49.                         ORG             0X1C00                                          ;DIRECCION DONDE SE GUARDARA LA CONFIGURACION DE LOS PERIFERICOS
  50.                         PAGESEL PROGRAMA
  51.                         RETURN                                  ;ESTO DEBERIA HACER UNA ESPECIE DE RESET SI EL PIC SE SALTA LA RUTINA DE PROGRAMA :(
  52. CONFIGURACION                                                                   ;HACERLO AL PRINCIPIO DE UNA PAGINA
  53.                         CONFIG_16F877A_CONTROLOGIC
  54.  
  55.                         ORG             MEM_EEPROM_POTES
  56.                         TABLAS_EEPROM          
  57.                         END

un saludo