Autor Tema: PROTON E INTERRUPCIONES  (Leído 4681 veces)

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

Desconectado virolay

  • PIC12
  • **
  • Mensajes: 50
PROTON E INTERRUPCIONES
« en: 18 de Abril de 2016, 14:11:06 »
Hola a todos:

Soy un tipo muy mayor y a veces mis neuronas se bloquean. Me he metido en un programa que ahora trato de mejorar con interrupciones. Se trata de una interrupción que me permita parpadear un carácter, más o menos 1 seg., en una LCD que no tiene esa prestación. Simultáneamente, otra interrupción, debe capturar la señal de varios pulsadores, cada uno a una entrada del puerto B con capacidad de interrupción.

Os agradeceré cualquier cosa que me permita desbloquearme, desde un simple guión de lo que debo hacer hasta un ejemplo (eso ya sería la leche!). Obviamente, prefiero en Proton, pero cualquier otro PICbasic, seguramente podré adaptarlo y lo que es más importante, aprenderé a usar un par de interrupciones de manera más racional de lo que yo soy capaz.

Gracias por vuestro tiempo y atención,
Quod natura non dat Salmantica non praestat

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:PROTON E INTERRUPCIONES
« Respuesta #1 en: 30 de Abril de 2016, 22:26:49 »
Parece que no hay nadie de Proton que te pueda ayudar con el tema, no uso proton pero mi lenguaje tiene una gran similitud con el tuyo.
Lo primero es ordenar un poco las ideas, los pic trabajan a nivel de uSeg. y nosotros trabajamos a varias docenas de mSeg., esto quiere decir que para pulsar una tecla somos muy lentos, por muy rápido que lo intentemos siempre tardaremos varias docenas o centenares de mSeg., con esto quiero decir que no es necesario usar un modulo hardware para leer teclas. Estos módulos se utilizan para capturar eventos muy rápidos o para despertar el pic de forma externa cuando está en modo de bajo consumo. Recomiendo centrarse en los timer que posiblemente sean los primeros módulos que se incorporaron a los micros, también posiblemente sean de los más útiles.
Los timer fundamentalmente se utilizan para contar tiempo y si subimos un poco más de nivel, pues, para distribuir el tiempo entre nuestras subrutinas o funciones. Con los timer se puede hacer que parpadee un  texto en el Lcd cada 500mSeg. y que se lea un teclado cada 1mSeg. o parpadee un led con la cadencia deseada e incluso podamos controlar un servomotor.
Si vamos un paso más, esto es, subimos un poco más de nivel, nos encontramos con las bases de tiempos. Las bases de tiempos no son  más que una serie de contadores independientes que al terminar su contaje nos avisan activando un bit (flag o bandera) predeterminado, tantos bit como bases de tiempos necesitemos. Para que las bases de tiempos funcionen y tengan exactitud necesitamos una base patrón (contador maestro) con la que se sincronizan todos sus contadores. Esta base patrón se consigue utilizando el registro contador de un timer, cuando el timer se desborda, por ejemplo cada 1mSeg, se genera una interrupción que ejecuta el código que incrementa los contadores de las bases de tiempos y activa el bit de los que llegaron al fin del contaje.

El código o algoritmo de una base de tiempos es realmente simple:
Programa
   flag1=0 'Activa la base de tiempos
   contador1=500 'Carga la base de tiempos en mSeg.
   flag2=0 'Activa la base de tiempos
   contador2=10 'Carga la base de tiempos en mSeg.
   Bucle:
      'Base de tiempos 1
      if flag1=1 then
         ejecuta código parpadeo texto Lcd
         contador1=500mSeg. 'Recarga base de tiempos
         flag1=0  'Activa la base de tiempos
      endif
      'Base de tiempos 2
      if flag2=1 then
         ejecuta código lee teclado
         contador2=10mSeg. 'Recarga base de tiempos
         flag2 =0 'Activa la base de tiempos
      endif
   goto bucle
End
Subrutina interrupciones
   If bandera interrupción timer then
      Se recarga el timer para que cuente de nuevo 1mSeg.
      'Base de tiempos 1
      contador1 = contador1 - 1
      if contador1 = 0 then flag1=1
      'Base de tiempos 2
      contador2 = contador2 - 1
      if contador 2 = 0 then flag2=1

      Borra bandera interrupción timer
   endif
Fin rutina interrupciones

La configuración de las interrupciones para el modulo TMR basicaménte:
Se configura el Timer, normalmente el Timer1
Se carga el Timer para que cuente 1mSeg.
Se activa
Se activa la interrupción del Tmr1
Se activa la interrupción de periféricos
Se activa la interrupción general

En mi lenguaje el nombre de la subrutina de interrupciones esta creada pero en el tuyo a lo mejor tienes que definirlo con algún comando.
Saludos desde Granada, España.

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2062
Re:PROTON E INTERRUPCIONES
« Respuesta #2 en: 30 de Abril de 2016, 23:58:16 »
Un ejemplo de interrupciones con proton lo puedes ver aqui:

https://www.youtube.com/watch?v=wwyFFICwpAw

Espero te sea util!   :mrgreen:

Saludos

Desconectado akira_ve

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 342
Re:PROTON E INTERRUPCIONES
« Respuesta #3 en: 13 de Agosto de 2016, 00:25:50 »
Amigos..........disculpen...............he buscado en el foro como hacer que el Proton Basic funcione Con el MPLAB....................saben como hacerlo??? tengo el mplab 8.92, el proton ide 2.0.3.3 y el  proton compiler 3.5.7.1 gracias de ante mano
Si conocemos bien lo que tenemos y lo sabemos usar......se haran hasta cosas que e veces aseguran son imposibles

Venezuela

Desconectado viggiani1975

  • PIC10
  • *
  • Mensajes: 4
Re:PROTON E INTERRUPCIONES
« Respuesta #4 en: 19 de Agosto de 2016, 17:24:46 »
Saludos,

Hay una explicación de lo que quieres (proton+mplab)  en el foro oficial de proton, está en inglés y ahí se complica un poco la cosa, claro todo depende de cómo te manejes con el idioma de los gringos. Suerte!
http://www.protonbasic.co.uk/showthread.php/65812-Setting-up-the-Proton-Compiler-with-MPLAB-IDE

Desconectado akira_ve

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 342
Re:PROTON E INTERRUPCIONES
« Respuesta #5 en: 19 de Agosto de 2016, 20:10:58 »
Ok mi pregunta es que se puede hacer despues que se puede usar pic basic con mplab???se puede simular o solo editar??
Si conocemos bien lo que tenemos y lo sabemos usar......se haran hasta cosas que e veces aseguran son imposibles

Venezuela


 

anything