CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to support@ccsinfo.com

PIC18F27J13 Problems (big problems)

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
Besugo



Joined: 12 Mar 2011
Posts: 20

View user's profile Send private message

PIC18F27J13 Problems (big problems)
PostPosted: Thu Apr 07, 2011 4:37 am     Reply with quote

Hi.

Big issues in PIC18F27J13. Can't Interrupt, map pins and so on.

As for the most basic stuff, the external interrupts, i've gone to bit level, and done this:

Code:

#include <18F27J13.h>

#fuses HS,NODEBUG,NOXINST,NOPROTECT,NOWDT,NOCLOCKOUT,NOIOL1WAY
#fuses NOPLLEN,NOSTVREN,NOXINST,NODEBUG,NOFCMEN
#fuses NOIESO,NODSBOR,NODSWDT,NOWPFP,NOWPCFG,NOWPDIS
#use delay(internal=8MHz)


#byte INTCON = 0xFF2

#bit RBIF = INTCON.0
#bit INT0IF = INTCON.1
#bit TMR0IF = INTCON.2
#bit RBIE = INTCON.3
#bit INT0IE = INTCON.4
#bit TMR0IE = INTCON.5
#bit PEIE = INTCON.6
#bit GIE = INTCON.7

#int_ext
void isr()
{
   output_toggle(pin_A0);
}

void main()
{
   INTCON = 0x00;

   RBIF = 0;
   INT0IF = 0;
   TMR0IF = 0;
   RBIE = 0;
   INT0IE = 1;
   TMR0IE = 0;
   PEIE = 0;
   GIE = 1;   
   
   while(1)
   {
      output_high(pin_A1);
   }
}


- Can't clear RBIF flag
- INT0IE is set but interrupt don't fire

Tried the same code on a PIC18F2580 and it worked perfectly.

Any thoughts?
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Thu Apr 07, 2011 10:40 am     Reply with quote

If you suspect a compiler bug, always post your compiler version.
Ttelmah



Joined: 11 Mar 2010
Posts: 19446

View user's profile Send private message

PostPosted: Thu Apr 07, 2011 2:39 pm     Reply with quote

Some obvious comments:
You can never clear RBIF, if the source of this interrupt is true. This is why in the handler for this interrupt, you must read portB. So if the portB latch, happens to be waking up in a different state to the actual input pins, this bit won't clear. Read section 10.3 of the data sheet. The code to clear RBIF, is:
Code:

dummy=input_b();
delay_cycles(1);
RBIF=0;


This applies to all PIC's, being able to clear RBIF, without reading the port, is 'luck'.....

Get rid of the HS fuse. That the code runs at all, is again 'luck'. You can't have two oscillator selections made. You are using the internal oscillator, and selecting the external high speed crystal oscillator.

On this chip, you have PPS. You need first to ensure that the ADC is not using RB0, and make sure that no re-mappable peripheral is using RP3, to allow B0 to function as INT0.

Best Wishes
Besugo



Joined: 12 Mar 2011
Posts: 20

View user's profile Send private message

PostPosted: Sun Apr 10, 2011 5:07 am     Reply with quote

Thank you, all the issues are resolved with an ugrade to compiler version 4.114.
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot 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