Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

HELP!! INTERRUPT PROBLEM

Status
Not open for further replies.

aidantmurphy

New Member
Could anyone help me out. I have included my C code. I want to create two signals on the my PIC DEMO PLUS 2 board RA0 and RA1. I am getting an interrupt on RA0 but nothing on RA1. RB0 is my interrupt PIN. I have set all my registers according to the datasheet. but getting confused.

#include <io16f877.h>

#pragma vector = 0x1
__interrupt void externISR()
{
if(INTF) //loop controllling software design of interrupts on PIC
{
RA0 = 0; // ensuring RA0 set low
RA1 = 0;

TMR1H = 0xF6; // Pre - load timer with this value = 63035
TMR1L = 0x3B; // We want an overflow after 2500 ticks (interval of 20ms)
// As (2^16 -1)-2500 = 63035
TMR2 = 0x0;
TMR2IF = 0x0;

TMR1IF = 0; // no interrupt flag
INTF = 0; //related with INTCON register in void main, set to 0 here to clear interrupt.
}
else if(TMR1IF)
{
RA0 = 1; // RA0 set high when interrupt occurs
}
else if(TMR2IF)
{
RA1 = 1;
}

}

void main()
{
TRISA = 0x0; //Set as an output on PortA
TRISB = 0x1; //Set as an input on PortB
RA0 = 0; // RA0 always set low
RA1 = 0;

INTEDG = 0x1; // Set to trigger off the rising clock edge.
INTCON = 0x90; //this is our control and status of our interrupts.
T1CON = 0x3d; // sets the prescaler value of clock 1:8, oscillator enabled,internal clock selected
TMR1IE = 1;
TMR1IF = 0; // set at zero, flags are seen when = 1

T2CON = 0x7F;
TMR2IE = 1;
TMR2IF = 0;
PEIE = 1;
PR2 = 0xFF;

while(1);
}
 
Hi,

There are control registers (TMR1ON, TMR2ON) that enable and disable the timers on 16f877. I did not see where they are explicitly being set.

I would also personaly reset the relevant timers once the interrupt has occured (does tmr2 get reset if tmr1 has caused an interrupt?).

How is the INTF being triggered?
 
spirosd said:
Hi,

There are control registers (TMR1ON, TMR2ON) that enable and disable the timers on 16f877. I did not see where they are explicitly being set.

I would also personaly reset the relevant timers once the interrupt has occured (does tmr2 get reset if tmr1 has caused an interrupt?).

How is the INTF being triggered?
yeah , i am the beginner . can u help me . post the link to the C compiler for PIC . thanks
 
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top