Foros de Electrónica

Comunidad de discusión sobre Automatización, Electrónica industrial, Microcontroladores y electrónica digital, Robótica, Domótica, Telemática, Tecnologías móviles, y muchos temas más.




Interrupcion externa con CCS y proteus


       



#1  Interrupcion externa con CCS y proteus
ikermendi

Registrado: 25 Dic 2007
Mensajes: 2
Ubicación: bilbo
citar
Buenaas!

He estado mirando esto de las interrupciones (la de RB0 en este caso) y no hay manera de que me funcione la interrupcion en proteus. El codigo es el siguiente
Código: Seleccionar todo
#include <16F873.h>
#device adc=8
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES BROWNOUT                 //Reset when brownout detected
#FUSES LVP                      //Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected
#FUSES NODEBUG                  //No Debug mode for ICD

#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#use fast_io(b)
#byte PORTB=0x06
#byte PORTA=0x05

#int_ext
PortB_Interrupt()
{
  output_low(PIN_B3);
  delay_ms(30);
}

void main(void)
{
   set_tris_b(0b00000001);
   PORTB=0;
   enable_interrupts(GLOBAL); 
   enable_interrupts(INT_EXT);
   output_high(PIN_B3);
   while(1)
      sleep();
}


En realidad en la interrupcion deberia de mandar un mensage por puerto serie pero este codigo es para probar. El proteus no hace ni caso a la interrupcion. He probado codigos de internet para ver si hacia algo mal yo pero tampoco han funciona.

Otra preguntilla que tengo es que al acabar la funcion de la interrupcion vuelve al sleep no?

Gracias

#2  
PICMIND

Registrado: 17 Jul 2007
Mensajes: 78
Ubicación: Colombia
citar
Hola, mi recomendacion es que quites esa funcion sleep, que a mi modo de ver no hace nada.

#3  Pues nada..
itvboy

Registrado: 31 Jul 2008
Mensajes: 14
Ubicación: Mexico
citar
Hola, el codigo que escribiste esta bien, de todas modas lo cheque en proteus y pues si funciona, cuando mando un flanco desendente al pin RB0 se apaga el led que estaba prendido, no tienes ningun problema.

Te recuerdo que normalmente el pin RB0/INT0 funciona con un flanco ascendente, osea cuando pasa la entrada de 0 a 1, y para asegurar ese funcionamiento debes de colocar una resistencia conectada a este pin y a tierra.

Si quieres que tu interrupcion se presente cuando cambie de 1 a 0 entonces debes de poner esta linea de codigo.

bit_clear( INTCON2, 6 );

Yo utilizo la RB0/INT0 para detectar el start_bit de una comunicacion serial.
Cuando llega el start_bit (cambio de 1 a 0 en la linea) salto a la interrupcion y alli leo los 8 bits transmitidos.

He probado esta comunicacion para procesar protocolo modbus en RS-485 industrial y no me ah dado ningun problema. Es una solucion muy eficaz cuando quieres mas de un puerto serie.

 Responder



Google
 


 Temas de interés 
No hay mensajes nuevos amplificador para electromiografo
No hay mensajes nuevos Detectar cambio de estado (VB)
No hay mensajes nuevos Estado inicial de 555
No hay mensajes nuevos Estado de una reactancia
No hay mensajes nuevos Diseño de un relé de estado solido DC

Foros de Electronica
|| Cuestiones Elementales de Electrónica || Fuentes de alimentacion || Circuitos de radio || Diseño de circuitos en general ||
|| Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión ||
|| Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos ||