اطلاعیه

Collapse
No announcement yet.

مشکل با وقفه سریال atmega64

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

    #16
    پاسخ : مشکل با وقفه سریال atmega64

    سلام
    موارد زیر رو بررسی کنید

    1- قرار دادن مقدار $crystal = 11059200 در برنامه bascom
    2- تنظیم درست فیوزبیت منبع کلاک میکرو موقع پروگرام کردن
    3- تست کریستال با نوشتن یه برنامه
    4- کریستال خارجی رو حذف کنید اگه برنامه میکرو همچنان کار کرد یعنی هنوز موقع پروگرم کردن فیوز بیت کلاک رو درست تنظیم نکردین

    توضیح مرحله 3:
    برنامه زیر رو روی میکرو تست کنید و با فرکانسمتر فرکانس خروجی رو اندازه بگیرید اگه کریستال و فیوزبیت رو درست تنظیم کرده باشین باید یه فرکانس نزدیک 5 کیلو هرتز رو پین مربوطه داشته باشین. البته میتونید زمان رو روی 1 ثانیه تنظیم کنید و با led تست کنید

    [code=vbnet]Do
    Toggle Portb.1
    Waitus 100
    Loop[/code]

    برای پروگرم کردن من از Avrstudio استفاده میکنم و ظاهرا شما از خود بسکام بهتره با یه جستجو نحوه تنظیم رو اول پیدا کنید و بعد فیوزبیتها رو ست کنید .
    میکرو های سری mega یکم نازک نارنجی هستن و اگه نوک سوزنی باهاشون بدرفتاری بشه بلافاصله مد ISP از کار میفته و دیگه نمیتونید به صورت ISP پروگرم بکنید





    دیدگاه


      #17
      پاسخ : مشکل با وقفه سریال atmega64

      سلام مهندس
      روز بخیر
      کدی که شما داده بودین تو پروتئوس خیلی عالی جواب داد، اما متاسفانه من نتونستم در عمل ازش جواب بگیرم، گرچه با کریستالها و باودریت های مختلف تست کردم اما هیچوقت داده ها کامل دریافت نشدن. برای همین وقفه سریال رو فعال کردم و تو زیربرنامه وقفه سریال به جای استفاده از UDR از دستور Input استفاده کردم (البته برای اینکه میکرو بعد از دریافت داده ها از وقفه خارج بشه اطلاعات UDR رو تو یه متغیر ذخیره کردم اما استفاده نکردم و همچنین برای اینکه برنامه در صورتی که نتونه دیتایی رو از Input دریافت کنه هنگ نکنه از timeout استفاده کردم).
      نهایتا کد زیر حاصل شد:
      کد:
      $regfile = "m32def.dat"
      $crystal = 11059200
      $baud = 19200
      
      $swstack = 32
      $hwstack = 64
      $framesize = 64
      
      Enable Urxc
      On Urxc Rxc
      Enable Interrupts
      
      Dim Buffer_recive_temp As String * 300
      Dim Buffer_udr As Byte
      
      Do
      Loop
      
      Rxc:
      
      $timeout = 1000000
      Input Buffer_recive_temp Noecho
      Buffer_udr = Udr
      
      Return
      Return
      از راهنمایی و محبتتون کمال تشکر رو دارم
      تشکر نکن، صلوات بفرست:

      [img width=165 height=100]http://www.askdin.com/gallery/images/29839/1___________5.png[/img]

      دیدگاه


        #18
        پاسخ : مشکل با وقفه سریال atmega64

        سلام

        اصلا حس خوبی به اون قسمت زیر برنامه وقفه ندارم
        تنها دلیل کار نکردن کد شما عدم تنظیم فیوزبیت کلاک هست آیا تستهایی که تو پاسخ قبل بود انجام دادین؟
        نتیجه گزینه 4 ؟

        دیدگاه


          #19
          پاسخ : مشکل با وقفه سریال atmega64

          نوشته اصلی توسط mahdi421
          سلام

          اصلا حس خوبی به اون قسمت زیر برنامه وقفه ندارم
          تنها دلیل کار نکردن کد شما عدم تنظیم فیوزبیت کلاک هست آیا تستهایی که تو پاسخ قبل بود انجام دادین؟
          نتیجه گزینه 4 ؟
          سلام، اتفاقا منم همینطورم، کار با اون قسمت عذاب بود برام...
          چرا مهندس جان، غیر از مورد 3 که نیاز به فرکانسمتر و اسیلوسکوپ داشت باقی تست ها رو انجام دادم اما نشد.
          کریستالهای خارجی 11059200 و 8 مگ و 6 مگ رو تست کردم اما نشد، بدون کریستال خارجی هم که میکرو کار نکرد. 4 تا فیوزبیت کلاک میکرو رو بعلاوه فیوز بیت sut و یه فیوز بیت دیگه ای که هست -فکر کنم cklpt باشه- در تمام حالات ممکن :mrgreen: تست کردم اما نشد.
          عیبی نداره، الان با همین برنامه راه افتاده کارم، میخواستم ازتون تشکر کنم و کد رو بذارم تا اگه دوستان مشکل مشابهی داشتن ازش استفاده کنن.
          ممنون
          تشکر نکن، صلوات بفرست:

          [img width=165 height=100]http://www.askdin.com/gallery/images/29839/1___________5.png[/img]

          دیدگاه


            #20
            پاسخ : مشکل با وقفه سریال atmega64

            یه کار خیلی راحت برای تست کریستال

            برنامه زیر رو برزید رو میکرو و با یه زمان سنج مثل زمان سنج موبایل زمان رو بگیرید اصولا اگه مقدار کریستال درست باشه باید هر 120 ثانیه یه بار عبارت test رو ببینید

            [code=vb]Do

            Print "test"
            Wait 120

            Loop
            [/code]

            دیدگاه

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