NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 4814 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 9 از 9

موضوع: كمك در برنامه نويسي arm

  1. #1
    کاربر علاقه مند
    تاریخ عضویت
    Jun 2010
    نام
    تهران
    نوشته ها
    71
    تشکر
    35
    تشکر شده 7 بار در 6 پست

    Icon16 كمك در برنامه نويسي arm

    سلام
    من دارم با ميكرو آرم يه برنامه مي نويسم توي اين برنامه من مي خوام كه يه زمان تاخير نيم ساعت داشته باشم طبق اون چيزي كه در مجله شماره 1 گفته شده
    زمان=(x*5) تقسيم بر f به ما مقدار عددي كه بايد در حلقه for شمارش ميشه رو ميده ، من استفاده كردم ولي متاسفانه اين روش به من مقدار زمان دلخواهم كه يه تاخير نيم ساعته هست نمي ده ،اگر كسي لطف كنه و بگه كه چطوري من مي تونم اين زمان تاخير نيم ساعته رو داشته باشم ممنون ميشم

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  3. #2
    مدیر باز نشسته shayanmelody آواتار ها
    تاریخ عضویت
    Jan 2011
    نام
    شایان نیکزاد
    نوشته ها
    576
    تشکر
    283
    تشکر شده 1,038 بار در 473 پست

    پیش فرض

    الگوی کار همونه . حالا شما لطف کن بگو چه عددی گذاشتی بعنوان شاخص و فرکانس کاری میکرو را هم بذار تا ببینیم چی به چیه .

  4. #3
    کاربر علاقه مند
    تاریخ عضویت
    Sep 2010
    نام
    امیر جوهری
    نوشته ها
    54
    تشکر
    10
    تشکر شده 12 بار در 9 پست

    پیش فرض

    سلام
    عجب کاری می خواهید بکنید شما؟
    اون کاری که تو مجله کرده (n=110592000) ولی هدر delay موجوده و کار با تایمرها رو هم که تو ویرایش جدید گفتن

  5. #4
    کاربر علاقه مند
    تاریخ عضویت
    Jun 2010
    نام
    تهران
    نوشته ها
    71
    تشکر
    35
    تشکر شده 7 بار در 6 پست

    پیش فرض

    سلام
    من دارم با ميكرو آرم كار مي كنم فركانسم 18.432mhz ،برنامه من به اين صورت كه هر نيم ساعت يكبار ميياد خروجي كانال هاي adc(به ترتيب از كانال صفر تا كانال7) هرنيم ساعت يكبار به يك شماره sms مي كنه ودر ضمن زمان هم روي lcdنشون بده، حالا من مي خوام بدونم با چه كاري كنم تا اين نيم ساعتو و دقيق داشته باشم ، اگه بخوام delay بزارم برنامم جواب نميده پس مي خوام بدونم فرمولي يا چيزي هست اگه كسي چيزي ميدونمه ممنون ميشم بگويد.

  6. #5
    تازه وارد
    تاریخ عضویت
    Feb 2010
    نوشته ها
    3
    تشکر
    1
    تشکر شده 0 بار در 0 پست

    پیش فرض

    سلام
    از تایمر بلادرنگ با فرکانس KHz 32.768 می تونی استفاده کنی.

  7. #6
    کاربر علاقه مند
    تاریخ عضویت
    Sep 2010
    نام
    امیر جوهری
    نوشته ها
    54
    تشکر
    10
    تشکر شده 12 بار در 9 پست

    پیش فرض

    سلام شما کافیه که PMM3 رو بخونید .

    فرکانس برد 18432000 هست شما کافیه با وقفه سریز یکی از تایمر ها 1 ثانیه درست کنید و تو برنامه وقفه یه شمارنده بذارید که هر موقع 1800 شد اون کاری رو که می خواین انجام بده.

    prescaler تون رو اگه 1024 بذارید ( تو مجله نوشته که برای بخش Wave چهار مد کاری داریم ) مثلا اگه با مد 2 کار کنید کافیه RC رو مقدار دهی کنید و یک ثانیه تولید کنید .


    مثلا این یه نمونه تولید 1 ثانیه است

    پیکربندی تایمر 1

    void Timer1_init(void)
    {
    *AT91C_PMC_PCER |=(1<< AT91C_ID_TC1);
    *AT91C_TC1_CMR|=0xC004;
    *AT91C_TC1_CCR|=0x05 ;
    *AT91C_TC1_RC =46769;
    *AT91C_TC1_IER = 0x10;
    *AT91C_AIC_SMR = 0x66;


    AT91C_BASE_AIC -> AIC_SVR[AT91C_ID_TC1]=(unsigned long) tc1_interrupt;
    AT91C_BASE_AIC ->AIC_IECR=(1<<AT91C_ID_TC1);

    }


    قسمت مربوط به وقفه سرریز تایمر 1

    __irq void tc1_interrupt (void)
    {




    *AT91C_TC1_CCR=0x04;


    // کد مربوط
    AT91C_AIC_EOICR = *AT91C_TC1_SR;
    }

  8. تشکرها از این نوشته :


  9. #7
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض

    سلام
    توی سری at91sam یه تایمر به نام rtt وجود داره که باهاش میشه زمانی از 0 تا 2 به توان 32 ثانیه رو به راحتی ایجاد کرد .
    نحوه ی کار باهاش در انتهای مجله ی شماره ی 4 ( ویرایش دوم ) توضیح داده شده .

  10. تشکرها از این نوشته :


  11. #8
    کاربر علاقه مند
    تاریخ عضویت
    Jun 2010
    نام
    تهران
    نوشته ها
    71
    تشکر
    35
    تشکر شده 7 بار در 6 پست

    پیش فرض

    سلام اقاي هاشمي ممنون از راهنماييهاتون من چند تا سوال دارم؟
    1-من دارم با ماژول آرم شما كار مي كنم كه فركانس كريستال اون 18.432mhz اگه بخوام از RTT استفاده كنم شما در مجله نوشتيد كه بايد از كرريستال 32678 استفاده كنم خوب حالا من بايد اين كارو چطور انجام بدم؟
    2- شما در مثالي كه اورديد مقاد شمارش شده روي پورت
    B قرار داديد ،توي اين مثال وقتي مي يايم مقدار شمارش شده روي پورت B قرار مي ديم دقيقا چه اتفاقي ميافته؟ تا چه زماني براي ما ميشمره؟
    3- من توي برنامم مي خوام كه در حين اجراي روند برنامه هر نيم ساعت يكبار خروجي كانال ADC بگيره اگه يه لطف كنيد و بيشتر توضيح بديد ممنون ميشم چون من چيز زياد از اين مثال نفهميدم خيلي ممنون ميشم براي توضيحاتتون

  12. #9
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض

    سلام
    1-من دارم با ماژول آرم شما كار مي كنم كه فركانس كريستال اون 18.432mhz اگه بخوام از rtt استفاده كنم شما در مجله نوشتيد كه بايد از كرريستال 32678 استفاده كنم خوب حالا من بايد اين كارو چطور انجام بدم؟
    اگه مطلب رو یه مقدار دقیق تر بخونید متوجه میشید که ما برای ساختن زمان دقیق 1 ثانیه ، به این کریستال نیاز داریم ( زمان دقیق 1000000 میکرو ثانیه ) ، شما میتونید با استفاده از فرمول های موجود در داخل مجله با استفاده از کریستال 18.432 مگا هرتز زمان مورد نظر رو ایجاد کنید .
    2- شما در مثالي كه اورديد مقاد شمارش شده روي پورت b قرار داديد ،توي اين مثال وقتي مي يايم مقدار شمارش شده روي پورت b قرار مي ديم دقيقا چه اتفاقي ميافته؟ تا چه زماني براي ما ميشمره؟
    شمارش در مبنای دسیمال هست که به صورت باینری بر روی پورت قرار میگره ، آخرین رقم برابر با 1111111111111111111111111111111 ( تعداد 31 عدد یک ) در مبنای باینری یا 4294967295 در مبنای دسیمال هست .
    3- من توي برنامم مي خوام كه در حين اجراي روند برنامه هر نيم ساعت يكبار خروجي كانال adc بگيره اگه يه لطف كنيد و بيشتر توضيح بديد ممنون ميشم چون من چيز زياد از اين مثال نفهميدم خيلي ممنون ميشم براي توضيحاتتون
    در کل عمل کرد این تایمر کاملا مجزا از سایر بخش های میکرو هست ، شما کافیه با استفاده از فرمول های موجود ، مقدار پرسیکال و سایر تنظیمات رو برای ایجاد کردن یک زمان پایه مثلا 1 یا 2 ثانیه مجاسبه کنید ، بعد مقدار رجیستر at91c_rttc_crtv; رو با عدد مثلا 1800 یا 900 مقایسه کنید تا ببنید زمان نیم ساعت سپری شده یا نه ، مهم نیست توی برنامه ی شما چه کدهای اجرا بشه ، چون این تایمر به صورت کاملا مستقل زمان رو میشمره .

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

  1. کدنويسي وقفه
    توسط Amirkhan_0o0 در انجمن LPC series (NXP)
    پاسخ: 2
    آخرين نوشته: 13-01-2013, 03:29
  2. برنامه نويسي به زبان جاوا
    توسط Division در انجمن برنامه نویسی کامپیوتر/کنترل با کامپیوتر
    پاسخ: 2
    آخرين نوشته: 28-01-2011, 01:08
  3. برنامه نويسي تابلو روان
    توسط mostafamega16 در انجمن برنامه نویسی کامپیوتر/کنترل با کامپیوتر
    پاسخ: 3
    آخرين نوشته: 20-01-2011, 16:07
  4. مشكل دربرنامه نويسي
    توسط منصوره$ در انجمن میکرو کنترلر های 32 بیتی(arm)
    پاسخ: 6
    آخرين نوشته: 26-09-2010, 12:52
  5. پاسخ: 23
    آخرين نوشته: 27-06-2009, 19:40

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

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