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

موضوع: 1 سوال ساده!!!

  1. #1
    کاربر فعال shahrivar88 آواتار ها
    تاریخ عضویت
    Jul 2011
    نام
    امیر عزیزی
    نوشته ها
    243
    تشکر
    173
    تشکر شده 201 بار در 109 پست

    پیش فرض 1 سوال ساده!!!

    #define T1_OVF_FREQ 100
    /* Timer1 clock prescaler value */
    #define T1_PRESC 1024L
    /* Timer1 initialization value after overflow */
    #define T1_INIT (0x10000L-(_MCU_CLOCK_FREQUENCY_/(T1_PRESC*T1_OVF_FREQ)))


    در خط سوم 1024L یعنی چه؟ L

  2. کاربران : 2 تشکر کرده اند از شما shahrivar88 برای ارسال این پست سودمند:


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

  4. #2
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    سلام

    به نظر میرسه قسمت پیکره بندی تایمر یک هست که براش Prescal = 1024 قرار داده شده. اون L باید آخر کلمه PRESC باشه. نیست؟
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  5. کاربران : 2 تشکر کرده اند از شما morteza_rk برای ارسال این پست سودمند:


  6. #3
    کاربر فعال
    تاریخ عضویت
    Jul 2010
    نام
    مرتضی مجتهدی
    نوشته ها
    313
    تشکر
    1
    تشکر شده 358 بار در 203 پست

    پیش فرض

    در c++ برای نمایش عدد long انتهای اون l می گذارن.

  7. کاربران : 5 تشکر کرده اند از شما modj.ir برای ارسال این پست سودمند:


  8. #4
    کاربر فعال shahrivar88 آواتار ها
    تاریخ عضویت
    Jul 2011
    نام
    امیر عزیزی
    نوشته ها
    243
    تشکر
    173
    تشکر شده 201 بار در 109 پست

    پیش فرض

    Example:

    /* ATmega128 I/O register definitions */
    #include <mega128.h>
    /* MMC/SD/SD HC card support */
    #include <sdcard.h>

    /* Timer1 overflow interrupt frequency [Hz] */
    #define T1_OVF_FREQ 100
    /* Timer1 clock prescaler value */
    #define T1_PRESC 1024L
    /* Timer1 initialization value after overflow */
    #define T1_INIT (0x10000L-(_MCU_CLOCK_FREQUENCY_/(T1_PRESC*T1_OVF_FREQ)))

    /* 100Hz timer interrupt generated by ATmega128 Timer1 overflow */
    interrupt [TIM1_OVF] void timer_comp_isr(void)
    {
    /* re-initialize Timer1 */
    TCNT1H=T1_INIT>>8;
    TCNT1L=T1_INIT&0xFF;
    /* card access low level timing function */
    disk_timerproc();

    /* the rest of the interrupt service routine */
    /* .... */

    }

    void main(void)
    {
    /* initialize Timer1 overflow interrupts in Mode 0 (Normal) */
    TCCR1A=0x00;
    /* clkio/1024 */
    TCCR1B=(1<<CS12)|(1<<CS10);
    /* timer overflow interrupts will occur with 100Hz frequency */
    TCNT1H=T1_INIT>>8;
    TCNT1L=T1_INIT&0xFF;
    /* enable Timer1 overflow interrupt */
    TIMSK=1<<TOIE1;
    /* globally enable interrupts */
    #asm("sei")

    /* the rest of the program */
    /* .... */

    while(1)
    {
    /* .... */

    }
    }


    این 1 نمونه برنامه توی هلپ کدویژنه برای mmc.(جهت مشاهده کد در help کد ویژن در قسمت index عبارت mmc را search نمایید)
    که گفته. هر 10 میلی ثانیه 1بار باید تایع disk_timerproc با استفاده از وقفه سرریز فراخوانی بشه.

    اما وقتی من 10 میلی ثانیه رو خودم ساختم برنامه کار نکرد.
    عددی که توی TCNT1L قرار میگیره -78 است!!
    اگر خودم -78 را مستقیما توی ریجستر میذارم کار میکنه که -78!!! با ماهیت تایمر ها همخوانی نداره!!!!

    ویرایش توسط shahrivar88 : 24-03-2013 در ساعت 23:35
    سرزمین من\r

    دانلود کتاب آموزش پورت سریال در c#

    http://www.iranmicro.ir/forum/showthread.php?t=9629

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


  10. #5
    کاربر فعال shahrivar88 آواتار ها
    تاریخ عضویت
    Jul 2011
    نام
    امیر عزیزی
    نوشته ها
    243
    تشکر
    173
    تشکر شده 201 بار در 109 پست

    پیش فرض

    /* ATmega128 I/O register definitions */
    #include <mega128.h>

    /* FAT on MMC/SD/SD HC card support */
    #include <ff.h>

    /* printf */
    #include <stdio.h>

    /* string functions */
    #include <string.h>

    /* Timer1 overflow interrupt frequency [Hz] */
    #define T1_OVF_FREQ 100
    /* Timer1 clock prescaler value */
    #define T1_PRESC 1024L
    /* Timer1 initialization value after overflow */
    #define T1_INIT (0x10000L-(_MCU_CLOCK_FREQUENCY_/(T1_PRESC*T1_OVF_FREQ)))

    /* USART Baud rate */
    #define BAUD_RATE 19200
    #define BAUD_INIT (_MCU_CLOCK_FREQUENCY_/(BAUD_RATE*16L)-1)

    /* 100Hz timer interrupt generated by ATmega128 Timer1 overflow */
    interrupt [TIM1_OVF] void timer_comp_isr(void)
    {
    /* re-initialize Timer1 */
    TCNT1H=T1_INIT>>8;
    TCNT1L=T1_INIT&0xFF;
    /* MMC/SD/SD HC card access low level timing function */
    disk_timerproc();
    }




    سرزمین من\r

    دانلود کتاب آموزش پورت سریال در c#

    http://www.iranmicro.ir/forum/showthread.php?t=9629

  11. #6
    کاربر فعال shahrivar88 آواتار ها
    تاریخ عضویت
    Jul 2011
    نام
    امیر عزیزی
    نوشته ها
    243
    تشکر
    173
    تشکر شده 201 بار در 109 پست

    پیش فرض

    کسی نظری نداره؟؟؟
    سرزمین من\r

    دانلود کتاب آموزش پورت سریال در c#

    http://www.iranmicro.ir/forum/showthread.php?t=9629

  12. #7
    مدیر انجمن Aghaeifar آواتار ها
    تاریخ عضویت
    Feb 2010
    نام
    علی آقائی فر
    نوشته ها
    751
    تشکر
    552
    تشکر شده 975 بار در 440 پست

    پیش فرض

    نقل قول نوشته اصلی توسط shahrivar88 نمایش پست ها

    اما وقتی من 10 میلی ثانیه رو خودم ساختم برنامه کار نکرد.

    چطور هر ده میلی ثانیه فراخونی کردید تابع رو؟ شما هم با تایمر؟

    نقل قول نوشته اصلی توسط shahrivar88 نمایش پست ها

    عددی که توی tcnt1l قرار میگیره -78 است!!
    این الان منفی 78 هست؟ اون خط تیره چیه؟


    نقل قول نوشته اصلی توسط shahrivar88 نمایش پست ها

    اگر خودم -78 را مستقیما توی ریجستر میذارم کار میکنه که -78!!!

    این جمله معنیش چیه؟ از لحاظ ساختار نگارش فارسی مشکل داره!
    ما در انتظار رویت خورشیدیم ...

    اللهم عجل لولیک الفرج

  13. کاربران : 2 تشکر کرده اند از شما Aghaeifar برای ارسال این پست سودمند:


  14. #8
    کاربر فعال shahrivar88 آواتار ها
    تاریخ عضویت
    Jul 2011
    نام
    امیر عزیزی
    نوشته ها
    243
    تشکر
    173
    تشکر شده 201 بار در 109 پست

    پیش فرض

    دوست عزیز 4 تا ضرب و تقسیم برای محاسبه سرریز یا مقایسه تایمر برای 10 میلی ثانیه زیاد سخت نیست. از هردوتاش استفاده کردم همون تابع را هم باهاش فراخوانی کردم ولی برنامه کار نکرد.

    -78 هم 78- است منفی هفتاد و هشت!!
    کافیه مقدار ریجیتر رو از طریق یوزارت بفرستی و نگاش کنی.
    من مقدار منفی هفتاد و هشت را توی ریجستر گذاشتم کار کرد ولی 78 نه!
    حالا مسئله اصلی همون مقداری که طبق تعریف یرنامه تو ریجستر گذاشته میشه.
    شما اصلا از روی برنامه بالا حساب کنید که چه عددی توی ریجستر TCNT1L فرار میگیره؟؟؟؟


    TCNT1L=T1_INIT

    T1_PRESC=1024L

    T1_OVF_FRE=100

    MCU_CLOCK_FREQUENCY=8000000

    T1_INIT= (0x10000L-(_MCU_CLOCK_FREQUENCY_/(T1_PRESC*T1_OVF_FRE

    سرزمین من\r

    دانلود کتاب آموزش پورت سریال در c#

    http://www.iranmicro.ir/forum/showthread.php?t=9629

  15. #9
    کاربر فعال shahrivar88 آواتار ها
    تاریخ عضویت
    Jul 2011
    نام
    امیر عزیزی
    نوشته ها
    243
    تشکر
    173
    تشکر شده 201 بار در 109 پست

    پیش فرض

    12
    سرزمین من\r

    دانلود کتاب آموزش پورت سریال در c#

    http://www.iranmicro.ir/forum/showthread.php?t=9629

  16. #10
    کاربر فعال shahrivar88 آواتار ها
    تاریخ عضویت
    Jul 2011
    نام
    امیر عزیزی
    نوشته ها
    243
    تشکر
    173
    تشکر شده 201 بار در 109 پست

    پیش فرض

    نقل قول نوشته اصلی توسط aghaeifar نمایش پست ها
    چطور هر ده میلی ثانیه فراخونی کردید تابع رو؟ شما هم با تایمر؟



    این الان منفی 78 هست؟ اون خط تیره چیه؟



    این جمله معنیش چیه؟ از لحاظ ساختار نگارش فارسی مشکل داره!


    عرض شود به خدمت شما نوشته من از لحاظ قانون نوشتار پارسی مشکلی ندارد مشکل اینه که نوشتار پارسی راست به چپ و نوشتار بیگانه چپ به راست است.
    این مشکل + مشکلات دیگر از لحظه ورود کامپیوتر به سرزمین باستانیمان همواره دامن گیر ما بوده.
    ویرایش توسط shahrivar88 : 26-03-2013 در ساعت 02:27
    سرزمین من\r

    دانلود کتاب آموزش پورت سریال در c#

    http://www.iranmicro.ir/forum/showthread.php?t=9629

  17. #11
    کاربر فعال shahrivar88 آواتار ها
    تاریخ عضویت
    Jul 2011
    نام
    امیر عزیزی
    نوشته ها
    243
    تشکر
    173
    تشکر شده 201 بار در 109 پست

    پیش فرض

    1 سوال ساده ما بی جواب موند
    سرزمین من\r

    دانلود کتاب آموزش پورت سریال در c#

    http://www.iranmicro.ir/forum/showthread.php?t=9629

  18. #12
    کاربر فعال rozeh آواتار ها
    تاریخ عضویت
    Mar 2013
    نوشته ها
    198
    تشکر
    27
    تشکر شده 176 بار در 104 پست

    پیش فرض

    این یه ماکرو(دستور پیش پردازنده) هستش که پرسکالر تایمر 1 رو روی 1024 قرار میده. البته چیز الکیه!
    چون خودش دوباره پایین همین کار رو کرده.
    در مورد مقدار دهی اولیه خودت حسابش کن بهتره. اون ماکرو رو هم پاک بکن.

  19. #13
    تازه وارد
    تاریخ عضویت
    Mar 2016
    نوشته ها
    1
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

    نقل قول نوشته اصلی توسط shahrivar88 نمایش پست ها
    Example:

    /* ATmega128 I/O register definitions */
    #include <mega128.h>
    /* MMC/SD/SD HC card support */
    #include <sdcard.h>

    /* Timer1 overflow interrupt frequency [Hz] */
    #define T1_OVF_FREQ 100
    /* Timer1 clock prescaler value */
    #define T1_PRESC 1024L
    /* Timer1 initialization value after overflow */
    #define T1_INIT (0x10000L-(_MCU_CLOCK_FREQUENCY_/(T1_PRESC*T1_OVF_FREQ)))

    /* 100Hz timer interrupt generated by ATmega128 Timer1 overflow */
    interrupt [TIM1_OVF] void timer_comp_isr(void)
    {
    /* re-initialize Timer1 */
    TCNT1H=T1_INIT>>8;
    TCNT1L=T1_INIT&0xFF;
    /* card access low level timing function */
    disk_timerproc();

    /* the rest of the interrupt service routine */
    /* .... */

    }

    void main(void)
    {
    /* initialize Timer1 overflow interrupts in Mode 0 (Normal) */
    TCCR1A=0x00;
    /* clkio/1024 */
    TCCR1B=(1<<CS12)|(1<<CS10);
    /* timer overflow interrupts will occur with 100Hz frequency */
    TCNT1H=T1_INIT>>8;
    TCNT1L=T1_INIT&0xFF;
    /* enable Timer1 overflow interrupt */
    TIMSK=1<<TOIE1;
    /* globally enable interrupts */
    #asm("sei")

    /* the rest of the program */
    /* .... */

    while(1)
    {
    /* .... */

    }
    }


    این 1 نمونه برنامه توی هلپ کدویژنه برای mmc.(جهت مشاهده کد در help کد ویژن در قسمت index عبارت mmc را search نمایید)
    که گفته. هر 10 میلی ثانیه 1بار باید تایع disk_timerproc با استفاده از وقفه سرریز فراخوانی بشه.

    اما وقتی من 10 میلی ثانیه رو خودم ساختم برنامه کار نکرد.
    عددی که توی TCNT1L قرار میگیره -78 است!!
    نیازمندیهای ایران،تبلیغات،اگهی رایگان،نیازمندیها - نیازمندیهای ایران،نیازمندیها،تبلیغات رایگان،آگهی رایگان،
    اگر خودم -78 را مستقیما توی ریجستر میذارم کار میکنه که -78!!! با ماهیت تایمر ها همخوانی نداره!!!!

    ممنون عالی بود

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

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