3
CCS :: View topic - INT0 interrupt 18F242 http://ccsinfo.com/forum/viewtopic.php?t=25558&highlight=inte ... 1 от 3 01.3.2007 г. 11:24 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 Joined: 02 Jan 2006 Posts: 3 Location: Geistingen, Limburg, Belgium INT0 interrupt 18F242 Posted: Mon Jan 02, 2006 6:56 am Hello, 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() {

CCS _ View topic - INT0 interrupt 18F242

Embed Size (px)

Citation preview

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

1 от 3 01.3.2007 г. 11:24

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

Joined: 02 Jan 2006Posts: 3Location: Geistingen, Limburg, Belgium

INT0 interrupt 18F242Posted: Mon Jan 02, 2006 6:56 am

Hello,

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()

{

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

2 от 3 01.3.2007 г. 11:24

/* 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

Joined: 18 Mar 2004Posts: 1334Location: The Netherlands

Posted: Mon Jan 02, 2006 8:39 am

Code:

/* Allow pin B0 to be an external interrupt pin */ 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

Joined: 08 Sep 2003Posts: 813Location: Buenos Aires la Reina del Plata

Posted: Mon Jan 02, 2006 11:26 am

Quote:

At the moment i'm trying to generate an external interrupt on the PIC 18F242. 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.)

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

3 от 3 01.3.2007 г. 11:24

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 PostsAll Posts Oldest FirstOldest First Go

CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours

Page 1 of 1

Jump to: General CCS C DiscussionGeneral CCS C Discussion Go

You can post new topics in this forumYou can reply to topics in this forum

You cannot edit your posts in this forumYou cannot delete your posts in this forum

You cannot vote in polls in this forum

Powered by phpBB © 2001, 2005 phpBB Group