اطلاعیه

Collapse
No announcement yet.

برناممه نویسی در بسکام برای atmega16

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

    برناممه نویسی در بسکام برای atmega16

    سلام دوستان. میشه کمکم کنید؟ :cry2:
    من برنامه زیر رت برای تولید پالس نوشتم. پالس با فرکانس 500 هرتز تولید کردم و مشکلی ندارم. فقط میخوام بعد از 20 دقیقه به طور اتوماتیک تولید پالس متوقف بشه. میشه بگیید کجای برنامه چی باید بنویسم؟
    $regfile = "M16def.dat"
    $crystal = 8000000
    Config Portd = Output
    Dim A As Long
    Config Timer1 = Timer , Prescale = 8
    Enable Interrupts
    Enable Ovf1
    On Ovf1 T
    Timer1 = 55536
    Start Timer1
    Set Portd.1
    Reset Portd.2
    Do
    Loop
    End
    T:
    Incr A

    If A > 1 Then
    Toggle Portd.1 :toggle portd.2: A = 0 : End If

    Return

    ممنون.کمکم کنیییییییییید

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

    سلام

    اینکه کاری نداره بیا تایمر دو رو در مد اسنکرون با کریستال 32768 ست کن(اگه زمان 20 دقیقه خیلی برات مهمه) بعد با تقسیم اون بر 128 و استفاده از اینتراپت که هر یک ثانیه رخ میده یه متغیر بزار که افزایش پیدا کنه و بعد از رسیدن به 1200 تایمر 1 رو خاموش کنه.

    موفق باشی
    چرا ناراحتی پاتریک!
    + امروز ی بچه دیدم سرچهارراه گل میفروخت
    - از دیدنش ناراحت شدی؟
    + نه
    پس چی ناراحتت کرده
    + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
    ------------------------------------------------------------------------------------------------------
    تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
    ------------------------------------------------------------------------------------------------------
    محصولات

    دیدگاه


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

      تشکر از پاسختون. ولی من مهارت چندانی در کار با تایمرها ندارم. یعنی یک کریستال دیگه براش تعریف کنم؟ چطوری توو یک برنامه میتونم اینکارو کنم؟ چطور میشه به مد آسنکرون برد؟ (در محیط بسکام)؟

      دیدگاه


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

        شرمنده بسکام نصب نیست تا ببینم خطا داره یا نه :(






        کد:
        [ltr]
        $regfile = "m16def.dat"
        $crystal = 8000000
        '-------------------------
        Config Clock = Soft , Gosub = Sectic
        Enable Interrupts
        Cursor Off
        Config Portd = Output
        Config Timer1 = Timer , Prescale = 8
        Enable Ovf1
        On Ovf1 T
        Timer1 = 55536
        Start Timer1
        Set Portd.1
        Reset Portd.2
        '-------------------------
        dim x as word
        Dim A As Long
        '-------------------------
        do
        loop
        
        End
        Sectic:
            x=x+1
        	if x=1200 then
        		disable Ovf1
            Return
        T:
           Incr A
        
           If A > 1 Then
           Toggle Portd.1 :toggle portd.2: A = 0 : End If
           Return
        [/ltr]
        یک کریستال با مقداری که گقتم وصل کن به پایه های 28 و 29.
        واسه اشنایی باهاشم یه سرچ بزن اگه چیزی پیدا نکردی خودم توضیح میدم.
        موفق باشی
        چرا ناراحتی پاتریک!
        + امروز ی بچه دیدم سرچهارراه گل میفروخت
        - از دیدنش ناراحت شدی؟
        + نه
        پس چی ناراحتت کرده
        + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
        ------------------------------------------------------------------------------------------------------
        تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
        ------------------------------------------------------------------------------------------------------
        محصولات

        دیدگاه


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

          نوشته اصلی توسط mahboob2
          تشکر از پاسختون. ولی من مهارت چندانی در کار با تایمرها ندارم. یعنی یک کریستال دیگه براش تعریف کنم؟ چطوری توو یک برنامه میتونم اینکارو کنم؟ چطور میشه به مد آسنکرون برد؟ (در محیط بسکام)؟
          نه دوست من نگاه کن هر تایمر با یک فرکانس خاص که شما در برنامه معین می کنی می شماره یعنی وقتی می نویسی :
          کد:
          Config Timer1 = Timer , Prescale = 8
          این تایمر 1 داره با فرکانسی برابر فرکانس کریستال تقسیم بر prescale که شما اینجا 8 گرفتی می شماره خب حالا اگه شما بخواهی یه تایمر 8 بیتی مثل تایمر کانتر 2 دقیق سر 1 ثانیه سر ریز بشه باید یه کریستال خارجی با فرکانس 32768 به دو پایه tosc1 و tosc2 وصل کنی و prescale رو 128 انتخاب کنی دراین حالت می بینی که فرکانس تایمر شما همون 128/32768=256 میشه یعنی تایمر 8 بیتی شما در 1ثانیه سرریز میشه
          که برای استفاده از این حالت در تایمر دو باید دستوراتت به صورت زیر باشه

          کد:
          CONFIG TIMER2 = TIMER , ASYNC = ON , PREACALE=128
          راستی اسم این نوع کریستال ها RTC هستش ( REAL TIME CLOCK)
          خداوند بی نهایت است اما به قدر نیاز تو فرود می آید ، به قدر آرزوی تو گسترده می شود و به قدر ایمان تو کارگشاست.
          [hr]

          دیدگاه


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

            ممنونم از پاسخهای خیلی کاملی که دادید. من تست میکنم اگه جواب نگرفتم دوباره مزاحمتون میشم

            دیدگاه


              #7
              پاسخ : برناممه نویسی در بسکام برای atmega16

              سلام
              بله همینطوره خواستم بگم که دوستان گفتن یک کریستال ساعت به پایه های مربوط وصل کنی و بسکام هم مثل هلو برات یک کانفیگ گذاشته تا زمان بگیری حالشو ببری
              امام مهدی(عج): اگر شیعیان ما ، که خداوند طاعتشان دهد. در عهد ما وفادار و همدل بودند، هرگز دیدار ما (ظهور) به تاخیر نمی افتاد.(کدام عهد ؟)

              دیدگاه


                #8
                پاسخ : برناممه نویسی در بسکام برای atmega16

                خواهش میکنم دوست من اگه مشکلی بود بگو ما در خدمتیم
                خداوند بی نهایت است اما به قدر نیاز تو فرود می آید ، به قدر آرزوی تو گسترده می شود و به قدر ایمان تو کارگشاست.
                [hr]

                دیدگاه

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