Autor Tema: Proton+Interrupciones+Proteus  (Leído 7711 veces)

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

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4049
Proton+Interrupciones+Proteus
« en: 06 de Octubre de 2008, 03:47:39 »
Hola amigos:

Quiero empezar a utilizar las interrupciones en proton, para lo cual me he ido a la ayuda y el ejemplo de configuracion me lo he copiado y trarto de simularlo paso a paso y cual es mi sorpresa que no me va bien.
He implementado y habilitado la interrupcion por cambio de estado en los pnes RB4 a RB7. El caso es que si entra en la rutina de interupcion pero al salir cuando le borras el flag con: INTCON.0=0 ; obsevo en proteus que no lo borra y lo mantiene siemore a 1 pero si sigues ejecutando el programa al cabo de 10-12-15 veces o ls que quiere es cuando lo borra.

Esto le passa a alguien mas o mi solo

Fermin
Todos los días se aprende algo nuevo.

Desconectado doppel

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1534
Re: Proton+Interrupciones+Proteus
« Respuesta #1 en: 06 de Octubre de 2008, 10:33:05 »
Hola Fermin

Personalmente he probado las interrupciones proton + proteus pero no me funcionan bien, por ejemplo las del TMR me hace cualquier cosa menos lo que está programado  :D la solución es probarlo en un circuito real, si alguien las hizo andar que pase el secreto talvez cometo algún error de conf. pero he probado varias veces y modificando y no es confiable .-

saludos  y bienvenido al BASIC


Hernán
« Última modificación: 06 de Octubre de 2008, 10:36:56 por doppel »
" Para ser exitoso no tienes que hacer cosas extraordinarias. Haz cosas ordinarias, extraordinariamente bien "

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2059
Re: Proton+Interrupciones+Proteus
« Respuesta #2 en: 06 de Octubre de 2008, 11:42:57 »
Que tal amigos!
Miren yo he utilizado las interrupciones con el proton y proteus y todas me han funcionado muy bien  :mrgreen:
Las he realizado con el porb.0, con los timer y usart y todas siempre me han funcionado  :shock: :mrgreen:

Podrian ustedes postear los codigos que les dan problemas para ver lo que sucede?

Y yo apenas tenga un tiempito se los pruebo  :mrgreen:

Ojo la ultima version del proton tiene mejoras sustanciales en cuanto al manejo de las interrupciones por hardware, que lo hace superior a la version 3.2.5.5, que creo, es la antepenultima version de ese compilador  :shock:

SAludos

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4049
Re: Proton+Interrupciones+Proteus
« Respuesta #3 en: 06 de Octubre de 2008, 11:53:48 »
Hola amigos:

Siiiiiiiiiiiiiiiiiiii, yo te los voy a postear amigo RALF. Aunque mi programa (es el ejemplo del help del proton) lo unico que hace es activar la interrupcion cuando se produce un cambio en el pin RB4.
Ahora estoy en el curro y cuando llegue a casa adjuntaré, tanto el programa como el esquema del proteus.


Fermin
Todos los días se aprende algo nuevo.

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2059
Re: Proton+Interrupciones+Proteus
« Respuesta #4 en: 06 de Octubre de 2008, 13:17:49 »
Ok amigo no te preocupes postealo y yo lo  revizo y te doy los resultados  :mrgreen:

Saludos

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4049
Re: Proton+Interrupciones+Proteus
« Respuesta #5 en: 07 de Octubre de 2008, 02:44:55 »
Hola amigos,

adjunto los ficheros den cuestion.

El programa trata de supervisar el estado de 3 entradas, en si el programa funciona excepto que cuando se va a salir de la interrupcion en proteus no se borra el flag, con lo cual se repiten las interrupcines. El cambio de estado se efectua chequeando RB4.
Espero que perdonen la escritura del programa soy NOVATO y seguro que se puede hacer mejor.

Fermin
Todos los días se aprende algo nuevo.

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2059
Re: Proton+Interrupciones+Proteus
« Respuesta #6 en: 07 de Octubre de 2008, 12:10:57 »
Que tal amigo!
Mira el lazo while wend le falta colocar un retardo de por ejemplo 1ms.

si : while compresor = 0 : delayms 1 : wend

Sino lo haces asi y entras en ese lazo, es posible que la interrupcion no se ejecute  :shock:  en el manual lo explican  :mrgreen:
pero con otra instruccion similar  :mrgreen:

veo dos disable tambien elimina uno  :mrgreen:

Prueba y avisame!

SAludos

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4049
Re: Proton+Interrupciones+Proteus
« Respuesta #7 en: 08 de Octubre de 2008, 03:50:52 »
Gracias por las repuesta amigo RALF. Te cuento:

Como hice varias pruebas al final se quedo duplicado la linea de disable 2 veces. Tambien tenia puesto el retrdo. Pero lo más curioso es que ni con el ejemplo de la ayuda que viene en proton me funciona.
Adjunto el programa real tal cual estoy probando, habilitando el registro INTON solo con la interrupcion general y el cambio de estado en RB4 a RB7. Al salir de la interrupcion nunca borra la bandera del RBIF(INTCON bit 0).

La version de Proteus que utilizo es la V7.1SP4 y de Proton 3.2.5.5

Un saludo

Fermin
Todos los días se aprende algo nuevo.

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2059
Re: Proton+Interrupciones+Proteus
« Respuesta #8 en: 08 de Octubre de 2008, 16:29:27 »
Ok fer taca dejame esta semana que me desocupe un poco y te lo dejo funcionando!

Nota: El retardo de 1000ms es mucho deberia ser de solo 1ms  :mrgreen:

SAludos

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4049
Re: Proton+Interrupciones+Proteus
« Respuesta #9 en: 09 de Octubre de 2008, 06:14:39 »
OK. amigo Ralf, pero de antemano te digo que he probado con varios valores de Delay y el resultado siempre es el mismo.


F.
Todos los días se aprende algo nuevo.

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2059
Re: Proton+Interrupciones+Proteus
« Respuesta #10 en: 09 de Octubre de 2008, 19:57:46 »
Que tal Fer Taca!

Bueno alli lo tienes  :mrgreen:
Funcionando al pelo  :D

Pruebalo y me avisas!


Saludos

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4049
Re: Proton+Interrupciones+Proteus
« Respuesta #11 en: 10 de Octubre de 2008, 04:15:50 »
Gracias Ralf,

probaré y reportaré

F.
Todos los días se aprende algo nuevo.

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2059
Re: Proton+Interrupciones+Proteus
« Respuesta #12 en: 10 de Octubre de 2008, 16:44:35 »
Ok, estare a la espera de tus comentarios!  :mrgreen:

Saludos

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4049
Re: Proton+Interrupciones+Proteus
« Respuesta #13 en: 11 de Octubre de 2008, 13:31:20 »
Bueno aquí van mis comentarios y después de extrujarme los sexos:

1º Efectivamente el programa con su esquema funciona perfectamente.

2º Copio tu programa en mi esquema cambiando, la salida del puerto A(pin0) por el puerto B(pin0), apar dejarlo como el tuyo t sigue funcionando perfectamente. De esto entiendo que el esquema está bien.

3º Ahora vuelvo a colocar la salida en el pin 0 del puerto A. Para ello modifico el programa que me mandaste eliminando la instruccion LOW led (creo que segun indica en el manual programa el puerto como salida pero solo funciona con el puerto B) y la cambio por asignar a la variable "led" el valor =0.
Antes en la cabecera del programa y le indico que voy a utilizar el puerto A como salida y declaro los pines como todos digitales y sorpresa :x
YA NO FUNCIONA.

Se repiten las  interrupciones y al salir de la rutina de interrupcion ya no se borra el RBIF

De todo esto deduzco que al realizar esa configuracion hay algo que está mal realizada o más bien que falta algo, pero ya no se me ocurre que.
Por otra parte entiendo que la zona de programa de retardo de 1ms es el "main" y que ahí puede ir cualquier otra cosa
Este es el programa que me pasaste:

Device 16F877
XTAL = 4

Symbol LED = PORTB.0
Symbol RBIF = INTCON.0
           
INTCON = %10001000
Low LED
           
DelayMS 400
           
On Interrupt GoTo ISR
           
While 1 = 1
DelayMS 1
Wend
   
Disable
ISR:       
Toggle LED
RBIF = 0
Resume
Enable
           
            End

Y esta zona de aquí es la que realizo yo:


Device 16F877
XTAL = 4
Symbol LED = PORTA.0
Symbol RBIF = INTCON.0
           
INTCON = %10001000
           
ALL_DIGITAL = True    'Todos los pines son digitales
TRISA = %00000000
LED=0
DelayMS 400  'He probado con delay y sin delay
           
On Interrupt GoTo ISR

Main:           
While 1 = 1
DelayMS 1
Wend
goto Main
   
 Disable
ISR:
Toggle LED
RBIF = 0
Resume
Enable
           
End

Como ves sólo está el cambio del puerto A por B el resto es lo mismo, pero aquí se producen multiples interrupciones y la verdad ya no se que pensar, pero seguro que hay algo mal.

Saludos
F.



Todos los días se aprende algo nuevo.

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2059
Re: Proton+Interrupciones+Proteus
« Respuesta #14 en: 11 de Octubre de 2008, 17:35:56 »
Que tal fer taca!
Efectivamente si colocas la salida en elk porta.0 el circuito no responde bien en proteus  :shock: :8} 
Ahora bien para descartar que el problema sea en el compilador o en el proteus, porque no montas el circuito en fisico y pruebas a ver cual es el que esta fallando?
Yo de momento no tengo ese pic, si puedes prueba y me comentas, ya que si no funciona pedire ayuda a en el proton forum  :mrgreen:!

Saludos