اطلاعیه

Collapse
No announcement yet.

چند سوال در مورد یک برنامه

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    چند سوال در مورد یک برنامه

    سلام چند تا سوال درباره برنامه زیر داشتم دوستان نظرشونو بگن :applause: :NO:
    این برنامه توی کتاب علی کاهه هست
    $regfile = "m32def.dat"
    'We use internal osc 4000000 for atmega32
    $crystal = 4000000
    Config Lcdpin = Pin , Db4 = Portc.1 , Db5 = Portc.2 , Db6 = Portc.3 , Db7 = _
    Portc.4 , E = Portd.2 , Rs = Portd.3
    Config Lcd = 16 * 2
    Config Adc = Single , Prescaler = Auto
    Start Adc
    Config Timer0 = Timer , Prescale = 1024
    Enable Interrupts
    Enable Timer0
    On Timer0 Temp_sample
    Start Timer0
    Dim Sample As Word
    Dim Temp As Word
    Dim Temp_final As Integer
    Dim Sum As Integer
    Deflcdchar 0 , 24 , 24 , 32 , 32 , 32 , 32 , 32 , 32 '' sign -> (&#039
    Cursor Off
    Cls
    Do


    Loop
    End 'end program

    Temp_sample:
    Incr Sample 'incr sampling counter
    Temp = Getadc(0) 'read adc(0) every 65ms
    Sum = Sum + Temp 'sum the sample data
    If Sample = 15 Then '20 samples
    Sample = 0 'reset sample counter
    Stop Timer0 'stop timer to calculation
    Sum = Sum / 15 'mean calculation
    Sum = Sum - 558 'decrementing offset
    Temp_final = Sum / 2 'every 10mv is almost 2 step of adc (adc step=5/1023=4.88mv)
    Select Case Temp_final
    Case Is =< 10 : 'compare temperature
    Home L
    Lcd " Low "
    Case 11 To 34 : 'compare temperature
    Home L
    Lcd " Normal "
    Case Is >= 35 : 'compare temperature
    Home L
    Lcd " High "
    End Select

    Home
    Lcd Temp_final ; Chr(0) ; "C " 'show temperature
    Start Timer0
    Sum = 0
    End If
    Return

    1)این حلقه بینهایت کارش تو برنامه چیه؟
    2) زمان 65 میلی ثانیه دقیقا از کجا اومده؟ (با تقسیم فرکانس 4مگا بر 1024 و معکوس کردن این عدد به دست نمیاد)
    3)اگر بخوایم این برنامه رو با ال سی دی خود بسکام شبیه سازی کنیم باید دقیقا چه کارهایی رو انجام بدیم؟(نتونستم این کار رو بکنم)


    البته سوالای دیگه هم دارم ولی الان دیگه خجالت میکشم بپرسم ان شا الله تو پستهای بعدی :icon_razz: :smile:

    #2
    پاسخ : چند سوال در مورد یک برنامه

    1) در واقع این مثال می خواهد نحوه فعالیت وقفه رو توضیح بده. داخل این حلقه هر عملیاتی می تونه باشه. فرض می کنیم یه برنامه دایم که یه سری عملیات رو انجام میده. می خوایم به محض وقوع یک اتفاق روال عادی متوقف بشه و به اون پرداخته بشه و بعد برگردیم به حالت عادی. برای همین از وقفه استفاده می کنیم. تو این برنامه هم در حالت عادی هیچ اتفاقی نمی افته تا اینکه وقفه واقع بشه.

    2) فرکانس کاری4 مگا هرتزه ( 0.25 میکرو ثانیه )و Prescale هم 1024 . با این حساب فرکانس کاری تایمر میشه 3906.25=4000000/1024 یا معادل 256 میکرو ثانیه. یعنی به ازای هر 256 میکرو ثانیه یکی به مقدار تایمر اضافه میشه و چون از تایم صفر که هشت بیتی هست استفاده شده پ به ازای گذشت زمان 65536=256*256 میکرو ثانیه یک وقفه اتفاق می افته. این معادل 65.536 میلی ثانیه ای هست که پرسیدی.

    3)برای استفاده از سیمولاتور خود بیسکام بهتره اول برنامه دستور sim$ رو قرار بدی. کار کردن با سیمولاتور خیلی سادست. فقط بهتره تست برنامه های زمانی رو عملا انجام بدی.

    دیدگاه


      #3
      پاسخ : چند سوال در مورد یک برنامه

      ممنون از پاسخ هات :applause:
      در مورد سوال اول یعنی منظورت اینه که این حلقه رو میذاریم تا یه جورایی برنام رو الکی مشغول کنیم :smile: تا تایمر سرریز بشه و برنامه بره به لیبل؟

      دیدگاه


        #4
        پاسخ : چند سوال در مورد یک برنامه

        راستی اون sim$ رو هم قبلا گذاشته بودم ولی در عین سادگی چیزی رو ال سی دی سیمولیشن نشون نداد! :sad:

        دیدگاه


          #5
          پاسخ : چند سوال در مورد یک برنامه

          اولا که باید شرایط رسیدن به دستور LCD مهیا بشه. یعنی باید به طور دستور دستی OVF0 رو تو ایمولانور از زبانه Interrupts فعال کنی. دوما باید مقادیر به نحوی تغییر کنند که از ظرط های لازم عبور کنی و به دستور نمایش برسی.


          در مورد سوال اول هم بگم: اگه این حلقه وجود نداشت برنامه با اجرای خط به خط بلافاصاله به END برنامه می رسید و کار تموم میشد.

          دیدگاه


            #6
            پاسخ : چند سوال در مورد یک برنامه

            Dear hamed ,Thank you very much
            :applause: :applause: :applause: :applause: :applause: :applause: :applause:

            دیدگاه

            لطفا صبر کنید...
            X