PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مشکل برنامه نویسی اینتراپت



vasa
03-05-2010, 22:44
عرض سلام و ادب خوبید همگی
آقا من این کدو نوشتم واسه راه اندازی اینتراپت تایمر نوشتم ولی کار نمیکنه مشکل چیه؟؟؟
#include<AT91SAM7X256.H>
#include<delay.h>

__irq void T0_handler(void)
//* Begin
{
if ( (*AT91C_PIOB_ODSR&0x00080000)==0x00000000)
*AT91C_PIOB_ODSR=0x00080000; /*turn on LED*/
else *AT91C_PIOB_ODSR=0x00000000;/*turn off LED*/

*AT91C_AIC_ICCR = (1 << AT91C_ID_TC0);
*AT91C_AIC_EOICR = *AT91C_TC0_SR; /*Interrupt Ack*/
}
//* End

void main ( void )
//* Begin
{

*AT91C_CKGR_MOR=0x00000701; //enable processor & programmable clocks
while(AT91C_PMC_MOSCS==0);

*AT91C_CKGR_PLLR=0x00040801; // Mul=4+1 Div=1
while(AT91C_PMC_LOCK==0);

*AT91C_PMC_MCKR=0x00000004;
while(AT91C_PMC_MCKRDY==0);
*AT91C_PMC_MCKR=0x00000007; // select (PLL clk)/2
while(AT91C_PMC_MCKRDY==0);

*AT91C_PMC_PCER=0xC0001008; //Enable peripherals Ports & Timer0


*AT91C_PIOB_PER = 0x00080000 ; /* Enable the PIO/LED8 pin */
*AT91C_PIOB_OER = 0x00080000; /* Enable the PIO/LED8 pin as Output */
*AT91C_PIOB_CODR = 0x00080000;/* turn off LED */
*AT91C_PIOB_OWER = 0x00080000;/* Enable output write */


AT91C_AIC_SVR[12] = (unsigned int) T0_handler; /* Set the TC1 IRQ handler address */
AT91C_AIC_SMR[12] = 0x00000000; /* Set the trigg and priority for TC1 interrupt */
*AT91C_AIC_ICCR = (1<<12) ; /* Clear the TC1 interrupt */
*AT91C_AIC_IECR = (1<<12) ; /* Enable the TC1 interrupt */

*AT91C_TC0_CCR = 0x00000002; /* Disable the Clock Counter */
*AT91C_TC0_CMR = 0x00000004; /* Set the TIMER_CLOCK5 */
*AT91C_TC0_CCR = 0x00000001; /* Enable the Clock counter */
*AT91C_TC0_CCR = 0x00000004; /* Trigger timer */
*AT91C_TC0_IER = 0x00000001; /* Enable timer overflow interrupt */



while (1) {

}
}//*End

ضمنا تایمر به درستی داره کار میکنه , پرچم overflow اون هم همینطور , روتین اینتراپتو اگه به صورت یه تابع call کنم بازم کار میکنه (همشونو چک کردم) ولی خودش توی روتین اینتراپت نمیره که نمیره
من واقعا دیگه عقلم به جایی قد نمیده
ممنون

Ali_Salehi
04-05-2010, 04:49
سلام.. منه م هر کار کردم نتونستم اسنتراپت رو توی keil راه بندازم.. فکر میکنم مشکل از کامپایلر باشه...اما توی IAR همه ی sample های اینتراپتی atmel درست کار میکنه.!!!

vasa
04-05-2010, 23:32
کشفیدمممممممممممممممممممم ممممممممممممممممممممممممم
همه چی آرومه من چقد خوشحالممممممممممممممممممم ممممممممم aa)
آقا داستان اینه : مشکل این بوده که فایل start up درست لینک نمیشده به برنامه اصلی و واسه اصلاح این کار برید تو keil بعدش روی پروژه راست کلیک کنید و option را انتخاب کنید و بعد در تب linker تیک use memory layout from target dialog را فعال نمایید. به همین سادگی
مخلص همگی :wink: