Autor Tema: Que hacer si no me entra el SW a una interrupción???  (Leído 1583 veces)

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

Desconectado ales

  • PIC10
  • *
  • Mensajes: 33
Que hacer si no me entra el SW a una interrupción???
« en: 25 de Abril de 2008, 14:30:35 »
Hola de nuevo,

El problema es que en una comnunicación serie no se porque llega un momento en que no entra la PIC dentro de la interrupción int_RDA2, aunque se le sigan enviando datos, no se si se quede colgada alguna bandera interna del PIC, si es asi como la limpio de nuevo.
Me tiene como loco, porque además no se porque ocurre.

Vale otra, pregunta: Importa en algo la cantidad de código de pongamos dentro de la interrupción, porque en otros micros si, pero en las pic que???.

saludos.
y muchas gracias.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Que hacer si no me entra el SW a una interrupción???
« Respuesta #1 en: 26 de Abril de 2008, 03:51:14 »
Puede ocurir que hayas llenado el buffer de recepción.

El problema que tiene meter mucho código dentro de una interrupción es que si vuelve a ocurrir no te enteras. Por eso se recomiendo dejar libre las interrupciones lo antes posible.

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
Re: Que hacer si no me entra el SW a una interrupción???
« Respuesta #2 en: 26 de Abril de 2008, 05:59:50 »
Toma como costumbre lo siguiente al entrar a la interrupcion de recepcion:

-Leer bytes del buffer hasta que baje el flag de "not empty" (no se que micro usas por lo que no te puedo decir con precision)
-Si el flag de overflow esta arriba, bajarlo.


Por lo demas, los pics son como todos los bichos; si pones demasiado codigo en una interrupcion puede ocurrir en el peor de los casos:
-Si nada mas entrar a la interrupcion bajaste el flag, que al salir de la interrupcion vuelvas a entrar en ella.

Pero con el puerto serie no es muy facil que ocurra eso... a 9600bps (lo tipico) recibes en el peor de los casos 1200bytes/s, que con un cristal de 20Mhz  (a 5 MIPS, suponiendo un pic normal) te ofrece 4166 instrucciones por byte recibido.




Desconectado ales

  • PIC10
  • *
  • Mensajes: 33
Re: Que hacer si no me entra el SW a una interrupción???
« Respuesta #3 en: 26 de Abril de 2008, 13:27:52 »
Gracias por responder amigos,  analizaré todos sus sugerencias que me han servido mucho.

- Estoy usando el 18F6520 y 18F6620 (comunicandolos), pero no se hacer lo que me dice Manex_1987 del flag de overflow, como puedo hacerlo con CCS???

- Para que se usa en CCS la función: clear_interrupt( interrupción), es para eso mismo?????

- Y Manex_1987 como saber cuantas instrucciones por segundo en un PIC y que es eso de 5 MIPS, que es MIPS???

saludos y gracias de nuevo.


 

anything