TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: groundman en 09 de Diciembre de 2007, 18:10:48

Título: MPLAB
Publicado por: groundman en 09 de Diciembre de 2007, 18:10:48
hola a todos.he estado buscando sin exito,experencias con el mplab para problemas que se nos presentan cuando programamos en este entorno.
mi intencion es crear un hilo para estas discusiones,si es que  no existe ya por el foro.
a continuacion expongo un problema que se me ha presentado y todabia no he podido solucionar,haber si alguien me puede dar la solucion y ya ire poniendo mis experiencias con este entorno en este mismo hilo. :)

estoy haciendo un programa en el  mplab ,y lo ejecuto en el MPLAB-SIM, ejecuto el programa para que cuando ocurra una una interrupcion, el contador de programa salte al vector de interrupcion  y de ahi a un subprograma y en ese mismo subprograma al encontrar un retfie,las interrupciones se deshabilitan ,y deberia de restaurarse el PC con el dato que se almaceno en stack-pointer.

y eso es lo que no pasa.el PC no se carga con el valor guardado en el puntero de pila y en consecuencia el programa entra en un bucle infinito.

otra cosa que no se porque se produce,es que cuando pongo  la instruccion  bcf  INTCON,RBIF ,el registro no se modifica.
estoy utilizando la version de MPLAB 8.0
Título: Re: MPLAB
Publicado por: groundman en 09 de Diciembre de 2007, 20:21:43
pues si señor,muchas gracias.
con solo cargar el contenido de PORTB en el acumulador,-->"MOVF  PORTB,W"   puedo borrar el flag RBIF del registro INTCON--> "BCF INTCON,RBIF".

resulta que al estar activo este flag,la interrupcion estaba siempre activada.y por eso el programa no salia de un bucle infinito.ya que al llegar a la linea
retfie  ,  las interrupciones se habilitaban. y el programa saltaba al vector de interrupcion. :lol:

Título: Re: MPLAB
Publicado por: groundman en 09 de Diciembre de 2007, 21:00:02
hola JCC40 si tienes experiencia con la ventana stimulus.podrias decirme como emular al TMR0.
es decir como hacer que se visualice en la ventana, special function registers.y verlo decrementarse segun como lo hallamos configurado,para que el evento de interrupcion por desbordamiento del TMR0 sea visible.
Título: Re: MPLAB
Publicado por: groundman en 09 de Diciembre de 2007, 23:02:14
boy a poner un truco que me ha salido de casualidad.y no se si abra otra forma de hacerlo.

cuando se le da al boton run del simulador dos veces seguidas,y no puedes pararlo.
si se le da al boton derecho del raton encima de run, te sale una ventanita.pues le das al lado para que se quite la ventanita y ya puedes parar la ejecucion del simulador pulsando en halt. :)
Título: Re: MPLAB
Publicado por: groundman en 10 de Diciembre de 2007, 11:44:24
pues si,con la ventana especial registers si que corre bien el TMR0.lo he asignado al WDT,y lo veo decrementar con cada ciclo de instruccion.
pero el WDT no salta en el modo animate,para eso hay que hacerlo en run.

ahora he configurado el TMR1 para que salte una interrupcion al desbordarse.pero no se porque no lo veo correr,haber que sera lo que pasa.
Título: Re: MPLAB
Publicado por: PalitroqueZ en 10 de Diciembre de 2007, 18:58:53
mira el tema Videotutorial del Mplab 7.6 (http://www.todopic.com.ar/foros/index.php?topic=19177.0) de Leon Pic



Título: Re: MPLAB
Publicado por: groundman en 10 de Diciembre de 2007, 20:07:03
muy buen hilo.voy a darle un buen repaso.gracias.

y para el asunto anterior de que no se veia correr el TMR1,hay que configurar el registro T1CON de la siguiente manera:

seleccionar el preescaler
deshabilitar el oscilador interno de TMR1,ya que no lo bamos a utilizar al menos en este caso.
poner a 1 el bit TMR1CS para deshabilitar la sincronizacin externa.
seleccionar reloj interno(Fosc/4)
y activar el TIMER1

queda asi:

seleccionar el banco 0
movlw   b'00000101'
movwf   T1CON