Autor Tema: Problema con Interrupcion Externa...  (Leído 2910 veces)

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

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
Problema con Interrupcion Externa...
« en: 12 de Enero de 2006, 21:17:00 »
Primero que nada grandes saludos a todos.........

    bueno lo que me pasa es lo siguiente...

    estoy tratando de hacer un frecuenciometro de red (220Vac) el cual me he decidido a hacerlo por medio de un circuito pequeño atravez de un optoacoplador, el cual me trabaja a la perfeccion... pero el problema se me presenta al tratar de ingresar los pulsos al micro por medio de RB0 (pin de interrupcion) el cual al encender el pic se encuentra en estado bajo y cuando el optoacoplador llega a su estado alto, no es capaz de levantar al pin RB0 por lo que se queda en estado bajo... hay es donde me decido a ayudar al optoacoplador con un pequeño puente hacia positivo, pero este se niega despues a bajar... quedando en estado altolocolocoloco, osea me entrega 5v... es normal esto??? bueno la unica forma es bajarlo nuevamente con  un puente a negativo...  

en un principio pense que el optoacoplador no tenia la suficiente fuerza para controlarlo por lo que pense en ayudarlo con un transistor, y adivinen...... nuevamente este se niega a subir o bajar ...... por lo que me decidi a enbrutecerme un poco y le puse un pequeño mosfet el cual mirandolo en el osciloscopio logro hacer el trabajo pero a costa de 300mA de consumo adicional.... ya que lo fuerzo a que lo haga subir o bajar.....

ahora el gran problema es que en mi diseño, el consumo si importa ya que es un equipo que usa baterias y en caso de alguna falla el equipo dejaria de trabajar quedando sin carga de baterias y es importantisimo que el micro no deje de trabajar.....

tambien pense que podia ser problema de el programa pero la verdad es que no se como solucionarlo ya que en el mismo puerto b tengo un lcd y no se como configurar solo como entrada el RB0sin afectar los demas pines del puerto B...

espero alguien me pueda ayudar. y desde ya agradesco cualquier tipo de comentariosSonrisa Gigante

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Problema con Interrupcion Externa...
« Respuesta #1 en: 13 de Enero de 2006, 07:25:00 »
Buenas!!!haber para la configuracion d epuertos tanto d salida/entrada, puedes declarar los pines de salida con la directiva:
#use fixed_io(b_output=pines de salida)

y para declarar el pin RB0 como entrada, la puedes declarar asi:
#use fast_io(b)

set_tris_b(0b00000001); puerto b como salida y RB0 como entrada

En los ejemplitos en c hay un programa de la interrupcion externa, es el numero 40, miratelo!:
http://miarroba.com/foros/ver.php?foroid=46840&temaid=4061462

Suerte!!!Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
RE: Problema con Interrupcion Externa...
« Respuesta #2 en: 13 de Enero de 2006, 09:56:00 »
bueno eso ya lo se pero lo que pasa es que en ese mismo  puerto tengo un lcd en el que hay pines que trabajan tanto de entrada como de salida... es por eso que se lo dejo al compilador que haga ese trabajo pero si es que y quiero confiigurar a mi gusto afecto todo el puerto y es hay en donde esta mi gran problemas .... entiendes amigo vzener... en realidad lo que necesito es poder configurar solo ese pin sin afectar los demas pines del mismo puerto.....

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: Problema con Interrupcion Externa...
« Respuesta #3 en: 13 de Enero de 2006, 10:02:00 »
Creo que no puedes configurar ese pin como salida, porque la interrupción externa se desabilita cuando el RB0 esta como salida. Lo que puedes hacer es configurar la librería de ccs para que trabaje con el lcd en modo 4bits con los pines RB4 ~ RB7.

No se como el compilador trata este tipo de casos, pero la interrupción externa la deberías dejar como entrada constantemente

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Problema con Interrupcion Externa...
« Respuesta #4 en: 13 de Enero de 2006, 23:06:00 »
A ver si sumando ideas...

El fichero lcd.c de CCS ya trabaja en modo 4 bits de por sí, no hay que modificarlo. El problema para xootraoox, es que usa para el control RB0 a RB2 y como datos RB4 a RB7. Si lo que te molesta es la LCD en ese puerto, para dejar libre a RB0, pués quítala de ahí y métela en otro puerto (el puerto D, comentando el define que trae el lcd.c).

Tengo un fichero también, para control de LCD donde puedes asignar los pines de la LCD a los pines dispersos del PIC que desees.


Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Problema con Interrupcion Externa...
« Respuesta #5 en: 14 de Enero de 2006, 07:31:00 »
El enlace a un post de libreria sobre la lcd:
http://miarroba.com/foros/ver.php?foroid=46840&temaid=4465289

Suerte!!!Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
RE: Problema con Interrupcion Externa...
« Respuesta #6 en: 14 de Enero de 2006, 15:46:00 »
Bueno... lo de la libreria.... ya esta cambiada......... y trabaja a 4bits....

Codigo:
struct lcd_pin_map {
           BOOLEAN unused;   //RB0    
           BOOLEAN rs;      //BR1
           BOOLEAN rw;      //RB2
        BOOLEAN enable;   //RB3
           int data : 4;   //RB4-RB5-RB6-RB7
        } lcd;


por lo que me ha quedado el pin RB0 libre.....   mi problema mas que nada en tanto es de comodidad, ya que puedo cambiar el lcd de puerto, pero lo malo es que ya esta hecho un pcb el cual quisiera evitar rediseñarlo y volver ha mandar a fabricarlo... pero al parecer no me va a quedar de otra opcion, pero esperare a ver si alguien tiene alguna solucion para este pequeño gran dilema

desde ya agradesco todos los comentarios

-==XooTRAooX==-

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
RE: Problema con Interrupcion Externa...
« Respuesta #7 en: 17 de Enero de 2006, 14:25:00 »
bueno... solo comento que la unica solucion que logre fue el cambiar al lcd de puerto, y sin mas ninguna modificacion en el programa trabajo de maravillas...... que pena que no se pudiese definir cada pin de forma independiente al todos los del puerto

agradesco mucho todos sus comentarios amigos

despide
-==XooTRAooX==-