TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado 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
-
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:
-
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.
-
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. :)
-
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.
-
mira el tema Videotutorial del Mplab 7.6 (http://www.todopic.com.ar/foros/index.php?topic=19177.0) de Leon Pic
-
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