سلام اساتید گرامی
برای یک پروژه مجبور به خواندن پورت D میکرو (PIC 18F66K80) از طریق وقفه PSP هستم
تمامی تنظیمات را انجام دادم
در حالت پولینگ مقدار رجیستر PSP_DATA درست تغییر می کند و بدون مشکل خوانده می شود
اما با اینکه وقفه و زیر روال درست تعریف شده وقفه PSP اتفاق نمی افتد و به زیر روال PSP نمی رود
به صورت دستی هم با یک کردن پرچم وقفه PSP به PSP می رود
پس میکرو از لحاظ سخت افزاری مشکلی ندارد
دوستان گرامی لطفا یاری فرمایید
خیلی عجله ای هم هست
تشکر
دلیل: ادغام دو پست برای جلوگیری از اسپم
#include <18F66K80.h>
#device PASS_STRINGS = IN_RAM
#device HIGH_INTS=TRUE
#device ADC=8
#fuses NOWDT // Watch Dog Timer
#fuses HSH,NOPUT,NOBROWNOUT
#fuses NOFCMEN,NOIESO,CPD
#fuses NOMCLR, NODEBUG, NOSTVREN, PROTECT
#fuses INTRC
#use delay(clock=64000000,crystal=16000000,restart_wdt)
#use rs232(UART1, baud=9600,parity=N,bits=8,stop=1,timeout=20,stream =PORT1)
#priority psp
#int_psp
void psp_isr() {
bitmem[90]=1;
intmem[2]=psp_data;
}
int8 psptemp=0;
void main() {
setup_psp(PSP_ENABLED);
enable_interrupts(GLOBAL);
enable_interrupts(INT_PSP);
while(TRUE)
{
if(psptemp!=psp_data){
psptemp=psp_data;
printf(psp_data);
}
}
}
برای یک پروژه مجبور به خواندن پورت D میکرو (PIC 18F66K80) از طریق وقفه PSP هستم
تمامی تنظیمات را انجام دادم
در حالت پولینگ مقدار رجیستر PSP_DATA درست تغییر می کند و بدون مشکل خوانده می شود
اما با اینکه وقفه و زیر روال درست تعریف شده وقفه PSP اتفاق نمی افتد و به زیر روال PSP نمی رود
به صورت دستی هم با یک کردن پرچم وقفه PSP به PSP می رود
پس میکرو از لحاظ سخت افزاری مشکلی ندارد
دوستان گرامی لطفا یاری فرمایید
خیلی عجله ای هم هست
تشکر
دلیل: ادغام دو پست برای جلوگیری از اسپم
#include <18F66K80.h>
#device PASS_STRINGS = IN_RAM
#device HIGH_INTS=TRUE
#device ADC=8
#fuses NOWDT // Watch Dog Timer
#fuses HSH,NOPUT,NOBROWNOUT
#fuses NOFCMEN,NOIESO,CPD
#fuses NOMCLR, NODEBUG, NOSTVREN, PROTECT
#fuses INTRC
#use delay(clock=64000000,crystal=16000000,restart_wdt)
#use rs232(UART1, baud=9600,parity=N,bits=8,stop=1,timeout=20,stream =PORT1)
#priority psp
#int_psp
void psp_isr() {
bitmem[90]=1;
intmem[2]=psp_data;
}
int8 psptemp=0;
void main() {
setup_psp(PSP_ENABLED);
enable_interrupts(GLOBAL);
enable_interrupts(INT_PSP);
while(TRUE)
{
if(psptemp!=psp_data){
psptemp=psp_data;
printf(psp_data);
}
}
}
دیدگاه