PicNewbie
21.07.2010, 11:02
Hi,
ich hätt da ma ne Frage:
Ich versuche das "interrupt on change" Feature beim PIC18F4620 auf nem PICDEM2 PLUS Board zu verwenden.
(Wenn ich den PIC auf steigende/fallende Flanke konfiguriere klappt das wunderbar. )
Wenn ich jetzt interrupt on change aktiviere, habe ich entweder nichts auf meinem Ausgangspin oder in einem festen Abstand immer ein Interrupt.
Der Abstand beträgt 2,2us bzw. das kommt mit 460Hz. Ich verwende ein 8MHz Quarz mit 4xPLL.
Ich habe das auch wenn ich den ICD Stecker drin/draussen habe ( der hängt an den gleichen Ports ).
Muss ich alle nicht verwendeten Ports mim Pulldown versehen? ( mit dem internen PullUp gehts nicht -> gleiches Ergebnis wie aufm Bild )
hier mal der Code:
#include <p18f4620.h>
void main (void);
void InterruptHandlerHigh (void);
void main ()
{
TRISB=0b11111001;
LATB=0b00000010;
INTCONbits.RBIF=0;
INTCON2=0b10000001;
INTCON3=0b00000000;
RCONbits.IPEN=1;
INTCON=0b00001000;
INTCONbits.GIE=1;
while (1)
{
}
}
#pragma code InterruptVectorHigh = 0x08
void InterruptVectorHigh (void)
{
_asm
goto InterruptHandlerHigh
_endasm
}
#pragma code
#pragma interrupt InterruptHandlerHigh
void
InterruptHandlerHigh ()
{
LATBbits.LATB2 = 1;
LATBbits.LATB2 = 0;
INTCONbits.RBIF=0;
}
ich dank euch!
Steffen
ich hätt da ma ne Frage:
Ich versuche das "interrupt on change" Feature beim PIC18F4620 auf nem PICDEM2 PLUS Board zu verwenden.
(Wenn ich den PIC auf steigende/fallende Flanke konfiguriere klappt das wunderbar. )
Wenn ich jetzt interrupt on change aktiviere, habe ich entweder nichts auf meinem Ausgangspin oder in einem festen Abstand immer ein Interrupt.
Der Abstand beträgt 2,2us bzw. das kommt mit 460Hz. Ich verwende ein 8MHz Quarz mit 4xPLL.
Ich habe das auch wenn ich den ICD Stecker drin/draussen habe ( der hängt an den gleichen Ports ).
Muss ich alle nicht verwendeten Ports mim Pulldown versehen? ( mit dem internen PullUp gehts nicht -> gleiches Ergebnis wie aufm Bild )
hier mal der Code:
#include <p18f4620.h>
void main (void);
void InterruptHandlerHigh (void);
void main ()
{
TRISB=0b11111001;
LATB=0b00000010;
INTCONbits.RBIF=0;
INTCON2=0b10000001;
INTCON3=0b00000000;
RCONbits.IPEN=1;
INTCON=0b00001000;
INTCONbits.GIE=1;
while (1)
{
}
}
#pragma code InterruptVectorHigh = 0x08
void InterruptVectorHigh (void)
{
_asm
goto InterruptHandlerHigh
_endasm
}
#pragma code
#pragma interrupt InterruptHandlerHigh
void
InterruptHandlerHigh ()
{
LATBbits.LATB2 = 1;
LATBbits.LATB2 = 0;
INTCONbits.RBIF=0;
}
ich dank euch!
Steffen