PDA

View Full Version : سریع ترین برد در اجرای دستورات



kolibri
چهارشنبه 30 دی 1394, 06:04 صبح
سلام؛
من برد آردوینو UNO CH340G رو دارم که می تونه هر دستور رو در 10 هزارم ثانیه اجرا کنه. به عبارتی اگر بخوام یک LED رو به صورت چشمک زن روشن خاموش کنم، نیاز به 20 هزارم ثانیه دارم تا یک حلقه روشن و خاموش اجرا بشه!!
در حالی که من به سرعت بسیار بالاتر از این نیازمندم!

void setup() {
pinMode(5,OUTPUT);
}



void turn(){
digitalWrite(5,HIGH);
}
void off(){
digitalWrite(5,LOW);
}
void loop() {
turn();
delay(10);
off();
delay(10);
}


در زمانهای کمتر از 1 صدم ثانیه عملی صورت نمی گیرد!
بردی هست که بسیار سریع تر باشه؟! برای چنین کاری باید چه قسمتی از برد توان بالایی داشته باشد؟ پردازنده؟!
Raspberry Pi 2 مناسبه؟!
با تشکر

مهدی کرامتی
چهارشنبه 30 دی 1394, 08:25 صبح
یک نگاه به مشخصات Arduino Due بیاندازید.

kolibri
پنج شنبه 01 بهمن 1394, 02:46 صبح
من نیاز به رعتی معادل 300 هزار بار در ثانیه دارم!!
چنین سرعتی رو داره؟! اصلا چنین چیزی هست؟!

مهدی کرامتی
پنج شنبه 01 بهمن 1394, 12:15 عصر
Arduino Uno که مبتنی بر ATMEGA328 است می تواند 16 میلیون دستور در ثانیه را اجرا کند (16MHZ). حال اینکه کد برنامه شما پس از کامپایل به زبان اسمبلی شامل چند Instruction خواهد بود مشخص می کند که برنامه شما با چه سرعتی می تواند اجرا شود. در صورت کم بودن سرعت می توانید از ATSAMD21G18 استفاده کنید (MCU استفاده شده در Arduino Zero) که با سرعت 48MHZ کار می کند.
MCU مورد استفاده در Arduino Due با سرعت 84 میلیون Instruction در ثانیه کار می کند (84MHZ).

kolibri
دوشنبه 05 بهمن 1394, 03:54 صبح
Arduino Uno که مبتنی بر ATMEGA328 است می تواند 16 میلیون دستور در ثانیه را اجرا کند (16MHZ). حال اینکه کد برنامه شما پس از کامپایل به زبان اسمبلی شامل چند Instruction خواهد بود مشخص می کند که برنامه شما با چه سرعتی می تواند اجرا شود. در صورت کم بودن سرعت می توانید از ATSAMD21G18 استفاده کنید (MCU استفاده شده در Arduino Zero) که با سرعت 48MHZ کار می کند.
MCU مورد استفاده در Arduino Due با سرعت 84 میلیون Instruction در ثانیه کار می کند (84MHZ).
به نظر اگر من بخواهم سرعت بیشتری در چشمک زدن LED هایم داشته باشم(هر ال ای دی حدود 300000 بار در ثانیه)، باید کد نویسی را تغییر دهم یا بوردم را؟! چون توضیحاتتون رو در مورد Instruction متوجه نشده ام.
با تشکر.

مهدی کرامتی
دوشنبه 05 بهمن 1394, 08:51 صبح
اگر بردی مورد نظر رو انتخاب کردید بقیه اش دیگه بستگی به کدنویسی شما داره.

Instruction به هر یک از دستوراتی گفته میشه که MCU در هر لحظه (هر Tick) اجرا میشه.

نیما عطایی
دوشنبه 05 بهمن 1394, 11:17 صبح
سلام
در مورد AVR معمولا با توجه به معماری و مدل حد اقل 12 پالس ساعت برای واکشی هر بایت از دستورات از حافظه و اجرا اون زمان لازمه
حالا با توجه به اینکه روشن کردن هر پورت 2 دستور اسمبلی محسوب میشه پس میشه محاصبه کنی که چه مقدار زمان لازمه تا یک پین روشن و خاموش بشه
در نظر بگیر فقط زمان روشن یا خاموش شدن نیست بلکه بازه ای که سطح منطقی به یک برسه هم زمان میبره
در بهترین حالت ولتاژ ورودی و چندین شرط دیگه حد اقل 6 سیکل دستوری طول میکشه تا یک پالس 0 و 1 ایجاد کنی
اونم هر 12 پالس ساعت کریستال

تازه اینها فقط به شرطی که همین یه دستور و داشته باشی

حالا کریستال و بزار و محاسبه کن
البته در avr ها پیشرفته تر ممکنه این عدد 12 بخاطر مدیریت ترد ها و ..... بیشتر هم بشه
موفق باشید

Masoud1344
سه شنبه 02 آذر 1400, 06:17 صبح
۳۰۰ هزار بار در ثانیه روشن و خاموش شدن یک ال ای دی مگر امکان داره پاسخ ال ای دی بنظر خیلی کند میاد