Autor Tema: no detecta interrupcion?  (Leído 2598 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
no detecta interrupcion?
« en: 27 de Noviembre de 2012, 19:37:59 »
Hola a todos, despeus de leer sobre interrupciones, consultar, y quemarme los pelos empece tratando de hacer algo sencillo, y NO FUNCIONA!!  :5]

Los puertos estan seteados asi: en PORTA.0 esta el pulsador, mientras que PORTB es salida de los leds.
Teoricamente segun lo que estoy tratando de hacer, al pulsar el boton comienza el efecto 1, al pulsar nuevamente el efecto 2.. y asi hasta el 4, que cuando pulsaria de nuevo volveria al primer efecto.

La cosa es que no va ni para atras, alguien me puede orientar un poco?  :?

Esta hecho en proton

Citar
Device 16F876A
Xtal = 4
All_Digital = True
TRISA = %11111111
INTCON = %10000000
Dim control As Word
control = 0
On Interrupt GoTo secuencia

efecto1:
PORTB = %11000000
DelayMS 1000
PORTB = %00000011
DelayMS 1000
GoTo efecto1

efecto2:
PORTB = %00110000
DelayMS 1000
PORTB = %00001100
DelayMS 1000
GoTo efecto2

efecto3:
PORTB = %11111111
DelayMS 1000
PORTB = %01011010
DelayMS 1000
GoTo efecto3

efecto4:
PORTB = %10101010
DelayMS 1000
PORTB = %01010101
DelayMS 1000
GoTo efecto4

Disable

secuencia:
If PORTA.1 = 1 Then control = control + 1
If control > 4 Then control = 1
If control = 1 Then GoTo efecto1
If control = 2 Then GoTo efecto2
If control = 3 Then GoTo efecto3
If control = 4 Then GoTo efecto4
                              
Resume
Enable
            
End

gracias!

« Última modificación: 27 de Noviembre de 2012, 19:40:05 por wolfman77 »
Volviendo al mundo de los PIC....

Desconectado jansuini

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 566
Re: no detecta interrupcion?
« Respuesta #1 en: 27 de Noviembre de 2012, 19:59:06 »
Hola:
¿mantenes apretado el pulsador mas de 1000mS?
si apretás cuando se está ejecutando ese retardo ,recién cuando termine la instrucción saltará a la rutine de interrupción
sds.
Jorge

Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
Re: no detecta interrupcion?
« Respuesta #2 en: 27 de Noviembre de 2012, 20:03:24 »
Sip, y no anda, lo que si, cuando lo simulo en el proteus sale un error que dice

 [PIC16 Core] PC=0x009C stack overflow executing CALL instruction

 :shock:
Volviendo al mundo de los PIC....

Desconectado RockLee_89

  • PIC16
  • ***
  • Mensajes: 140
Re: no detecta interrupcion?
« Respuesta #3 en: 28 de Noviembre de 2012, 01:04:17 »
hola
no es que te quiera criticar pero es conbeniente menciones el lenguaje y el compilador que usas, al pareser por mi poca experiencia creo que el lenguaje es basic y compilador es tam vez pic basic pro.

analizando lo que quieres realizar es con tu secuencia y los pulsadores no creo que sea necesario usar una interrupcion del pic pero si tu la quieres usar para practicar bien por ti.

en primer lugar te menciono que es bueno que analices tu programa quieres activar la interrupcion por cambio de estado aqui tienes 2 errores

primero el registro itcon esta mal configurado ya que solo activas la interrupcion global pero desactivas todas las demas las interrupciones
en si solo estas diciendo que activaras la interupcion del pic pero no le dijiste cual en especial

y en segundo por lo que entendi quieres activar la interupcion por cambio de estado que yo conosco son 2 las cuales son por rb.0(puerto b pin 0) o tambien por los pines rb4, rb5, rb6 , rb7 (que tambien son el puerto b pines 4,5,6,7)


como te menciono mejor dale una leida al pic no te digo que la hoja de datos completa, pero lo que esta conlleva al registro itcon te bendria muy bien
saludos si tienes mas dudas me dare una vuelta para ver tus abances sino mandame un msj privado para atenderte lo mas rapido posible

un comentario para tener mejores resultados en los pic (te digo avace de mi experiencia) es leyendo hoja de datos y practicar con el circuito real asi te enfrentas cara a cara con el pic por asi desirlo y sabras si el circuito realmente funciona o no yo tambien simule en mi tiempo algunas cosas en proteus pero aveces me topaba con la realidad que al hacerlo fisico no funcionava espero y no lo tomes a mal.



Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
Re: no detecta interrupcion?
« Respuesta #4 en: 28 de Noviembre de 2012, 11:00:50 »
hola
no es que te quiera criticar pero es conbeniente menciones el lenguaje y el compilador que usas, al pareser por mi poca experiencia creo que el lenguaje es basic y compilador es tam vez pic basic pro.
Buen dia RockLee_89
Las criticas son aceptadas  :)
El idioma es basic (por eso postee en este area) y el compilador es Proton como mencione en el primer post (justo antes del quote con el codigo)

Cita de: RockLee_89
analizando lo que quieres realizar es con tu secuencia y los pulsadores no creo que sea necesario usar una interrupcion del pic pero si tu la quieres usar para practicar bien por ti.
Esa es la idea, practicar con interrupciones, ya que tengo algo en mente para crear y nunca di en la tecla, a decir verdad hice andar el programa, pero sin interrupciones.
Es decir que me tomaba el evento del pulsador unicamente cuando finalizaba una vuelta del loop, y yo lo que realmente quiero es que se produzca el cambio instantaneamente al pulsar sin importar si va al comienzo o mitad del efecto...


Cita de: RockLee_89
en primer lugar te menciono que es bueno que analices tu programa quieres activar la interrupcion por cambio de estado aqui tienes 2 errores

primero el registro itcon esta mal configurado ya que solo activas la interrupcion global pero desactivas todas las demas las interrupciones
en si solo estas diciendo que activaras la interupcion del pic pero no le dijiste cual en especial
Aaaa... sabia que algo mal tenia jeje, vere ese punto


Cita de: RockLee_89
y en segundo por lo que entendi quieres activar la interupcion por cambio de estado que yo conosco son 2 las cuales son por rb.0(puerto b pin 0) o tambien por los pines rb4, rb5, rb6 , rb7 (que tambien son el puerto b pines 4,5,6,7)
Lo que quiero es que segun un evento en PORTA.0 se activen segun el efecto las diferentes salidas de PORTB

Cita de: RockLee_89
como te menciono mejor dale una leida al pic no te digo que la hoja de datos completa, pero lo que esta conlleva al registro itcon te bendria muy bien
saludos si tienes mas dudas me dare una vuelta para ver tus abances sino mandame un msj privado para atenderte lo mas rapido posible
Eso hare, gracias!!  :)

Cita de: RockLee_89
un comentario para tener mejores resultados en los pic (te digo avace de mi experiencia) es leyendo hoja de datos y practicar con el circuito real asi te enfrentas cara a cara con el pic por asi desirlo y sabras si el circuito realmente funciona o no yo tambien simule en mi tiempo algunas cosas en proteus pero aveces me topaba con la realidad que al hacerlo fisico no funcionava espero y no lo tomes a mal.
No te hagas problema, buscando lei lo mismo, que en la teoria todo anda 10 puntos y en la practica no anda ni para atras jejeje


Saludos!

Martin
Volviendo al mundo de los PIC....

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re: no detecta interrupcion?
« Respuesta #5 en: 28 de Noviembre de 2012, 14:59:10 »
No se como es en basic pero en assembler debes poner a 0 la bandera de interrupcion para que no vuelva a entrar de nuevo a la interrupcion sin haber apretado el boton, ademas debes ver si el puerto que usas permite usar una interrupcion. si quieres probar las interrupciones te aconsejo que empieces por algo mas sencillo como prender un led al pulsar un boton.

Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
Re: no detecta interrupcion?
« Respuesta #6 en: 28 de Noviembre de 2012, 15:07:58 »
bueno, finalmente andubo, arranque de 0 con el programa y la falla estaba en el INTCON, ahora va como piña

Gracias a todos!! :D
Volviendo al mundo de los PIC....

Desconectado RockLee_89

  • PIC16
  • ***
  • Mensajes: 140
Re: no detecta interrupcion?
« Respuesta #7 en: 28 de Noviembre de 2012, 18:25:55 »
me da gusto wolfman77  que te funciones el programa por fin tal vez seria conveniente pongas tu programa asi tal vez ayudes a alguien con un problema paresido al tuyo
saludos