اطلاعیه

Collapse
No announcement yet.

فوری....................مشکل این مدار چیه

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

    فوری....................مشکل این مدار چیه

    آقا این یه مدار چشمک زن با 8 تا led هست و با میکروی atmega 16 بسته شده دارای 3 برنامه است که با سوییچ کردن برنامه های 2 و 3 باید کار کنند یعنی رقص نور باید عوض بشه ولی مشکلش اینه که عوض نمی شه برنامه میکرو وشماتیک مدار رو میزارم شما ببینید



    این هم برنامه میکرو که با bascom نوشته شده

    $regfile = "m16def.dat"
    $crystal = 12000000
    Config Portd = Output , Portb = Input
    Dim A As Byte
    Dim B As Byte
    Loop1:
    A = &HFE
    Do
    Portd = A
    Rotate A , Left , 1
    Waitms 1000
    B = Pinb
    If B = &HFD Then Goto Loop2
    If B = &HFB Then Goto Loop3
    Loop
    Loop2:
    A = &HAA
    Do
    Portd = A
    Waitms 1000
    toggle portD
    B = Pinb
    If B = &HFE Then Goto Loop1
    If B = &HFB Then Goto Loop3
    Loop
    Loop3:
    A = &HFE
    Do
    Portd = A
    Rotate A , Right , 1
    Waitms 1000
    B = Pinb
    If B = &HFE Then Goto Loop1
    If B = &HFD Then Goto Loop2
    Loop
    End

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

    nسلام :
    دوست عزیز اولاً چرا برای همچین کار ساده ای mega16 گذاشتی ؟
    ثانیاً کلید ها رو debounce نکردی و احتمالاً با سرعتی تغییر میکنه که شما نمی بینی و یا زمانی که شما دارید کلید رو میزنید تو زیر برنامه تغییر loop نیست ( توی اون Waitms1000 مونده )!
    بهتره برای اینکار از وقفه استفاده کنی که کارت رو نصف میکنه دقتتم میبره بالا .

    برای جلوگیری از آسیب دیدن میکروت حتماً جریان کشی led ها رو با یک مقاومت کوچیک محدود کن !

    اما بطور کلی مشکل خاصی تو برنامت ندیدم !
    درست و غلط باید کار کنه !

    موفق باشی

    دیدگاه


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

      نوشته اصلی توسط حامد پروشانی
      nسلام :
      دوست عزیز اولاً چرا برای همچین کار ساده ای mega16 گذاشتی ؟
      ثانیاً کلید ها رو debounce نکردی و احتمالاً با سرعتی تغییر میکنه که شما نمی بینی و یا زمانی که شما دارید کلید رو میزنید تو زیر برنامه تغییر loop نیست ( توی اون Waitms1000 مونده )!
      بهتره برای اینکار از وقفه استفاده کنی که کارت رو نصف میکنه دقتتم میبره بالا .

      برای جلوگیری از آسیب دیدن میکروت حتماً جریان کشی led ها رو با یک مقاومت کوچیک محدود کن !

      اما بطور کلی مشکل خاصی تو برنامت ندیدم !
      درست و غلط باید کار کنه !

      موفق باشی
      آقا من بیشتر از این بلد نیستم دستور debounce
      رو هم بلد نیستم یه کم کاربردی تر اگه توضیح بدید ممنون میشم :redface:

      دیدگاه


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

        regfile = "m16def.dat"
        $crystal = 12000000
        Config Portd = Output , Portb = Input
        Dim A As Byte
        Loop1:
        waitms 10
        A = &HFE
        Do
        Portd = A
        Rotate A , Left , 1
        Waitms 1000
        If pinb.0 = 0 Then Goto Loop2
        If pinb.1 = 0 Then Goto Loop3
        Loop
        Loop2:
        waitms 10
        A = &HAA
        Do
        Portd = A
        Waitms 1000
        toggle portD
        If pinb.0 = 0 Then Goto Loop1
        If pinb.2 = 0 Then Goto Loop3
        Loop
        Loop3:
        waitms 10
        A = &HFE
        Do
        Portd = A
        Rotate A , Right , 1
        Waitms 1000

        If pinb.0 = 0 Then Goto Loop1
        If pinb.2 = 0 Then Goto Loop2
        Loop
        End


        من یه تغییراتی توی برنامتون دادم البته حتماً شما هم یه چک بکنید که درست باشه !
        از نحوه برنامه نوشتنتون معلومه که قبلاً 8051 کار میکردین و با اسمبلی مینوشتین ! و تازه avr رو شروع کردین ( فکر کنم ) !

        به هر حال مشکل اگر سخت افزاری نباشه بقیش حله

        دیدگاه


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

          آقا حامد از جوابتون ممنونم ولی بازم جواب نداد نمی دونم چیکار کنم اعصابم ریخته به هم :angry:
          اگه میشه یه کم دیگه به من کمک کنید


          با تغییرات آقا حامد 1 و 2 درست شد ولی بازم کلید 3 جواب نمی ده

          دیدگاه


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

            من برنامه رو نگاه نکردم. چون حامد تصحیح کرده پس حتما درسته. ولی برای هر کدوم از میکرو سوئیچ ها حتما باید مقاومت به کار ببری. یعنی مثلا اونا رو با یک مقاومت به Vcc وصل کن . در حالت عادی حتما یک هستند . اگه کلید رو فشار بدی صفر میشن.
            ...پایه ریست رو هم همین طور .

            دیدگاه


              #7
              پاسخ : فوری....................مشکل این مدار چیه

              regfile = "m16def.dat"
              $crystal = 12000000
              Config Portd = Output , Portb = Input
              Dim A As Byte
              Loop1:
              waitms 10
              A = &HFE
              Do
              Portd = A
              Rotate A , Left , 1
              Waitms 1000
              If pinb.1 = 0 Then Goto Loop2
              If pinb.2 = 0 Then Goto Loop3
              Loop
              Loop2:
              waitms 10
              A = &HAA
              Do
              Portd = A
              Waitms 1000
              toggle portD
              If pinb.0 = 0 Then Goto Loop1
              If pinb.2 = 0 Then Goto Loop3
              Loop
              Loop3:
              waitms 10
              A = &HFE
              Do
              Portd = A
              Rotate A , Right , 1
              Waitms 1000

              If pinb.0 = 0 Then Goto Loop1
              If pinb.1 = 0 Then Goto Loop2
              Loop
              End
              اینو تست کن.
              الهم عجل لولیک الفرج

              دیدگاه


                #8
                پاسخ : فوری....................مشکل این مدار چیه

                چه جالب . برنامه هر دو تاتون یکیه. فقط تو تعریف پایه ها با هم فرق دارین

                دیدگاه


                  #9
                  پاسخ : فوری....................مشکل این مدار چیه

                  نه من ننوشتمش
                  اینم برنامه حامد
                  فکر کنم عجله ای نوشته بوده .
                  آره فقط پایه هاش بود.
                  الهم عجل لولیک الفرج

                  دیدگاه

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