Autor Tema: Duda con la interrupción externa en el PIC 16F877  (Leído 3528 veces)

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

Desconectado d3u53xm4ch1n4

  • PIC10
  • *
  • Mensajes: 5
Duda con la interrupción externa en el PIC 16F877
« en: 23 de Abril de 2013, 05:41:09 »
Buenas!

Tengo una duda con respecto a la interrupción externa en el 16f877A. Estoy trabajando en un proyecto de un detector de vehículos mediante un bucle inductivo, el caso es que el programa cuenta pulsos a través de la interrupción externa de la entrada RB0 y al introducir una señal de pulsos a 100KHz no ejecuta la interrupción tantas veces como pulsos le llegan, hasta el punto en que llega un limite de interrupciones cuando la entrada supera cierta frecuencia (con una entrada de 20KHz funciona correctamente). He probado a poner en la interrupción solo activar y desactivar una salida para comprobar si era por exceso de instrucciones dentro de la interrupción, pero el resultado es el mismo. Mi duda entonces es si la interrupción externa en el 16f877A (trabajando a 4MHz) tiene alguna frecuencia de ejecución máxima. También he pensado que sea por alguna limitación del Proteus que es donde lo estoy simulando.

Gracias de antemano


Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Duda con la interrupción externa en el PIC 16F877
« Respuesta #1 en: 23 de Abril de 2013, 08:30:17 »
Buenas!

Tengo una duda con respecto a la interrupción externa en el 16f877A. Estoy trabajando en un proyecto de un detector de vehículos mediante un bucle inductivo, el caso es que el programa cuenta pulsos a través de la interrupción externa de la entrada RB0 y al introducir una señal de pulsos a 100KHz no ejecuta la interrupción tantas veces como pulsos le llegan, hasta el punto en que llega un limite de interrupciones cuando la entrada supera cierta frecuencia (con una entrada de 20KHz funciona correctamente). He probado a poner en la interrupción solo activar y desactivar una salida para comprobar si era por exceso de instrucciones dentro de la interrupción, pero el resultado es el mismo. Mi duda entonces es si la interrupción externa en el 16f877A (trabajando a 4MHz) tiene alguna frecuencia de ejecución máxima. También he pensado que sea por alguna limitación del Proteus que es donde lo estoy simulando.

Gracias de antemano


Podrías estar limitado en frecuencia por las instrucciones que ejecuta en la interrupción.
Cambia de reloj o podiras usar el contador asíncrono.


Desconectado d3u53xm4ch1n4

  • PIC10
  • *
  • Mensajes: 5
Re: Duda con la interrupción externa en el PIC 16F877
« Respuesta #2 en: 24 de Abril de 2013, 06:04:41 »
Gracias por la respuesta

Hice pruebas aumentando la frecuencia a 20MHz (el máximo del 16f877A) y reduciendo al mínimo la cantidad de instrucciones en la interrupción externa (solo el incremento de un contador) y de esta manera la señal de entrada se consigue que la relación de pulsos en la entrada y la cantidad de interrupciones externas sea correcta hasta una entrada de en torno a 50KHz.

Voy a ver si me aclaro con el contador asíncrono del timer1 porque nunca antes lo use y probarlo como me dijiste a ver si finalmente puedo hacerle el control a la señal de entrada de 100KHz.

Desconectado d3u53xm4ch1n4

  • PIC10
  • *
  • Mensajes: 5
Re: Duda con la interrupción externa en el PIC 16F877
« Respuesta #3 en: 25 de Abril de 2013, 06:32:28 »
Cambie la programación para contar los pulsos con el contador asíncrono del timer1 en vez de con la interrupción externa, el programa funciona perfectamente y puedo hacerle el control a la señal 100KHz, además me voy a ahorrar problemas en el futuro porque creo que iba a necesitar la interrupción externa para una comunicación inalámbrica que aun no tengo programada... así que solucionado!   

Muchísimas gracias por la ayuda!

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Duda con la interrupción externa en el PIC 16F877
« Respuesta #4 en: 25 de Abril de 2013, 06:46:56 »
Que bien que lo resolviste. :-/ :-/

Saludos!


Desconectado lucaspascual

  • PIC10
  • *
  • Mensajes: 31
Re: Duda con la interrupción externa en el PIC 16F877
« Respuesta #5 en: 01 de Mayo de 2013, 12:14:11 »
Buen dia, supongo q programaste en el ccs verdad? puede ser que aunque especifiques la frecuencia de cristal q vas a usar, si no pones en #fuses HS, sigue funcionando a frecuencia baja? yo tuve un problema similiar al tuyo, cambie de cristal de 4 Mhz por uno de 20 Mhz y seguia igual, hasta que puse el fuses q te comente y comenzo andar. Pero igual como la frecuencia es de unos 77khz tengo muy poco tiempo para hacer algo dentro de la interrupcion (tengo que guardar bits de datos).

Desconectado d3u53xm4ch1n4

  • PIC10
  • *
  • Mensajes: 5
Re: Duda con la interrupción externa en el PIC 16F877
« Respuesta #6 en: 01 de Agosto de 2013, 13:42:01 »
Buen dia, supongo q programaste en el ccs verdad? puede ser que aunque especifiques la frecuencia de cristal q vas a usar, si no pones en #fuses HS, sigue funcionando a frecuencia baja? yo tuve un problema similiar al tuyo, cambie de cristal de 4 Mhz por uno de 20 Mhz y seguia igual, hasta que puse el fuses q te comente y comenzo andar. Pero igual como la frecuencia es de unos 77khz tengo muy poco tiempo para hacer algo dentro de la interrupcion (tengo que guardar bits de datos).

Gracias por responder, en su momento no vi tu respuesta pero quizás hoy me sirva con otro problema que tengo...  ;-)

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Duda con la interrupción externa en el PIC 16F877
« Respuesta #7 en: 01 de Agosto de 2013, 22:58:00 »
  En la sección de características eléctricas tienes que buscar esa información.

  En la página 185 del datasheet que estoy mirando, indica los tiempos tanto para el timer0 como para el timer1.

  En modo asíncrono el tiempo mínimo en bajo es de 30ns al igual que el tiempo mínimo en alto. El tiempo mínimo del período es de 60ns
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas