Autor Tema: Interrupciones Rs232  (Leído 1459 veces)

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

Desconectado jnavarro

  • PIC10
  • *
  • Mensajes: 33
Interrupciones Rs232
« en: 27 de Febrero de 2008, 09:17:34 »
Hola,

Sabe alguien si se pueden definir distintos canales RS232 en diferentes pines, ¿pero poder utilizar interrupciones con cada uno?

Yo defino 3 canales con
#use rs232 (baud=115200 ........ rcv=PIN_C7, stream=canal1)
#use rs232 (baud=38400 ........ rcv=PIN_B0, stream=canal2)
#use rs232 (baud=9600 ........ rcv=PIN_B3, stream=canal3)

Segun llevo leido, la interrupcion por serie,

#int_rda
void serial_isr()

Haría referencia al canal 1 (PIN C7)

Y por interrupcion externa por RB0 mediante,

#int_ext

Haría referencia al canal 2 (PIN B0)

¿Pero al canal 3? ¿Como le pongo interrupcion?
__El conocimiento humano pertenece al mundo__

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Interrupciones Rs232
« Respuesta #1 en: 27 de Febrero de 2008, 10:23:34 »
El canal cuyos pines coincidan con los del hardware de la USART será el único que interrumpa y ejecute la rutina serial_isr() de #INT_RDA

El canal que interrumpe usando la #INT_EXT va a interrumpir cada vez que llegue un flanco de subida (o de bajada según esté configurado) de cada bit que se reciba y que implique un cambio de estado ... no está pensada para eso y adaptarla tiene mas complicaciones que beneficios.

La única solución posible es usar la #INT_RDA para el canal serie "estándar" y los otros meterlos en el while infinito de main() intentando que por el kbhit(canalx) se pase el mayor número de veces y los mas frecuentemente que se pueda.

Aunque los canales alternativos, por software, pueden leer y escribir correctamente es uso normal el dedicar esos canales para transmisión de datos, debug y asuntos secundarios, y dejar a la USART por Hardware el trabajo crítico de las comunicaciones.

Espero haberte dado una imagen clara del tema.  :mrgreen:
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Interrupciones Rs232
« Respuesta #2 en: 27 de Febrero de 2008, 12:19:36 »
Tambien puede utilizar la interrupcion de teclado para los pines B0 y B3, discriminando dentro de la misma cual de ellos es... :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado jnavarro

  • PIC10
  • *
  • Mensajes: 33
Re: Interrupciones Rs232
« Respuesta #3 en: 28 de Febrero de 2008, 07:42:13 »

Gracias RedPIC, me queda más que claro el asunto, excelente explicación  :-) deberé de amoldarme a los recursos que dispone el PIC.

MGLSOFT con lo de interrupciones de teclado, ¿Te refieres a la interrupción #INT_EXT?

Un salu2 y gracias por contestar
__El conocimiento humano pertenece al mundo__