امتیاز موضوع:
  • 5 رأی - میانگین امتیازات: 4.2
  • 1
  • 2
  • 3
  • 4
  • 5
شروعی دوباره برای میکروهای arm
نویسنده پیام
salehjg آفلاین
مدیر بخش
*****

ارسال‌ها: 1,281
موضوع‌ها: 133
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 9560
( 8557 تشکر در 2603 ارسال )
ارسال: #23
RE: شروعی دوباره برای میکروهای arm
Biggrin

AT91C_BASE_PIOB->PIO_PDSR & 1<<19)>>19 == 1)

Biggrin
۱۰-بهمن-۱۳۹۱, ۱۴:۲۹:۲۰
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : hadikh73, sharin
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #24
RE: شروعی دوباره برای میکروهای arm
کد php:
AT91C_BASE_PIOB->PIO_PDSR 1<<19)>>19 == 1
يا
کد php:
(AT91C_BASE_PIOB->PIO_PDSR 1<<19) == 1<<19
به اين موضوع خيلي دقت كنيد!
خيلي قشنگ سركارتون مي ذارهه Biggrin

من با دوتا كامپايلر كار كردم.
اين كدهايي كه در سطح ريجستر هست در هر دوتا كامپايلر و در عمل جواب مي دهه.
تفاوت فقط موقع كار با وقفه هاست. باقيشون مثل هم هست ...

نكته ي ديگه هم اينكه ، حتما ديتاشيت يا يه كتاب مرجع موقع كد زني پيشتون باشه ...
sam7s و sam7x مقدار ID هاي peripheral هاشون ، تفاوت هايي دارهه ، همينطور براي استفاده از ويژگي هاي ديگه اي از پايه ها دو تا قسمت A و B وجود دارهه كه باز تفاوت هايي وجود دارهه ... .

از نظر خودم ، كد زني در سطح ريجستر واضح تر از استفاده از اون كتاب خونه هاست ! Biggrin

هادي خان در مورد ريجسترهاي PIO هم كه گفتم ، به جز چيزايي كه معرفي كردم ، هنوز ريجستر دارهه ...
اما ساختار ريجسترهاش به همون سبك 3تايي هست كه گفتم و صالح جان هم توضيح داد ...

(آخرین ویرایش در این ارسال: ۱۰-بهمن-۱۳۹۱, ۱۵:۰۳:۰۱، توسط sharin.)
۱۰-بهمن-۱۳۹۱, ۱۴:۵۵:۰۲
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : omid_phoenix, salehjg, hadikh73
omid_phoenix آفلاین
مدیر بخش
*****

ارسال‌ها: 2,238
موضوع‌ها: 108
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 12682
( 15433 تشکر در 4574 ارسال )
ارسال: #25
RE: شروعی دوباره برای میکروهای arm
یافتم یافتمBiggrin
الان تونستم همون فلاشر قبلی رو با رجیستر راه اندازی کنم
اینم برنامه اش؛
کد:
#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);
};
}

۱۰-بهمن-۱۳۹۱, ۱۵:۰۶:۴۰
ارسال‌ها
پاسخ
تشکر شده توسط : hadikh73, salehjg
hadikh73 آفلاین
مدیــر کـل سایـت
*******

ارسال‌ها: 1,219
موضوع‌ها: 43
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 13641
( 14739 تشکر در 4686 ارسال )
ارسال: #26
RE: شروعی دوباره برای میکروهای arm
کد php:
AT91C_BASE_PIOB->PIO_PDSR 1<<19)>>19 == 1
کد php:
AT91C_BASE_PIOB->PIO_PDSR 1<<19)>>19 == 1
یکم در موردشون توضیح بدینبعد از & متوجه نمی شم چه اتفاقی مییقتهConfused
pdf ندارین برای آموزش اینجا کتاب گیرم نیومدQuestion زبون اصلی هم مشکلی نیستQuestion برا ی آموزش رجیستر ها می خوام
راستی برای ال سی دی بریم سراغ کتابخونه یا نه
راستی این برنامه رو برای روشن کردن ال ای دی با کلید نوشتم تو عمل هم کار کردHappy
کد:
#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);}
}}
از وقتی با رجیستر ها کار کردم تازه فهمیدم چی به چیهHeart

۱۰-بهمن-۱۳۹۱, ۱۵:۲۹:۰۰
ارسال‌ها
پاسخ
تشکر شده توسط : omid_phoenix
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #27
RE: شروعی دوباره برای میکروهای arm
هادي جان روي كاغذ يه عمليات بيتي انجام بدهه خودت متوجه مي شي ، چيز عجيبي نيست!
در مورد كتاب ، كتاب فروشي هاي مركز استان ها حتما دارن. نمي دونم فروش اينترنتي دارهه يا نه.
به اميد هم مي توني بگي برات بفرسته Biggrin
اما جدا توصيه مي كنم كتاب رو بگيري.

۱۰-بهمن-۱۳۹۱, ۱۸:۳۶:۱۴
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : hadikh73
omid_phoenix آفلاین
مدیر بخش
*****

ارسال‌ها: 2,238
موضوع‌ها: 108
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 12682
( 15433 تشکر در 4574 ارسال )
ارسال: #28
RE: شروعی دوباره برای میکروهای arm
آقا این keil جدول lookup یا یه رجیستری داره که کارمون و تو مقداردهی متغیرها و پورت ها آسون کنه؟

۱۰-بهمن-۱۳۹۱, ۱۹:۴۵:۵۱
ارسال‌ها
پاسخ
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #29
RE: شروعی دوباره برای میکروهای arm
جدول lookup بچه بازي هاي بسكام هه ... Biggrin
يه آرايه تعريف كن ، هر كاري خواستي انجام بدهه .
زبون C هست ديگه ... ،‌ مثل كدويژن ...

۱۰-بهمن-۱۳۹۱, ۱۹:۴۹:۵۱
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : omid_phoenix
omid_phoenix آفلاین
مدیر بخش
*****

ارسال‌ها: 2,238
موضوع‌ها: 108
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 12682
( 15433 تشکر در 4574 ارسال )
ارسال: #30
RE: شروعی دوباره برای میکروهای arm
خب الان بخوام یه متغیر رو برابر پورت b قرار بدم از چه دستوری استفاده کنم؟
این دستور درسته؟
کد:
AT91C_BASE_PIOB=a;

۱۰-بهمن-۱۳۹۱, ۲۰:۱۳:۱۳
ارسال‌ها
پاسخ
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #31
RE: شروعی دوباره برای میکروهای arm
د ن د ...!
خودت كه يه كد زدي ...
ببين :

کد php:
(AT91C_BASE_PIOB->PIO_SODR=a); 

بسته به كاري كه مي خواي كني بايد از ريجستر مربوطه استفاده كني ... ( جاي SODR )

۱۰-بهمن-۱۳۹۱, ۲۰:۲۵:۳۶
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : omid_phoenix, hadikh73
omid_phoenix آفلاین
مدیر بخش
*****

ارسال‌ها: 2,238
موضوع‌ها: 108
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 12682
( 15433 تشکر در 4574 ارسال )
ارسال: #32
RE: شروعی دوباره برای میکروهای arm
(راه اندازی سون سگمنت با at91sam7x256)
بلاخره با کمی تلاش تونستم یه شمارنده 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);
}
}
فکر کنم نیاز به توضیح کامل برنامه نداشته باشه فقط برای راه اندازی سون سگمنت از کاتد مشترک استفاده کردم و یه متغیر تعریف کردم و از 0 تا 9 در مبنای هگز مقدار دهی کردم و بعد برابر بیت های 0 تا 6 پورت b قرار دادم.
نکته؛ پایه های سون سگمنت رو با مقاومت 330 اهم به میکرو وصل کنید.
خوش باشید.

فیلم کوتاه از عملکرد مدار

.rar   7seg by at91sam7x256.rar (اندازه: 70.91 KB / تعداد دفعات دریافت: 102)

(آخرین ویرایش در این ارسال: ۱۰-بهمن-۱۳۹۱, ۲۳:۰۹:۱۰، توسط omid_phoenix.)
۱۰-بهمن-۱۳۹۱, ۲۲:۱۱:۵۱
ارسال‌ها
پاسخ
تشکر شده توسط : sharin, hadikh73, aKaReZa75
aKaReZa75 آفلاین
حسین باقری
*****

ارسال‌ها: 1,483
موضوع‌ها: 21
تاریخ عضویت: مرداد ۱۳۹۱

تشکرها : 4898
( 4575 تشکر در 1473 ارسال )
ارسال: #33
RE: شروعی دوباره برای میکروهای arm
سلام.
واقعا دمتون گرم خسته نباشید.
دوستان چندتاسوال ساده داشتم.
1.فرق iar با keil چیه؟
2.کدوم خفن تره؟
3.کدوم راحت تره؟

سلام، من حسین باقری هستم، طراح الکترونیک و برنامه نویس میکروکنترلر.
توی کانال یوتیوب من قراراه طراحی انواع بردهای الکترونیکی مثل بردهای تک لایه، دو لایه یا به طور کلی بردهای چند لایه، بردهای مبتنی بر میکروکنترلر، بردهای صنعتی، بردهای الکترونیک قدرت و بردهای فرکانس بالارو یاد بگیریم.
همینطور کدنویسی انواع میکروکنترلرهای 8 بینی مثل میکروکنترلرهای خانواده AVR-STM8، میکروکنترلرهای میبتی بر معماری ARM مثل STM32 و پردازنده های مخصوص اینترنت اشیاء مثل ESP32-ESP8266 و DSPها یاد میگیریم.
در کنار مباحث گفت شده، اصول اندازه الکترونیکی، نحوه صحیح مونتاژ و عیب‌یابی بردهای الکترونیکی، شبیه سازی مدارات مختلف رو هم یاد میگیریم.
اگر علاقه مند به یادگیری موضوعات عنوان شده هستید، به کانال یوتیوب من با آدرس زیر سر بزنید.
https://www.youtube.com/@aKaReZa75
۱۱-بهمن-۱۳۹۱, ۰۰:۳۲:۰۹
وب سایت ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Wink بررسی تمام میکروهای آرم با یکدیگر md3848 1 2,421 ۱۰-شهریور-۱۳۹۵, ۱۴:۵۴:۴۲
آخرین ارسال: md3848

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS