Beste,
Ik wil mijn programma dat ik in mikroC geschreven heb, simuleren met de debugger van MikroC zelf. Maar als ik het wil simuleren loopt hij de main af maar komt hij niet in mijn interrupt gedeelte alhoewel ik toch mij GPIO ingang verandert. Weet iemand waarom dit komt of zien jullie de fout in mijn programma?
Alvast bedankt!
unsigned int teller = 0;
void interrupt(void){
if(INTCON.INTF == 1 ){ // Kijkt als er een interrupt is op GP2/INT
if(INTCON.GPIF == 1){ // Kijkt als er een interrupt is op GPIO
if(GP0_bit == 0){ // Kijkt als GP0 laag is
teller=teller+1; // Teller wordt 1
GP5_bit = 0;}
else if (GP0_bit ==1){
if (teller ==1){
GP5_bit = 1; // Zet GP5 terug hoog
INTCON.INTF = 0; // Clear Interrupt Flag
teller = 0;} // Teller op 0 zetten
else if (teller ==0){
GP5_bit = 1;
}
}
}
}
}
void main()
{
TRISIO = 0xDF; // Zet GP5 als output
GP5_bit = 0x20; // Zet GP5 hoog
INTCON.GIE = 1; // Enable Global Interrupt
INTCON.GPIE = 1; // Enables the GPIO change interrupt
INTCON.INTE = 1; // Enable RB0/INT external Interrupt
INTCON.PEIE = 1; // Enable all unmasked peripheral interrupt
OPTION_REG.INTEDG = 0; // Interrupt on falling edge
INTCON.INTF = 0; // Clear Interrupt Flag
INTCON.GPIF = 0; // Clear Interrupt Flag
IOC = 0x01; // Enable GPO als change bit
do {
Delay_ms(500);
} while (1);
}
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
hadv
Just find out what you like and let it kill you
Dit is een bekend probleem met ME: de debugger ondersteunt gewoon geen interrupts. Het ligt dus niet aan je programma.
Wat je kunt doen is het gegenereerde COF bestand laden in MPLab 8.xx door het naar het werkblad van de IDE te 'draggen' en vervolgens de source openen in MPLab. Je moet wel het device aangeven (Configure>Select device) en een debugger kiezen (Debugger>Select Tool). De ingebouwde SIM werkt prima voor dit soort zaken.