Autor Tema: Manejo de interrupciones!!!! Help  (Leído 13163 veces)

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

Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
RE: Manejo de interrupciones!!!! Help
« Respuesta #45 en: 22 de Diciembre de 2003, 17:48:00 »
Tnks...

Me imaginaba, que era algo asi...
A ver si lo testeo y ya os cuento....


Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
RE: Manejo de interrupciones!!!! Help
« Respuesta #46 en: 23 de Diciembre de 2003, 16:23:00 »
He intentado deshabilitar el CLRWDG en los define del programa, y asi, no funciona...
Voy a internar limpiar el CLRWDG antes de hacer el serout, a ver si asi funciona...
la verdad, es que em el programa que quiero hacer, no manda serout constantemente, pero hay que forzar el codigo, al maximo, para que despues no tengamos sustos...

Muchas gracias por las recomendaciones...
Tnks

Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
RE: Manejo de interrupciones!!!! Help
« Respuesta #47 en: 23 de Diciembre de 2003, 16:28:00 »
es posible que el serout cuelgue el micro???
supongo, que en el tiempo que se manda la sentencia serout, el timer, se active unas cuantas veces...
es posible que se deba a esto???

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1685
    • winpic800
RE: Manejo de interrupciones!!!! Help
« Respuesta #48 en: 24 de Diciembre de 2003, 00:21:00 »
No me había fijado que salvas los registros

movwf wsave ;Salva W
swapf STATUS,W ;Invierte STATUS --> W
movwf ssave ;Salva STATUS

no tienes que hacerlo , pbp ya lo incluye en el codigo.
haver si puede ser esto.

y buenas fiestas para todos.

Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
RE: Manejo de interrupciones!!!! Help
« Respuesta #49 en: 24 de Diciembre de 2003, 01:05:00 »
Si no salvo los registros, aun es peor...
Cuando el flagrf = 0, cuenta los segundos, como le viene en gana...
Y cuando el flagrf = 1 se queda colgado....

Sobre lo del CLEARWDT, lo he puesto, justo delante del serout, y parece que ha mejorado, pero sigue pegandosela...





Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
RE: Manejo de interrupciones!!!! Help
« Respuesta #50 en: 24 de Diciembre de 2003, 01:42:00 »
No esta solucionado... Pero funciona...
he incrementado los PAUSE del procedimiento principal...
Anteriormente, el serout, se ejecutaba cada 50 ms si el flagrf = 0
y casa 300ms si el flagrf = 1....
Los he puesto los dos a 900 ms.... Y parece que funciona....
Lo que realmente, me gustaria saber, es porque no funciona con los otros parametros...???

De todos modos, antes de cantar victoria, voy a dejar el circuito funcionando todo el dia a ver si le encuentro algun problema...

Muchas gracias por vuestra ayuda...



Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
RE: Manejo de interrupciones!!!! Help
« Respuesta #51 en: 27 de Diciembre de 2003, 06:57:00 »

NO FUNCIONA!!!!

Despues de dejar el circuito funcionando casi 2 dias....
Sorpresa... al ver el log.... parece que el pic, se resetea, cuando le viene en gana...

Alguna idea????

Tnks... A ver si antes del 2004.. Consigo que funcione...

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1685
    • winpic800
RE: Manejo de interrupciones!!!! Help
« Respuesta #52 en: 27 de Diciembre de 2003, 11:39:00 »
no puedo provarlo pero yo estoy en que no tienes que salvar ningun registro al entrar en la interrupcion.
PBP ya lo hace y al hacerlo otra vez vete a saver lo que pasa.

Codigo:

si tu codigo es mayor de 2k que seguramente lo es , declara estas variables como estan

wsave      var   BYTE    $020 SYSTEM
wsave1      var   BYTE    $0a0 SYSTEM
wsave2      var   BYTE    $120 SYSTEM
wsave3      var   BYTE    $1a0 SYSTEM
ssave      var   BYTE    BANK0 SYSTEM
psave      var   BYTE    BANK0 SYSTEM

y restaura de esta manera al salir

    movf  psave,w          
    movwf PCLATH
    swapf ssave,w
    movwf STATUS
    swapf wsave,f
    swapf wsave,w
    retfie           



asegurate que el codigo de la interrupción se encuentre en pagina 0 y todas las variables que uses en ella esten en el banco 0 , o de lo contrario tendras que saver en que banco se encuentran , cambiarlo para trabajar con ellos y seleccionar el 0 antes de restaurar y salir .

Haver si lo consigues .
un saludo
sisco.

Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
RE: Manejo de interrupciones!!!! Help
« Respuesta #53 en: 27 de Diciembre de 2003, 14:57:00 »
En cuanto llegue a casa...
lo intento... ahora me encuentro trabajando...

como ya lei en la pñagina 2 del post,  para poner el modulo de interrupción en la pagina 0... hay que poner el codigo en el principio del programa...
estoy en lo cierto???
o hay otra forma???

Tnks

Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
RE: Manejo de interrupciones!!!! Help
« Respuesta #54 en: 28 de Diciembre de 2003, 07:28:00 »
No funciona!!!
lo primero, es que me da un error al compilar...

wsave      var   BYTE    $020 SYSTEM
wsave1      var   BYTE    $0a0 SYSTEM
wsave2      var   BYTE    $120 SYSTEM
wsave3      var   BYTE    $1a0 SYSTEM



de momento el codigo ocupa 406 words....
solo testeo las interrupciones y ejecuto los serout....

estoy utilizando el pic 16f84a....

en segundo lugar... si no guardo los registros al entrar en la interrupción....
de vez en cuando los datos que salen por el puerto serie.... no son correctos...

os dejo un ficherito log, para que veais que datos me salen por el serie.... y que veais que no tiene coherencia el reseteo del pic...
no se rige por ninguna regla... lo hace aleatoriamente...

Para mi consuelo... he conseguido que tarde muchisimo mas en reseterase... Pero aun lo hace...


Bueno, no os dejo el log... Porque no queda espacio en el foro, para ficheros adjuntos...
Si veis que os puede ser de utilidad... Os lo mando por mail...

GRacias....

Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
RE: Manejo de interrupciones!!!! Help
« Respuesta #55 en: 08 de Enero de 2004, 13:16:00 »
Hola a todos....

Tras mi insistencia... Y fracaso...
he decidido migrar el proyecto a un pic 16f876...
La idea no ha salido sola... Ha sido de sispic.
Bueno, ahora me encuentro con el segundo dilema...
Como transmito datos por serie utilizando la uart del 16f876???

Como seteo el baudrate???...
Vamos en general... Como se trabaja con la uart en vez de usar el serout2???

Gracias!!!

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1685
    • winpic800
RE: Manejo de interrupciones!!!! Help
« Respuesta #56 en: 08 de Enero de 2004, 14:02:00 »
puedes usar HSERIN y HSEROUT
http://www.todopic.com.ar/pbp_sp.html#hserin

Pero solo fué un consejo ya que serout2 consume muchos recursos .

Bueno ...haver que haces .
Suerte con tu proyecto.



Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1685
    • winpic800
RE: Manejo de interrupciones!!!! Help
« Respuesta #57 en: 10 de Enero de 2004, 13:53:00 »
puedes usar hserout, hserin sin problemas.
por cierto ¿ conoces "Microchip Application Maestro" ?
lo configuras con tus necesidades  y te genera las macros en asm para USART,I2C,CAN etc .
Creo que está muy bien .

Tu archivo me llegó corrupto ,asi que no lo pude mirar .

Suerte.

Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
RE: Manejo de interrupciones!!!! Help
« Respuesta #58 en: 12 de Enero de 2004, 10:41:00 »
Hola Sispic,
Ahora que migro el programa a 16f876, me da error en las declaraciones de:
DEFINE HSER_RCSTA = 90H
DEFINE HSER_TXSTA = 20H
DEFINE HSER_BAUD = 4800

Por lo demas, ha cambiado los pines RX, TX y poco mas....

el error me da en la fase de compilación:
Error c:pbppbppic14.lib 7411 : [226] Numeric Constant or symbol Name Expected

Tnks

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1685
    • winpic800
RE: Manejo de interrupciones!!!! Help
« Respuesta #59 en: 12 de Enero de 2004, 10:52:00 »
" coloque el registro receptor en receptor habilitado

DEFINE HSER_RCSTA 90h

" coloque el registro de transmisión en transmisión habilitada

DEFINE HSER_TSTA 20h

" coloque baud rate

DEFINE HSER_BAUD 2400

No te despistsesssss .......:




 

anything