ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.






جهت تبلیغ در وب سایت ECA کلیک کنید.

کاربران برچسب زده شده

نمایش نتایج: از 1 به 10 از 10
  1. #1
    2007/12/19
    179
    13

    تعداد پالس ساعت استفاده شده براي هر دستور

    سلام دوستان
    آيا مرجعي هست که بگه هر دستور چند پالس ساعت مصرف مي کنه؟
    مثلا من با استفاده از تايمر و کانتر خروجي ها رو 0 و 1 کرده ام. بخشي از کد من:
    کد:
    // Timer 0 output compare interrupt service routine
    interrupt [TIM0_COMP] void timer0_comp_isr(void)
    {
    // Place your code here
    i++;
    if (i==7){
    PORTD.0=~PORTD.0;
    PORTD.2=~PORTD.2;
    }
    if (i==14){
    PORTD.1=~PORTD.1;
    PORTD.2=~PORTD.2;
    
    i=0;
    }
    }
    .
    .
    .
    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: 8000.000 kHz
    // Mode: CTC top=OCR0
    // OC0 output: Disconnected
    TCCR0=0x09;
    TCNT0=0x00;
    OCR0=0x07;
    که در اون تايمر با کلاک 8 مگ و در مد ctc تنظيم شده و هر 8 تا شمارش توي وقفه مي ره و کد هاي داخل وقفه هم نوشته مي شه. مي شه برام توضيح بدين هر چند ميکرو ثانيه وضعيت پين هاي خروجي تغيير پيدا مي کنه؟
    يعني عمليات i++ و if و ... در کد بالا چند پالس ساعت زمان مي بره؟
    ممنون
    اين که تعداد تشکر هاي اهدايي يه کاربر زياده به اين معنا نيست. که چيزي بلد نيست؛ بلکه نشانه اينه که به تلاش بقيه بچه ها احترام مي گذاره
  2. #2
    2012/12/30
    بوشهر
    3,208
    1,119

    پاسخ : تعداد پالس ساعت استفاده شده براي هر دستور

    طبق اینجا:

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    avr برای اجرای هر دستور به 1 سیکل کلاک نیاز داره و pic هم به 4 کلاک!
    تاپیک رو کامل بخونید. بحث جالبی شده.
  3. #3
    2007/03/15
    تبريز
    2,695
    136

    پاسخ : تعداد پالس ساعت استفاده شده براي هر دستور

    شما باید کد فوق رو به روش بیسک به اسمبلی تبدیل کنید .در این صورت بصورت خیلی دقیق میتون زمان اجرای برنامه رو حساب کنید . این دقت به دقت کریستال میکرو وابسته است .
    تقریبی بگم
    فرا خوانی تابع 3 پالس ساعت .y=function(x) m
    برگشت از تابع 4 پالس ساعت در مجموع 7 پالس ساعت
    افزایش متغر و مقدار دهی متغر با مقادیر ثابت یک پالس .i++. i=5
    انتساب مقدار یک متغیر به متغیر دیگه 2 پالس ساعت y=x
    خود حلقه ها 5 پالس ساعت .for- while -if -loop
    ضرب 8 بیتی 2 پالس ساعت
    جمع و تفریق 8 بیتی یک پالس ساعت
    پرش 2 پالس ساعت
    نوشتن عدد به حافظه یا io یک پالس ساعت .
    نوشتن حافظه به حافطه یا پورت به پورت 2 پالس ساعت


    با این حساب برنامه داخل تابع حدودا 25 پالس طول میکشه .
    تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
    داشتن عقله زيادتر از دیگر آدم ها است
  4. #4
    2007/03/15
    تبريز
    2,695
    136

    پاسخ : تعداد پالس ساعت استفاده شده براي هر دستور

    البته عدادی که گفتم در بهترین حالت و با هوشمندانه ترین الگوریتم قابل پیاده ساری است .
    مثلا خواندن از حافظه و نوشتن به حافظه y=x وقتی 2 پالس طول میکشه که ریجستر خالی در دست باشه . اگه نباشه ابتدا باید خود ریجستر رو به حافظه خالی کرد بعد عمل انتساب بعد دوباره مقدار قبلی ریجستر رو از حافظه لود کردن
    که شد 4 پالس .
    تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
    داشتن عقله زيادتر از دیگر آدم ها است
  5. #5
    2007/12/19
    179
    13

    پاسخ : تعداد پالس ساعت استفاده شده براي هر دستور

    ممنون از پاسخ کاملتون
    خود ورود به وقفه توي AVR مثل فراخواني تابع زمان مي بره؟
    مثلا توي آرم ورود و بازگشت از وقفه اگه اشتباه نکنم 11 سيکل زمان مي برد.
    اين که تعداد تشکر هاي اهدايي يه کاربر زياده به اين معنا نيست. که چيزي بلد نيست؛ بلکه نشانه اينه که به تلاش بقيه بچه ها احترام مي گذاره
  6. #6
    2012/12/30
    بوشهر
    3,208
    1,119

    پاسخ : تعداد پالس ساعت استفاده شده براي هر دستور

    نقل قول نوشته اصلی توسط aliila
    البته عدادی که گفتم در بهترین حالت و با هوشمندانه ترین الگوریتم قابل پیاده ساری است .
    مثلا خواندن از حافظه و نوشتن به حافظه y=x وقتی 2 پالس طول میکشه که ریجستر خالی در دست باشه . اگه نباشه ابتدا باید خود ریجستر رو به حافظه خالی کرد بعد عمل انتساب بعد دوباره مقدار قبلی ریجستر رو از حافظه لود کردن
    که شد 4 پالس .
    سلام
    میگم اینایی که گفتین فقط واسه AVR بود دیگه درسته؟
    میشه یه منبع هم بدین؟ البته اگه جسارت نباشه.
    بعد شما گفتین که به کلاک بستگی هم داره! منظور شما این بود که فقط سریعتر میشه درسته؟ یعنی تعداد کلاک ها کمتر نمیشه؟
  7. #7
    2007/12/19
    179
    13

    پاسخ : تعداد پالس ساعت استفاده شده براي هر دستور

    درواقع مشکل فلسفي من اينه:
    من اگه توي مثال بالا به جاي جمله هاي:
    کد:
    if (i==7){
    if (i==14){
    OCR0=0x07;
    بنويسم:

    کد:
    if (i==31250){
    if (i==62500){
    OCR0=0x255;
    با توجه به اين که:
    1=8000000/(256*31250)
    وضعيت خروجي ها هر 1 ثانيه تغيير مي کنه(دقت در حدي هست که يک ثانيه مورد قبول باشه)
    اما با مقادير پست اول، بايستي هر 7 ميکرو ثانيه وضعيت خروجي تغيير کنه. چرا که:
    ميکروثانيه7=8000000/(7*8)
    حالا هر چند سيکل تاخير، که در هندلر وقفه وجود داشته باشه، در هر دو حالت بايستي وجود داشته باشه.
    حالا سوالم اينه که چرا يک ثانيه تاخيرش جواب مي ده اما 7 ميکرو ثانيه نه!
    اميدوارم تونسته باشم منظورم رو بگم!
    اين که تعداد تشکر هاي اهدايي يه کاربر زياده به اين معنا نيست. که چيزي بلد نيست؛ بلکه نشانه اينه که به تلاش بقيه بچه ها احترام مي گذاره
  8. #8
    2013/01/24
    109
    11

    پاسخ : تعداد پالس ساعت استفاده شده براي هر دستور

    نقل قول نوشته اصلی توسط aliila
    شما باید کد فوق رو به روش بیسک به اسمبلی تبدیل کنید .در این صورت بصورت خیلی دقیق میتون زمان اجرای برنامه رو حساب کنید . این دقت به دقت کریستال میکرو وابسته است .
    تقریبی بگم
    فرا خوانی تابع 3 پالس ساعت .y=function(x) m
    برگشت از تابع 4 پالس ساعت در مجموع 7 پالس ساعت
    افزایش متغر و مقدار دهی متغر با مقادیر ثابت یک پالس .i++. i=5
    انتساب مقدار یک متغیر به متغیر دیگه 2 پالس ساعت y=x
    خود حلقه ها 5 پالس ساعت .for- while -if -loop
    ضرب 8 بیتی 2 پالس ساعت
    جمع و تفریق 8 بیتی یک پالس ساعت
    پرش 2 پالس ساعت
    نوشتن عدد به حافظه یا io یک پالس ساعت .
    نوشتن حافظه به حافطه یا پورت به پورت 2 پالس ساعت


    با این حساب برنامه داخل تابع حدودا 25 پالس طول میکشه .
    سلام دوست عزیز
    متشکرم از پاسختون اما فراخوانی تابع در میکروکنترلر ها ، به حافظه میکروکنترلر بستگی دارد و بین 4 تا 5 پالس ساعت طول میکشد
    برای انتساب مقدار یک متغیر به متغیر دیگه ابتدا باید متغیر از SRAM با دستور LDS یا LoaD Sram به رجیستر های عمومی ریخته بشه ، سپس با دستور STS از رجیستر عمومی به رجیستر دیگری در حافظه ، که در این صورت چهار پالس طول خواهد کشید ،
    من متوجه نشدم دقیقا کدام قسمت حلقه ها 5 پالس ساعت طول خواهد کشید ، این کاملا بستگی به زمانی داره که پروگرم کانتر در حلقه گیر کرده ، چون هر بار باید مقدار متغیر حلقه رو تغییر بده و چک کنه ،
    در بقیه موارد با شما موافقم جز مورد نوشتن حافظه به حافظه که توضیح دادم

    Good Luck
  9. #9
    2013/01/24
    109
    11

    پاسخ : تعداد پالس ساعت استفاده شده براي هر دستور

    سلام دوست عزیز
    بهترین کار از نظر من اینه که شما برنامه رو با AVR Studio هر ورژنی بود حتی 4.14 ، دیباگ کن ، قبل از ورود به وقفه تایمر (که خود شما باید پرچمش رو از پنجره ی i/o view یک کنی ) مقدار عددی stop watch در پنجره ی processor یادداشت کن ، و در انتهای وقفه هم یادداشت کن ، که چون واحد stop watch به میکروثانیه یا میلی ثانیه یا ثانیه هست میتونی زمان دقیق هر تابع یا زیربرنامه ای رو بفهمی

    Good Luck
  10. #10
    2016/12/26
    8
    0

    پاسخ : تعداد پالس ساعت استفاده شده براي هر دستور

    سلام. دوستان راهی هست که بتونم دقیق بسنجم هر دستور چنتا کلاک طول میکشه؟
    داخل atmel studio 7
نمایش نتایج: از 1 به 10 از 10

موضوعات مشابه

  1. شمارش تعداد پالس و نمایش آن بر روی lcd
    توسط alift90 در انجمن میکروکنترلرهای AVR
    پاسخ: 4
    آخرين نوشته: 2015/05/09, 14:06
  2. شمردن تعداد پالس
    توسط sinaitg در انجمن میکروکنترلرهای AVR
    پاسخ: 7
    آخرين نوشته: 2014/11/10, 08:20
  3. مشكل در تشخيص تعداد زنگ تلفن براي استفاده در ميكرو
    توسط mahdi210 در انجمن میکروکنترلرهای AVR
    پاسخ: 27
    آخرين نوشته: 2012/04/30, 10:38
  4. پاسخ: 0
    آخرين نوشته: 2011/05/19, 23:34
  5. تعداد دستور اسمبلی یک دستور زبان C
    توسط brm3 در انجمن میکروکنترلرهای AVR
    پاسخ: 2
    آخرين نوشته: 2011/02/09, 16:47

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •