۱۰-بهمن-۱۳۹۱, ۱۴:۲۹:۲۰
۱۰-بهمن-۱۳۹۱, ۱۴:۵۵:۰۲
کد php:
AT91C_BASE_PIOB->PIO_PDSR & 1<<19)>>19 == 1)
کد php:
(AT91C_BASE_PIOB->PIO_PDSR & 1<<19) == 1<<19)
خيلي قشنگ سركارتون مي ذارهه
من با دوتا كامپايلر كار كردم.
اين كدهايي كه در سطح ريجستر هست در هر دوتا كامپايلر و در عمل جواب مي دهه.
تفاوت فقط موقع كار با وقفه هاست. باقيشون مثل هم هست ...
نكته ي ديگه هم اينكه ، حتما ديتاشيت يا يه كتاب مرجع موقع كد زني پيشتون باشه ...
sam7s و sam7x مقدار ID هاي peripheral هاشون ، تفاوت هايي دارهه ، همينطور براي استفاده از ويژگي هاي ديگه اي از پايه ها دو تا قسمت A و B وجود دارهه كه باز تفاوت هايي وجود دارهه ... .
از نظر خودم ، كد زني در سطح ريجستر واضح تر از استفاده از اون كتاب خونه هاست !
هادي خان در مورد ريجسترهاي PIO هم كه گفتم ، به جز چيزايي كه معرفي كردم ، هنوز ريجستر دارهه ...
اما ساختار ريجسترهاش به همون سبك 3تايي هست كه گفتم و صالح جان هم توضيح داد ...
۱۰-بهمن-۱۳۹۱, ۱۵:۰۶:۴۰
یافتم یافتم
الان تونستم همون فلاشر قبلی رو با رجیستر راه اندازی کنم
اینم برنامه اش؛
الان تونستم همون فلاشر قبلی رو با رجیستر راه اندازی کنم
اینم برنامه اش؛
کد:
#include <AT91SAM7X256.H>
#include <delay.h>
int main(void)
{
AT91C_BASE_PMC->PMC_PCER=(1<<AT91C_ID_PIOB);
AT91C_BASE_PIOB->PIO_PER=(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7);
AT91C_BASE_PIOB->PIO_OER=(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7);
while(1){
AT91C_BASE_PIOB->PIO_CODR=(1<<0|1<<2|1<<4|1<<6);
AT91C_BASE_PIOB->PIO_SODR=(1<<1|1<<3|1<<5|1<<7);
delay_ms(50);
AT91C_BASE_PIOB->PIO_CODR=(1<<1|1<<3|1<<5|1<<7);
AT91C_BASE_PIOB->PIO_SODR=(1<<0|1<<2|1<<4|1<<6);
delay_ms(50);
};
}
۱۰-بهمن-۱۳۹۱, ۱۵:۲۹:۰۰
کد php:
AT91C_BASE_PIOB->PIO_PDSR & 1<<19)>>19 == 1)
کد php:
AT91C_BASE_PIOB->PIO_PDSR & 1<<19)>>19 == 1)
pdf ندارین برای آموزش اینجا کتاب گیرم نیومد زبون اصلی هم مشکلی نیست برا ی آموزش رجیستر ها می خوام
راستی برای ال سی دی بریم سراغ کتابخونه یا نه
راستی این برنامه رو برای روشن کردن ال ای دی با کلید نوشتم تو عمل هم کار کرد
کد:
#include <AT91SAM7X256.H>
int main(void)
{
AT91C_BASE_PMC->PMC_PCER=(1<<AT91C_ID_PIOB);
AT91C_BASE_PIOB->PIO_PER=(1<<19);
AT91C_BASE_PIOB->PIO_OER=(1<<19);
AT91C_BASE_PMC->PMC_PCER=(1<<AT91C_ID_PIOA);
AT91C_BASE_PIOA->PIO_PER=(1<<26);
AT91C_BASE_PIOB->PIO_IFER=(1<<26);
AT91C_BASE_PIOB->PIO_PPUER=(1<<26);
while(1){
if((AT91C_BASE_PIOA->PIO_PDSR & 1<<26)>>26 == 0){
AT91C_BASE_PIOB->PIO_SODR=(1<<19);}
else{AT91C_BASE_PIOB->PIO_CODR=(1<<19);}
}}
۱۰-بهمن-۱۳۹۱, ۱۸:۳۶:۱۴
هادي جان روي كاغذ يه عمليات بيتي انجام بدهه خودت متوجه مي شي ، چيز عجيبي نيست!
در مورد كتاب ، كتاب فروشي هاي مركز استان ها حتما دارن. نمي دونم فروش اينترنتي دارهه يا نه.
به اميد هم مي توني بگي برات بفرسته
اما جدا توصيه مي كنم كتاب رو بگيري.
در مورد كتاب ، كتاب فروشي هاي مركز استان ها حتما دارن. نمي دونم فروش اينترنتي دارهه يا نه.
به اميد هم مي توني بگي برات بفرسته
اما جدا توصيه مي كنم كتاب رو بگيري.
۱۰-بهمن-۱۳۹۱, ۱۹:۴۵:۵۱
آقا این keil جدول lookup یا یه رجیستری داره که کارمون و تو مقداردهی متغیرها و پورت ها آسون کنه؟
۱۰-بهمن-۱۳۹۱, ۱۹:۴۹:۵۱
جدول lookup بچه بازي هاي بسكام هه ...
يه آرايه تعريف كن ، هر كاري خواستي انجام بدهه .
زبون C هست ديگه ... ، مثل كدويژن ...
يه آرايه تعريف كن ، هر كاري خواستي انجام بدهه .
زبون C هست ديگه ... ، مثل كدويژن ...
۱۰-بهمن-۱۳۹۱, ۲۰:۱۳:۱۳
خب الان بخوام یه متغیر رو برابر پورت b قرار بدم از چه دستوری استفاده کنم؟
این دستور درسته؟
این دستور درسته؟
کد:
AT91C_BASE_PIOB=a;
۱۰-بهمن-۱۳۹۱, ۲۰:۲۵:۳۶
د ن د ...!
خودت كه يه كد زدي ...
ببين :
بسته به كاري كه مي خواي كني بايد از ريجستر مربوطه استفاده كني ... ( جاي SODR )
خودت كه يه كد زدي ...
ببين :
کد php:
(AT91C_BASE_PIOB->PIO_SODR=a);
بسته به كاري كه مي خواي كني بايد از ريجستر مربوطه استفاده كني ... ( جاي SODR )
۱۰-بهمن-۱۳۹۱, ۲۲:۱۱:۵۱
(راه اندازی سون سگمنت با at91sam7x256)
بلاخره با کمی تلاش تونستم یه شمارنده 0 تا 9 با سون سگمنت راه اندازی کنم.
برنامه رو با یه فیلم کوتاه میذارم بقیه هم استفاده کنن.
این برنامه اش؛
فکر کنم نیاز به توضیح کامل برنامه نداشته باشه فقط برای راه اندازی سون سگمنت از کاتد مشترک استفاده کردم و یه متغیر تعریف کردم و از 0 تا 9 در مبنای هگز مقدار دهی کردم و بعد برابر بیت های 0 تا 6 پورت b قرار دادم.
نکته؛ پایه های سون سگمنت رو با مقاومت 330 اهم به میکرو وصل کنید.
خوش باشید.
فیلم کوتاه از عملکرد مدار
[attachment=8668]
بلاخره با کمی تلاش تونستم یه شمارنده 0 تا 9 با سون سگمنت راه اندازی کنم.
برنامه رو با یه فیلم کوتاه میذارم بقیه هم استفاده کنن.
این برنامه اش؛
کد:
#include <AT91SAM7X256.H>
#include <delay.h>
char seg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int main(void)
{
int i=0;
AT91C_BASE_PMC->PMC_PCER=(1<<AT91C_ID_PIOB);
AT91C_BASE_PIOB->PIO_PER=(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6);
AT91C_BASE_PIOB->PIO_OER=(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6);
while(1){
AT91C_BASE_PIOB->PIO_CODR=(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6);
i++;
if(i>9){i=0;}
AT91C_BASE_PIOB->PIO_SODR=seg[i];
delay_ms(500);
}
}
نکته؛ پایه های سون سگمنت رو با مقاومت 330 اهم به میکرو وصل کنید.
خوش باشید.
فیلم کوتاه از عملکرد مدار
[attachment=8668]
۱۱-بهمن-۱۳۹۱, ۰۰:۳۲:۰۹
سلام.
واقعا دمتون گرم خسته نباشید.
دوستان چندتاسوال ساده داشتم.
1.فرق iar با keil چیه؟
2.کدوم خفن تره؟
3.کدوم راحت تره؟
واقعا دمتون گرم خسته نباشید.
دوستان چندتاسوال ساده داشتم.
1.فرق iar با keil چیه؟
2.کدوم خفن تره؟
3.کدوم راحت تره؟