Autor Tema: interrupcion externa en 16f84a  (Leído 4939 veces)

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

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
interrupcion externa en 16f84a
« en: 20 de Mayo de 2006, 20:49:16 »
hola, ¿cómo debo configurar el hardware para trabajar con la interrupcion externa (rb0) en el 16f84? Quiero producir la interrupcion por un flanco de subida. Entonces ¿debo conectar al guna resistencia a la rb0? Ademas tengo la duda de que tension debo meter en el pin para hacer esto. Yo supongo que gnd para 0 y vcc para 1, pero no estoy muy seguro de como hacerlo para que funcione bien. Alguien me podría decir como debo hacerlo? Gracias y un saludo.

 :-)

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: interrupcion externa en 16f84a
« Respuesta #1 en: 20 de Mayo de 2006, 23:07:19 »
Hola black_flowers, la señal para la entrada de RB0 debes ser una del tipo diguital con solo dos niveles posibles 0V y 5V, ahora si el circuito externo que disparara la interrupción no posee esas señales tendras que adaptarlas.

Por el tema de como se configuran las interrupciones, deberias decirnos que lenguaje de programación usas, o si nó puedes entrar al subforo de tu lenguaje y de seguro encontraras muchos ejemplos de como usar las interrupciones.

Un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado Toph

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 84
Re: interrupcion externa en 16f84a
« Respuesta #2 en: 20 de Mayo de 2006, 23:24:55 »
Citar
hola, ¿cómo debo configurar el hardware para trabajar con la interrupcion externa (rb0) en el 16f84? Quiero producir la interrupcion por un flanco de subida. Entonces ¿debo conectar al guna resistencia a la rb0? Ademas tengo la duda de que tension debo meter en el pin para hacer esto. Yo supongo que gnd para 0 y vcc para 1, pero no estoy muy seguro de como hacerlo para que funcione bien. Alguien me podría decir como debo hacerlo? Gracias y un saludo.

 :) correcto, para que sea uno, 5 V y para que sea cero, 0V, con respecto al hardware se recomienda no ponerle al pin directamente los 5 V, si no ponerle un arreglo de resistencias y aveces hasta un diodo antes del pin
 ¿quien dara ese flanco ¿se dara con un switch? o ese pin se conectara a una señal que le va estar dando diferentes flancos?

El tiempo perdido es dificil de recuperar, trata de no desperdiciarlo
atrevete de vez en cuando a hacer algo nuevo
¿Sera este el año que tanto he deseado?

Desconectado vszener

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2395
Re: interrupcion externa en 16f84a
« Respuesta #3 en: 21 de Mayo de 2006, 06:26:30 »
¿Que lenguaje de programacion vas a usar para dicha interrupcion?


Suerte!!! :wink:
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: interrupcion externa en 16f84a
« Respuesta #4 en: 21 de Mayo de 2006, 17:55:41 »
Coincido con los demás.

Por favor dínos qué lenguaje utilizarás para programar.
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: interrupcion externa en 16f84a
« Respuesta #5 en: 22 de Mayo de 2006, 00:44:05 »
Como este foro es iniciación supondré que lo que quieres es en ensamblador.

Vete aquí y busca el ejemplo 6.3: http://www.mikroelektronika.co.yu/english/product/books/PICbook/6_chapter.htm

Ahora, también puedes realizar una búsqueda aqui en los foros; si deseas algún lenguaje en particular selecciona qué foro quieres (ensamblador, Basic, C, etc).

Espero te sirva.
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: interrupcion externa en 16f84a
« Respuesta #6 en: 22 de Mayo de 2006, 01:10:08 »
Se me olvidó.

Este es para un 16F84, no un 84A pero funciona igual.

Otra cosa:
Está para interrupción en flaco negativo, para positivo solo cambia el BCF OPTION_INTEDG

por BSF OPTION_INTEDG.

Otra situación:

Los de la serie 16FXX y X no son capaces de almacenar los registros STATUS y W, tu debes hacerlo. Esto lo haces para que después de la interrupción regreses a las mismas condiciones que tenías antes de la misma (alo mejor ya lo sabías, si no, ya lo sabes).

El programa que viene en la página no trae esta parte pero aqui te la pongo:


MOVWF W_TEMP          ;copy W to temp register,
                                  ;could be in either bank
SWAPF STATUS,W        ;swap status to be saved into W
BCF STATUS,RP0         ;change to bank 0 regardless
                                  ;of current bank
MOVWF STATUS_TEMP ;save status to bank 0
                                  ;register

: aqui va la rutina de interrupción.
: (ISR) 
: En el programa dice ISR también, coloca tu rutina en medio de esto.

SWAPF STATUS_TEMP,W ;swap STATUS_TEMP register
                                    ;into W, sets bank to original
                                    ;state
MOVWF STATUS             ;move W into STATUS register
SWAPF W_TEMP,F           ;swap W_TEMP
SWAPF W_TEMP,W          ;swap W_TEMP into W

Sigue con lo demás desde aqui (Labl en el caso del programa de la página que te mencioné).

Una cosa mas:
Tu debes nombrar esas variables STATUS_TEMP y W_TEMP en tu programa como cualquier otra variable para que funcione (las primeras veces no recordaba eso y me daba de golpes porque siempre se me olvidaba  :D)

Suerte.
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
Re: interrupcion externa en 16f84a
« Respuesta #7 en: 22 de Mayo de 2006, 21:33:39 »
gracias x todas las respuestas. de todas formas mi pregunta no es con respecto al software. Lo estoy programando en ensamblador en el mplab y creo que el software está más o menos bien. Mi duda es con respecto al hardware. Lo que quiero hacer es una interrupción de prueba (no viene de ninguna salida de otro circuito ni nada). Quiero hacer saltar la interrupción externa manualmente. La duda es como conectar eso. Se supone que si conecto la patilla rb0 a 5v manualmente (tocándole con un cable que esté conectado a 5v)  ya debería saltar la interrupción ¿no es así?

Desconectado Toph

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 84
Re: interrupcion externa en 16f84a
« Respuesta #8 en: 23 de Mayo de 2006, 18:05:08 »
Citar
gracias x todas las respuestas. de todas formas mi pregunta no es con respecto al software

si me parecia curioso que todos te preguntaran por software cuando tu duda es por hardware, parece que solo yo lei bien el mensaje  :mrgreen:
Citar
Lo que quiero hacer es una interrupción de prueba (no viene de ninguna salida de otro circuito ni nada). Quiero hacer saltar la interrupción externa manualmente. La duda es como conectar eso. Se supone que si conecto la patilla rb0 a 5v manualmente (tocándole con un cable que esté conectado a 5v)  ya debería saltar la interrupción ¿no es así?
si, correcto,  :) ,  pero como te dije antes no es recomendable ponerle los 5 V directamente aqui te dejo un enlace donde esta un esquema electrico de un arreglo para provocar una interrupcion externa, claro este arreglo es para que al presionar el switch le llege un cero y la interrupcion ocurre al recibir el cero,  si te es posible seria mejor que la interrupcion se produzca cuando llegue un cero  :-/. sino avisame ya veremos como adaptar el circuito para que funcione al reves.
http://platea.pntic.mec.es/~lmarti2/practic3.htm
si no puedes ver la imagen avisame y te la envio por correo

El tiempo perdido es dificil de recuperar, trata de no desperdiciarlo
atrevete de vez en cuando a hacer algo nuevo
¿Sera este el año que tanto he deseado?

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
Re: interrupcion externa en 16f84a
« Respuesta #9 en: 23 de Mayo de 2006, 19:56:15 »
gracias x el link, lo del flanco descendente no es problema (sólo hay q cambiar el bit correspondiente en el option reg). Lo que sí es que me parece un esquema algo complicado para hacer la conexión de la interrupción. No es que no lo sepa hacer, pero me pregunto si no sería suficiente con conectar una resistencia. ¿conoces por casualidad algún otro esquema donde esté implementada la interrupción externa?

Un saludo y muchas gracias x tu ayuda!   :)

Desconectado Toph

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 84
Re: interrupcion externa en 16f84a
« Respuesta #10 en: 24 de Mayo de 2006, 22:05:22 »
Citar
gracias x el link, lo del flanco descendente no es problema (sólo hay q cambiar el bit correspondiente en el option reg).
claro, yo te decia porque podria ser una tarea y uno las tiene que hacer como le dicen  :g)
con respecto al esquema si es complicado, ¿vistes el del reset?, el que esta conectado a MCLR, es menos complejo, estos esquemas los recomiendan los libros y los maestros para proteger los puertos lo mas posible, pero si quieres puedes usar el siguiente esquema, es el mas sencillo para un switch funciona perfecto, pero, el pin RB0 esta vulnerable si ocurre algun problema en la fuente que te da los 5 V. 

ojo este interruptor, al presionarte te va dar los 5 V como lo querias al inicio  :)
                                                           

El tiempo perdido es dificil de recuperar, trata de no desperdiciarlo
atrevete de vez en cuando a hacer algo nuevo
¿Sera este el año que tanto he deseado?

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: interrupcion externa en 16f84a
« Respuesta #11 en: 25 de Mayo de 2006, 02:36:43 »
hola, ¿cómo debo configurar el hardware para trabajar con la interrupcion externa (rb0) en el 16f84?
 :-)



Hola.

La razón por la cual (creo  :?) que todos los demás preguntamos sobre el lenguaje de programación es por lo que se cita (al menos eso fue lo que yo entendí  :D).

Yo entendí que quería configurar los registros del µicro para activar la interrupción (que está en hardware dentro del µicro).


Lo importante aquí es que el problema se solucionó. :-/

Saludos.
« Última modificación: 25 de Mayo de 2006, 02:40:06 por Mario »
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
Re: interrupcion externa en 16f84a
« Respuesta #12 en: 26 de Mayo de 2006, 01:59:59 »
ahá, ese esquema es justo lo que estaba buscando. Muchas gracias a to2.
voy a hacer una pregunta más sólo a modo de curiosidad: ¿por qué es necesaria la r de 10K y por qué debe ser de este valor en concreto (o me imagino que aproximado)?   De nuevo muchas gracias.

 ;-)
« Última modificación: 26 de Mayo de 2006, 02:10:27 por black_flowers »

Desconectado vszener

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2395
Re: interrupcion externa en 16f84a
« Respuesta #13 en: 26 de Mayo de 2006, 07:22:10 »
Es una resistencia de pull-down , es para poner en bajo(valor logico '0') el pin cuando el interruptor este abierto...


Suerte!!! :wink:
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado Toph

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 84
Re: interrupcion externa en 16f84a
« Respuesta #14 en: 26 de Mayo de 2006, 15:55:56 »
Citar
¿por qué es necesaria la r de 10K y por qué debe ser de este valor en concreto (o me imagino que aproximado)?
porque si no se pone de esa forma cuando el switch estuviera abierto al micro no le llegaria un cero siempre, ya que el pin estaria en el aire,  por lo que el pin del PIC se debe poner a tierra cuando el switch este abierto para que llegue un cero y se debe hacer con una resistencia  para que si se cierra el switch no ocurra un corto circuito, el valor de la resistencia debe ser relativamente alta (tipicamente entre 1K y 10K) para que cuando se cierre el switch la corriente se valla al pin del pic en lugar de la resistencia alta porque la resistencia del pin es menor que la resitencia que esta ahi, si se pone un valor mas bajo de 1K, el voltaje se dividiria, parte de la corriente se iria a la resistencia y otra parte al PIC.

El tiempo perdido es dificil de recuperar, trata de no desperdiciarlo
atrevete de vez en cuando a hacer algo nuevo
¿Sera este el año que tanto he deseado?