Вы находитесь на странице: 1из 3

CCS :: View topic - INT0 interrupt 18F242 http://ccsinfo.com/forum/viewtopic.php?t=25558&highlight=inte...

FAQ Forum Help Official CCS Support Search Register

Profile Log in to check your private messages Log in

INT0 interrupt 18F242

CCS Forum Index -> General CCS C Discussion

View previous topic :: View next topic

Author Message

Blob INT0 interrupt 18F242


Posted: Mon Jan 02, 2006 6:56 am

Joined: 02 Jan 2006 Hello,


Posts: 3
Location: Geistingen,
Limburg, Belgium At the moment i'm trying to generate an external interrupt on the PIC 18F24.

i want to generate the interrupt on pin RB0.


but it seems the interrupt is not catched...

the code i use is as below:

#include <18F242.H>
#fuses HS,NOWDT, NOPROTECT, PUT
#use DELAY (clock=20000000)

#use fast_io(A)
#use fast_io(B)

//int i;
//int x;
//int c;

#int_ext
void EXT_ISR()
{
output_high(PIN_A0);
delay_ms(200);
delay_ms(200);
delay_ms(200);
delay_ms(200);
delay_ms(200);
delay_ms(200);
output_high(PIN_A0);
}

/* main() */

void main()
{

1 от 3 01.3.2007 г. 11:24
CCS :: View topic - INT0 interrupt 18F242 http://ccsinfo.com/forum/viewtopic.php?t=25558&highlight=inte...

/* Set pin A1 to be the blue led */


SET_TRIS_A(0x00);
/* Allow pin B0 to be an external interrupt pin */
SET_TRIS_B(0b00010000);

ext_int_edge(H_TO_L);
enable_interrupts(global);
enable_interrupts(int_rb);
while(1)
{
output_high(PIN_A3);
}
}

Greets,
Blob
_________________
IMEC rulez

ckielstra Posted: Mon Jan 02, 2006 8:39 am

Code:
Joined: 18 Mar 2004
Posts: 1334 /* Allow pin B0 to be an external interrupt pin */
Location: The Netherlands SET_TRIS_B(0b00010000);
You are configuring B4 as an input but your comment says B0.

Code:
#int_ext
void EXT_ISR()
{
output_high(PIN_A0);
delay_ms(200);
delay_ms(200);
delay_ms(200);
delay_ms(200);
delay_ms(200);
delay_ms(200);
output_high(PIN_A0);
}

Change one of the output_high() calls to output_low().


And why do you call 6 x delay_ms(200) when one call to delay_ms(1200) would do the same?

Humberto Posted: Mon Jan 02, 2006 11:26 am

Quote:
Joined: 08 Sep 2003
Posts: 813
Location: Buenos Aires la At the moment i'm trying to generate an external interrupt on the PIC 18F242.
Reina del Plata i want to generate the interrupt on pin RB0.
but it seems the interrupt is not catched...

enable_interrupts(int_rb);
Should be
enable_interrupts(INT_EXT);

I assume you have a pull-up resistor wired from +5V to PIN RB0 or:
port_b_pullups(TRUE); declared in your code.

It is not a good practice to use delays inside an interrupt handler !!!

To 'see' the RB0 interrupt action, the following code should be enough.
(If your compiler version has the output_toggle() function.)

2 от 3 01.3.2007 г. 11:24
CCS :: View topic - INT0 interrupt 18F242 http://ccsinfo.com/forum/viewtopic.php?t=25558&highlight=inte...

Code:

#int_ext
void EXT_ISR()
{
output_toggle(PIN_A0);
}

or if it doesn't:

Code:

int8 ext_trigger;

#int_ext
void EXT_ISR()
{
output_high(PIN_A0);
ext_trigger = TRUE;
}

void main()
{
while(1)
{
.......
your stuff
.......

if(ext_trigger)
{
delay_ms(200);
output_low(PIN_A0);
delay_ms(200);
ext_trigger = FALSE;
}
}
}

Best wishes,

Humberto

Display posts from previous: All Posts Oldest First Go

All times are GMT - 6 Hours


CCS Forum Index -> General CCS C Discussion

Page 1 of 1

Jump to: General CCS C Discussion Go

You can post new topics in this forum


You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

Powered by phpBB © 2001, 2005 phpBB Group

3 от 3 01.3.2007 г. 11:24

Вам также может понравиться