با سلام خدمت دوستان عزیز و مدیران سایت
همونطور که میدونیم برای استفاده از اینتراپت تایمر های PIT و RTT باید از وقفه شماره یک یا (SYS) استفاده کرد
ولی در نرم افزار Keil هر کاری که کردم نتونستم این کار رو انجام بدم
تمام تنظیمات مربوط به تایمر PIT رو انجام دادم ولی هیچ وقفه ای ایجاد نمیشه لطفا راهنمایی بفرمایید
همونطور که میدونیم برای استفاده از اینتراپت تایمر های PIT و RTT باید از وقفه شماره یک یا (SYS) استفاده کرد
ولی در نرم افزار Keil هر کاری که کردم نتونستم این کار رو انجام بدم
تمام تنظیمات مربوط به تایمر PIT رو انجام دادم ولی هیچ وقفه ای ایجاد نمیشه لطفا راهنمایی بفرمایید
کد:
#include <meisam_sam7s64io.h> #include <meisam_delay.h> // chon dar lcd.c be tore dasti "meisam_delay.h" ra include karde am inja naabyed benevisim #include <meisam_micro_init.h> #include <lcd.h> #include <lcd.c> #include <stdio.h> int i=45; void pit_meisam_interrupt (void) __irq { unsigned int dm; dm=*AT91C_PITC_PIVR; dm=dm; *AT91C_AIC_ICCR = (1 << AT91C_ID_SYS); /* Interrupt Ack*/ *AT91C_AIC_EOICR = 0; /* End of Interrupt*/ i++; } void pit_init() { *AT91C_PITC_PIMR =0x30B749E; // compare with RC interrupt & mck/128 AT91C_AIC_SVR[AT91C_ID_SYS] = (unsigned int) pit_meisam_interrupt; AT91C_AIC_SMR[AT91C_ID_SYS] = 0x23; *AT91C_AIC_ICCR=(1<<AT91C_ID_SYS); *AT91C_AIC_IECR=(1<<AT91C_ID_SYS); }; int main() { int j=45; unsigned char c[16]; disable_watchdog(); enable_external_reset(); oscilators_init(1); //0=32k internal 1=48M crystal(18432M) pit_init(); delay(48000,1000); lcd_pininit(7,9,10,11,12,26,25,24,13,14); //(PA13->4lcd PA24->6lcd PA25->7lcd PA26->8lcd PA12->9lcd PA11->10lcd PA10->11lcd PA9->12lcd PA8->13lcd PA7->14lcd) lcd_init(); lcd_clear(); while(1) { delay(48000,1000); lcd_gotoxy(0,0); sprintf(c,"salam: %2d %2d",i,j); lcd_putsf(c); j++; } }
دیدگاه