Reply by Ron Blancarte●September 26, 20072007-09-26
Ok, I THOUGH I was following the C18 compiler User guide to a T, but I
am having trouble getting the interrupts to work right.
I am working with a PICDEM HPC, which has a 18F8722 as the main chip,
I am just trying something simple to get an understanding of their
interrupt system.
The HPC demo board has 8 LEDs on PortD, the code powers every other
LED 1010 1010.
When I don't include the ioA.x files in my project - everything works
as expected. When I reset the board, the 4 LEDs come on. But when I
compile the code w/ ioA.c and ioA.h as part of the project, then
nothing happens. When I reset the board, the LEDs light up.
So:
1. Is something wrong w/ my code (which does compile BTW)?
2. Am I expecting the wrong thing to happen?
3. ???
Stumped, looking for some direction.
RonB
//main.c
#include <p18cxxx.h>
#include "ioA.h"
#include "ports.h"
#include "RS232_IO.h"
void setup(void)
{
setupPorts();
RCON = 0x80;
IPR1 = 0x20;
INTCON = 0x80;
}
void main(void)
{
setup();
while(1){};
}
//-------------------------
// ports.c
#include <p18cxxx.h>
#include "ports.h"
void setupPorts(void)
{
LATD = 0xAA;
TRISD = 0;
}
//-------------------------
// ports.h
#ifndef PORTS_H
#define PORTS_H
void setupPorts(void);
#endif
//-------------------------
// ioa.c
#include <p18cxxx.h>
#include "IOA.H"
#include <usart.h>
#pragma code rx_interrupt=0x08
void rx_int(void)
{
_asm goto rx_handler _endasm
}
#pragma code
#pragma interrupt rx_handler
void rx_handler(void)
{
PIR1bits.RCIF = 0;
}
#pragma code
//-------------------------
// ioa.c
#ifndef IOA_H
#define IOA_H
void rx_handler(void);
#endif
//-------------------------
// ioa.h
#ifndef IOA_H
#define IOA_H
void rx_handler(void);
#endif