Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

19/10/2007 #1


Problema con la Interrupcion INT/RB0 en el pic16f84a
bueno, el problema es que estoy tratando de usar las interrupciones del PIC16F84A, a manera de prueba hice un programa muy simple para probarla, sin embargo, no se genera la interrupcion. la interrupcion la tengo de forma desendente, asi que tengo conectado el pin 6 del PIC 5V (aparentemente, despues llegare a eso), y para la interrupcion coloco un simple boton (no se como llamarlo) que se conecta a tierra y a el pin tambien. Pruebo el circuito y como veran en el codigo tengo el pin3 del puerto A con señal alta y en la interrupcion lo apaga, pero no pasa nada cuando preciono el boton. ya cale practicamente todo, lo mas raro y que no comprendo es que para conectar la corriente tengo una resistencia que se conecta directamente al pin 6 (del puerto b claro), cuando mido el voltage de un lado de la resistencia marca los 5 v y del otro lado, de donde esta conectado el pin 6 no marca voltage.

el codigo es el siguiente

LIST p=16f84A ;prosesador que se utiliza
INCLUDE <p16f84A.inc>
__CONFIG _XT_OSC & _WDT_OFF & _CP_OFF & _PWRTE_ON

org 0
goto inicio
org 4
bcf 0x5,0x2 ;enciendo la bandera que indica que se recibio un dato
retfie
inicio:
bsf 0x3,0x5
bcf 0x5,0x2 ;inicializa el puerto como salida
bcf 0x5,0x3
bsf 0x6,0x0 ;inicializa el pin INT/RB0 como entrada
bcf 0x81,0x7
bcf 0x81,0x6
bcf 0x3,0x5
bsf 0x5,0x2 ;activa la señal
bsf 0x5,0x3
movlw b'10010000' ; para programar el vector de interrupcion
movwf 0xB
;bsf status,0x5
;bcf 0x81,0x6
;bcf status,0x5 ;para que la intrerrupcion sea de bajada
;movlw b'10010000' ;esta es la configuracion para las interrupciones, en este caso solo;se utilizara la INT/RB0
;movwf 0xB

Pri:
sleep ;se mantiene a la espera de que la pc inicie con la
goto Pri
end


lamento haber puesto el codigo directamente con las direcciones de memoria pero lo he probado de tantas formas que solo quede agusto colocando las direcciones directamente.

Pues de antemano les agradesco, espero qe puedan ayudarme.

Raul Lee Fonseca
19/10/2007 #2


te aconsejo que le pongas una subrutina de retardo (cuando menos 20 milisegundos) , ya que puedes tener un rebote en el boton.

Sería bueno que postearas el circuito que estas utilizando
20/10/2007 #3


gracias por contestar, estas hablando de un retardo en codigo dentro del MPLAB, pero no siento que se active la interrupcion, o donde seria este. a demas para que haya un cambio de voltage de 5V a 0V se necesita primero que este activa la linea 6 del pic pero al medirlo con el multimetro no se registra voltage alguno. el circuito lo voy a poner a continuacion. como el pic lo he probado con otras rutinas omitì la conexion del XT y los capasitores.

el diagrama es muy simple, el led colocado en el pin 2 del puerto a es lo que nos muestra si hubo interrupcion o no, al pin 6 se conecta voltage (5V), en el mismo pin 6 del puerto b se nonecta el switch para que se aterrise cadaves que se preciona el boton
Imágenes Adjuntas
Tipo de Archivo: gif diagrama_122.gif (4,3 KB (Kilobytes), 1410 visitas)
20/10/2007 #4


¿Y cómo se supone que se va a encender?
No hay nada en la interrupción que lo realice

Repasa que quieres hacer e incluyelo en la interrupción
20/10/2007 #5


Te recomiendo que lo conectes de la siguiente manera:




Y el punto de interrupcion deberia ser:

org 4
goto Servicio_Interrupcion

.
.
.
.
Servicio_Interrupcion
;subrutina de retardo
;encender el led

retfie
22/10/2007 #6


gracias por contestar

Lo intento como lo describes en el diagrama pero no optengo respuesta. estaba investigando a cerca del Shmitt triger o algo asi, ya que es de ese tipo el pin INT RB0. dice que es un disparador que mantiene el que se tenga en el pin hasta que un cambio dentroi de los margenes permitidos lo hace cambiar. la pregunta seria ¿cual es el margen para el pic?

una ves mas gracias talves cambie el pic, ya que algo anda mal.

ATTE Raul Lee Fonseca
22/10/2007 #7


checate esto, es una sencilla rutina de interrupcion:
http://www.todopic.com.ar/asm/rama/i..._02.asm%20.txt

y por cortesia de picman, algo mas de interrupciones:
http://micropic.wordpress.com/2007/0...nterrupciones/
26/12/2007 #8


hola, tal vez esto te pueda servir
Archivos Adjuntos
Tipo de Archivo: pdf int_temp_201.pdf (375,9 KB (Kilobytes), 197 visitas)
27/12/2007 #9

Avatar de Saint_

Hola, no se si se ya se resolvio el problema, pero aqui un pequeño aporte en cuanta al codigo se refiere.

Inicialmente (a modo de comentario) siempres es bueno tener a mano la hoja de datos del pic

ceromaya, dale una "ojeadada" a tu codigo y trata de encontrar el desperfecto.

Adjunto tu programa con alguna modificacion.
El compilador es el MPLAB y la simulacion del mismo esta hecho en el PROTEUS 6.7.

Un saludo y que te vaya bien.
Archivos Adjuntos
Tipo de Archivo: rar xxx_461.rar (27,4 KB (Kilobytes), 111 visitas)
28/12/2007 #10


gracias por las aportaciones, al parecer ya funciona segun lo estipulado

grasias a todos
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.