Autor Tema: Se me resetea el PIC  (Leído 2722 veces)

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

Desconectado alex22ra

  • PIC10
  • *
  • Mensajes: 41
Se me resetea el PIC
« en: 30 de Agosto de 2005, 06:14:00 »
Ya llevo dos problemas.

Os comento, llega un momento el programa que al ejecutar esta intruccion se me resetea el PIc (16F876):

   bsf status, rp0
   movlw 0xFF
   movwf opcion ;Aqui se resetea

El problema es que solo lo hace a veces, otras lo ejecuta perfectamente, ¿Me podeis decir que factores pueden provocar un reset, aparte del watchdog?

Estoy utilizando el PROTEUS.

Desconectado pastito2003

  • PIC12
  • **
  • Mensajes: 65
RE: Se me resetea el PIC
« Respuesta #1 en: 30 de Agosto de 2005, 08:38:00 »

Lo más común es:

1.- WDT (Watch Dog Timer)
2.- BOR (Brown Out Reset)
3.- LVP (Low Voltage Porgramming)
4.- Ruidos

Como sabrás los resets son por:

caso:

1.- En el primer caso, si no reseteamos el contador del WDT, el PIC se resetea
2.- Si el pic recibe menos de un determinado voltaje, se resetea.
3.- Si el pic recibe 5 Volts, se pone en modo LVP.
4.- Si no pones un capacitor de desacople entre VDD y VCC de 100 nf, muchas
     veces el Pic se cuelga.


Espero que te sirva


Saludos


Desconectado alex22ra

  • PIC10
  • *
  • Mensajes: 41
RE: Se me resetea el PIC
« Respuesta #2 en: 31 de Agosto de 2005, 03:03:00 »
Tiene que ser un problema software.

¿Como se puede saber el contenido del WTD?

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Se me resetea el PIC
« Respuesta #3 en: 31 de Agosto de 2005, 03:31:00 »
Tengo entendido que un desbordamiento de la pila también lo resetea.

Desconectado alex22ra

  • PIC10
  • *
  • Mensajes: 41
RE: Se me resetea el PIC
« Respuesta #4 en: 31 de Agosto de 2005, 04:56:00 »
Creo que no, si sobrepasas los niveles de la pila, esta empieza de nuevo solapando informacion, con los problemas evidentes.

Pero si lo simulas con el MPLAB si que se te resetea, pero debe ser problema del simulador.

Tampoco lo puedo afirmar al 100%

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
RE: Se me resetea el PIC
« Respuesta #5 en: 03 de Septiembre de 2005, 21:39:00 »
hola.
Pregunto:
opcion es puntero de que posicion de memoria?
Este codigo que pegaste esta dentro de una funcion?
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 alex22ra

  • PIC10
  • *
  • Mensajes: 41
RE: Se me resetea el PIC
« Respuesta #6 en: 05 de Septiembre de 2005, 02:38:00 »
Es puntero de el registro option (0x81) y no esta dentro de ninguna funcion, está en el bucle principal.

¿Que tenias en mente?

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
RE: Se me resetea el PIC
« Respuesta #7 en: 06 de Septiembre de 2005, 19:34:00 »
bit 7 RBPU: PORTB Pull-up Enable bit

1 = PORTB pull-ups are disabled
0 = PORTB pull-ups are enabled by individual port latch values

bit 6 INTEDG: Interrupt Edge Select bit

1 = Interrupt on rising edge of RB0/INT pin
0 = Interrupt on falling edge of RB0/INT pin

bit 5 T0CS: TMR0 Clock Source Select bit

1 = Transition on RA4/T0CKI pin
0 = Internal instruction cycle clock (CLKOUT)

bit 4 T0SE: TMR0 Source Edge Select bit

1 = Increment on high-to-low transition on RA4/T0CKI pin
0 = Increment on low-to-high transition on RA4/T0CKI pin

bit 3 PSA: Prescaler Assignment bit

1 = Prescaler is assigned to the WDT
0 = Prescaler is assigned to the Timer0 module

bit 2-0 PS2:PS0: Prescaler Rate Select bits

tenes las interrupciones Activadas? puede suceder por el bit 6 del registro option. fijate:
bit 6 INTEDG: Interrupt Edge Select bit

1 = Interrupt on rising edge of RB0/INT pin
0 = Interrupt on falling edge of RB0/INT pin

eso configura si la interrupcion se va a producir cuando el RB0 pase a un estado de ALTO(option_reg,6 = 1) o BAJO(option_reg,6 = 0).

o por el bit 7, ya que desactivas las pull pus y los 4 bits de mayor peso(RB4-RB7) del Puerto B pueden cambiar de estado y generar una interrupcion si es que tenes la interrupcion del puerto B habilitada ...

El timer0 tambien puede generar una interrupcion. fijate.
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.


 

anything