![](templates/subSilver/images/CCSLogo.jpg) |
![CCS C Software and Maintenance Offers](templates/subSilver/images/forumAd6.jpg) |
View previous topic :: View next topic |
Author |
Message |
technoclue
Joined: 24 Jul 2012 Posts: 3
|
Help please no interrupt works |
Posted: Wed Jul 25, 2012 3:51 pm |
|
|
have the following test example:
Code: |
#include <usb_bootloader.h>
#include <18F2550.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
//#FUSES WDT128 //Watch Dog Timer uses 1:128 Postscale
#FUSES HSPLL //High Speed Crystal/Resonator with PLL enabled
#FUSES NOPROTECT //Code not protected from reading
#FUSES BROWNOUT //brownout reset
//#FUSES BORV20 //Brownout reset at 2.0V
#FUSES PUT //Power Up Timer
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOLVP
#FUSES NOPBADEN //PORTB pins are configured as digital #FUSES WRTB //Boot block is write protected
#FUSES PLL5 //Divide By 5(20MHz oscillator input for 48Mhz)
#FUSES CPUDIV1 //System Clock by 1 for 48Mhz
#FUSES USBDIV //USB clock source comes from PLL divide
#FUSES VREGEN //USB voltage regulator enabled
#use delay(clock=48000000)
#define LED1 PIN_A4
BYTE blink = 0;
#int_rb
void button_isr() {
delay_ms (20); //debounce
if( !input(PIN_B4) && !blink )
blink = 1;
else if( !input(PIN_B4) && blink )
blink = 0;
}
void main() {
set_tris_b(0b11111111);
enable_interrupts(global);
enable_interrupts(int_rb);
ext_int_edge( H_TO_L );
do {
if(blink){
output_high(LED1);
delay_ms(500);
output_low(LED1);
delay_ms(500);
}
} while (TRUE);
}
|
Using CCS v4 none of any interrupt works, what is going on?
Can anybody help |
|
![](templates/subSilver/images/spacer.gif) |
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Wed Jul 25, 2012 4:07 pm |
|
|
It works for me. I tested it in hardware with an 18F4550 (same PIC family)
with vs. 4.135. Have you ever made the PIC do anything, such as
blinking an LED ? Do you know that the PIC works ?
Is this a real hardware project or Proteus ?
That's not a version number. These are version numbers:
http://www.ccsinfo.com/devices.php?page=versioninfo
You know this. |
|
![](templates/subSilver/images/spacer.gif) |
technoclue
Joined: 24 Jul 2012 Posts: 3
|
|
Posted: Wed Jul 25, 2012 5:55 pm |
|
|
Quote: |
Have you ever made the PIC do anything, such as
blinking an LED ? Do you know that the PIC works ?
|
Yes I have. I tried making LED1 to blinking in loop if the port PIN_B4 detects high and it works meaning B4 is set correctly and LED1 outputting, what else I could try? Tried to test uart, spi on PIC they work fine using same compiler.
Note: I use FS USB Demo tool for boot loader, the PIC18LF2550 is loaded with generic FSUSB boot loader so above fuses only works/compatible with it.
* CCS version v4.074, i doubt has to do with this problem.
* Hardware is on PCB and well designed to eliminate connection issues.
* Same PIC used with code using C18 compiler of Ext and pin change and timers all working..
* used the wizard to try to make only timer0 to setup and I found it is also does not function. I noticed INT_RB will not pass to next functions below
at enable_interrupts(GLOBAL);
while timer0, INT_EXT would pass/continue but still does not function.
I hope these info would pinpoint what is going on.
Quote: | Is this a real hardware project or Proteus ?
|
Yes it is a real HW on tested PIC. PIC powered by USB same link for bootloader, power verified to be accurate.
I edit this post several times to reflect few tries. I changed the PIC18LF2550 with PIC18F2550 and the same behavior occurs. I'm really baffled with this issue. Could it be a bug with CCS in development env. of Microchip generic bootloader driver? |
|
![](templates/subSilver/images/spacer.gif) |
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Thu Jul 26, 2012 1:39 pm |
|
|
I tested the program with vs. 4.074 and it also works OK.
I am not using your exact same test setup. Here are the differences:
1. I'm using 18F4550 instead of 18F2550, but that shouldn't make any difference.
2. I have an external 4.7K pull-up resistor on Pin B4. A pull-up is
essential to make pin B4 have the ability to go between a logic '1' and
a logic '0' level. I have a jumper wire connected to pin B4. When I
touch it briefly to ground, it puts a logic '0' on pin B4. When I remove
the wire, pin B4 goes to a '1' level. This is how I test the program.
I tap the wire to ground once, and the LED starts blinking. Then when
I tap it again, the LED stops blinking.
3. I am not using usb_bootloader.h, instead I am using ICD3 to program
the 18F4550. I commented out the usb_bootloader.h line at the top. |
|
![](templates/subSilver/images/spacer.gif) |
Ttelmah
Joined: 11 Mar 2010 Posts: 19369
|
|
Posted: Thu Jul 26, 2012 3:08 pm |
|
|
I wonder if the key is the position of usb_bootloader, and the fact that PCM_programmer is not using this.
Generally, the processor include, _must_ be before anything else.
I'd change the layout to have:
Processor include
any other #device lines
Fuses
clock settings
Then the bootloader include.
Global variables.
Then other includes
Then the other code
I'm not _sure_ for example, that the getenv function works correctly, before the processor is defined?.
Try with the standard layout, and see if things start working.
Best Wishes |
|
![](templates/subSilver/images/spacer.gif) |
technoclue
Joined: 24 Jul 2012 Posts: 3
|
|
Posted: Thu Jul 26, 2012 5:32 pm |
|
|
Ttelmah wrote: | I wonder if the key is the position of usb_bootloader, and the fact that PCM_programmer is not using this.
Generally, the processor include, _must_ be before anything else.
I'd change the layout to have:
Processor include
any other #device lines
Fuses
clock settings
Then the bootloader include.
Global variables.
Then other includes
Then the other code
I'm not _sure_ for example, that the getenv function works correctly, before the processor is defined?.
Try with the standard layout, and see if things start working.
Best Wishes |
I have the usb bootloader include comes just after the processor include, so the processor directive is the very first thing here.
PS. (PCM P..) You must had set the usb_boot.. below the 18F2550.h, do not you?
Because the compiler will complain #device expected. I had mistakenly set the code above...
I'm successfully running on this PIC SPI, Serial, SD Card access, ADC,.. but non of timers, int_ext or int_rb. I have discovered that putting 4.7K ohm on RB4 as "PCM ..." said will cause pressing long on Reset MCLR button will only Re-run the PIC and not getting into the bootloader. This indicates there maybe RB4 is originally set as the USB Sense on the bootloader, could be set as Boot button and only when this button set low the reset will activate the bootloader mode. So I'll use RB5,..RB7 for testing till I confirm by going into bootloader original code of what is RB4 is doing.
I checked the usb_bootloader header and could not find a relation to the interrupts part of it. I really appreciate if someone could direct me to an alternative to FS USB Demo BL, maybe using HID bootloader/ Serial what to use. I know previously I used Serial BL for 18F877 but it is not for 2550, and I do use HID BL but for the J series such as 18F26J50 which pic compatible with 2550 (may be you say why I do not use this darn thing instead) because the darn V4.047 does not support 26J50 so I do not have a device/header for it. Otherwise it would be much better.. I appreciate if someone share with me the HID bootloader if he/she has. I could compile the one came with michrochip solutions for 2550.
Please update me as soon as you can, thanks to all.. |
|
![](templates/subSilver/images/spacer.gif) |
|
|
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
|