اطلاعیه

Collapse
No announcement yet.

استفاده همزمان از waitms و تایمر در برنامه فرکان&#

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

    استفاده همزمان از waitms و تایمر در برنامه فرکان&#

    سلام
    کد زیر بخشی از برنامه من هست که خلاصه شدش رو قرار دادم
    مدار یه فرکانس متر هست که تایمر صفر زمان یک ثانیه رو می سازه و تایمر یک در مد کانتر هست.
    اون قسمت motor هم تقریبا هر یک ساعت موتور رو می چرخونه که توسط همون یک ثانیه زمانش بدست میاد که فعلا کاریش ندارم (برنامه خلاصه شده است و نگید چه طور یک ساعت رو بدست اوردی)
    1- وقتی که تایمر یا کانتر سر ریز میکنه و به برچسب سر ریز میره پس از بازگشت دقیقا به کجا میره؟فرض کنید برنامه توی قسمت Hi_temp و قبل از نوشتن در eeprom هست ایا دوباره بر میگرده و روی حافظه eeprom می نویسه یا نه؟
    2-وقتی کلید hi که یک کلید سخت افزاری هست رو فشار می دم فرکانس نمایش داده شده روی نمایشگر زیاد میشه (بعد از مدتی دوباره فرکانس درست می شه) چرا؟
    3-فرض کنید تو قسمت نوشتن در eeprom بود و سر ریز اتفاق افتاد اینجا میکرو صبر میکنه تا 5 میلی ثانیه تاخیر ایجاد بشه بعد پرش میکنه یا بدون تاخیر برنامه رو رها میکنه و پرش می کنه؟در حالت اول که مقدار زمان یک ثانیه به هم میریزه و فرکانس اشتباه می شه و در حالت دوم ممکن هست مقدار مورد نظر به خوبی در حافظه ذخیره نشه راه کار چیه؟(اخه توی کتاب گفته بعد از نوشتن در eeprom باید 2.5 تا 4 میلی ثانیه تاخیر بدیم)

    کد:
    $regfile = "m16def.dat"
    $crystal = 8000000
    
    Dim A As Long , I As Byte , B As Byte
    Dim Delta_t As Single
    Dim Delta_t_e As Eram Single
    '----------------------
    Config Timer1 = Counter , Edge = Rising
    Ddrb.1 = 0
    Portb.1 = 1
    '------------------
    Config Timer0 = Timer , Prescale = 256
    '------------------
    Enable Interrupts
    Enable Timer1
    Enable Timer0
    '-------------------
    On Ovf1 Count
    On Ovf0 8ms
    B = 0
    Counter1 = 0
    Timer0 = 6
    Start Timer0
    '-----------------------
    Do
      If Hi = 0 Then Gosub Hi_temp
    Waitms 150
    Loop
    End
    
    
    '---------------------
    8ms:
    Incr I
    If I >= 125 Then                      '1s
    Timer0 = 6
     A = B * 65536
     A = A + Counter1
    
     Home
     Lcd A
    
     B = 0
     I = 0
     Counter1 = 0
     Timer0 = 6
    End If
    
    Return
    '-----------------------
    
    Count:
    Incr B : Counter1 = 0
    Return
    '----------------------
    
    Motor:
    If F >= Motor_time Then
     Set In1
     Reset In2
     Set En
    Do
     If Ir_l = 0 Then
     Waitms 100
     If Ir_l = 0 Then Exit Do
     End If
    Loop
    Reset En
    
     End If
    Return
    '-------------------
    
    Hi_temp:
    Delta_t = Delta_t + 0.1
    Delta_t_e = Delta_t : Waitms 5               'write eeprom
    Return
    دعا کنید برای من

    چی شد پس لطفا همین حالا!

    #2
    پاسخ : استفاده همزمان از waitms و تایمر در برنامه فرکان&#

    سلام منم با این دستورات بطور همزمان استفاده کردم ولی نمیشه
    wait
    bitwait
    Interrupts
    اجرای هرکدوم باعث متوقف شدن دیگری میشه!!!!!!
    در جهان هرگز مشو مدیون احساس کسی - تا نباشد رایگان مهرت گروگان کسی
    گوهر خود را نزن بر سنگ هر ناقابلی - صبر کن پیدا شود گوهر شناس قابلی

    دیدگاه

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