اطلاعیه

Collapse
No announcement yet.

سوال در مورد هنگ کردن مگا32

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

    سوال در مورد هنگ کردن مگا32

    با سلام . :smile:
    مداری بستم که باید چندین ساعت روشن باشه و منتظر زدن کلید باشه (با مگا 32) . متاسفانه بعد از 15 الی 20 دقیقه خودبخود برنامه قاتی میکنه و خودش کیلد رو میزنه ... :eek:
    به نظرتون از نویزه ؟ بد پروگرام شده ؟ اشکال از برنامه نویسیه ؟
    ممنون اگر راهنمایی کنید .

    #2
    پاسخ : سوال در مورد هنگ کردن مگا32

    برنامه؟
    کاربردش؟
    محل قرارگیری مدار؟
    نوع تغذیه؟
    خود مدار؟
    بدون این ها هیچ کاری نمیشه کرد
    احتمالا وقفه یا هر چیز دیگه با مقاومت Pull نشده

    دیدگاه


      #3
      پاسخ : سوال در مورد هنگ کردن مگا32

      سلام
      دوست عزیزمون راست میگه
      برنامه بو بزار ببینیم شاید برنامه مشکل داشته باشه
      من خودمون یه برنامه برای وزارت تعاون نوشتم (برای اسانسور)که باید همچنان منتظره زدن کلید بماند تا بزنه
      تا الان هم کار می کنه شاید
      حداقل تا وقتی که اونجا بودم کار می کرد
      یه مورد هم هست اگر میکروت تا ته پر باشه مثلا 99درصد احتمال داره که این اتفاق بیفته
      من آن گلبرگ مغرورم که می میرم ز بی آبی ولی با خفت و خواری پی شبنم نمی گردم.

      دیدگاه


        #4
        پاسخ : سوال در مورد هنگ کردن مگا32

        سلام ، این برنامه
        کد:
        $regfile = "m32def.dat"
        $crystal = 1000000
        Config Lcd = 16 * 2
        Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , _
        Db7 = Portc.3 , Rs = Portc.4 , E = Portc.5
        Config Portb = Output
        Config Portd = Input
        Ddra.1 = 0 : Porta.1 = 1
        Config Timer1 = Timer , Prescale = 8
        Dim X1 As Byte , Z1 As Byte , Z2 As Byte , Z3 As Byte
        Dim Z4 As Byte
        Cursor Off
        Lcd "start button..."
        
        Main:
        If Pind.2 = 1 Then
        Bitwait Pind.2 , Reset
        Wait 1                           'dar tarikh 8.3.90'
        Cls
        Locate 1 , 1
        Lcd "Run"
        Locate 2 , 1
        Lcd "step=" ; X1
        Locate 2 , 8
        Lcd "volt=80"
        
        Portb = &B00000010
        X1 = 0
        Z1 = 0
        Z2 = 0
        Z3 = 0
        Z4 = 0
        Enable Interrupts
        Enable Timer1
        Stop Timer1
        Start Timer1
        On Timer1 Zaman
        Timer1 = 3000
        Else
        jmp main
        End If
        Main2:
        If Pind.0 = 1 Then
        Bitwait Pind.0 , Reset
        Wait 1                           'dar tarikh 8.3.90'
        Incr X1
        If X1 > 4 Then
        Portb = 0
        X1 = 0
        Waitms 700
        Stop Timer1
        Cls
        Lcd "stoped"
        Locate 2 , 1
        Lcd Z4 ; ":" ; Z3 ; ":" ; Z2 ; " "
        Wait 2
        jmp main
        Else
        End If
        Locate 2 , 1
        Lcd "step=" ; X1
        End If
        
        Select Case X1
        Case 1 : Portb = &B00000100
        Case 2 : Portb = &B00001000
        Case 3 : Portb = &B00010000
        Case 4 : Portb = &B00100000
        End Select
        If Pind.1 = 1 Then
        Bitwait Pind.1 , Reset
        Wait 1
        
        
        
        Stop Timer1
        Cls
        Lcd "110 volt shock "
        Portb = &B00000001
        Wait 2
        Portb = 0
        Wait 1
        Cls
        Lcd "stopped"
        Locate 2 , 1
        Lcd Z4 ; ":" ; Z3 ; ":" ; Z2 ; " "
        Else
        End If
        
        
        
        
        If Pind.2 = 1 Then
        Bitwait Pind.2 , Reset
        Wait 1
        Stop Timer1
        Cls
        Lcd "stoped"
        Locate 2 , 1
        Lcd Z4 ; ":" ; Z3 ; ":" ; Z2 ; " "
        Portb = 0
        jmp main
        Else
        jmp main2
        End If
        End
        Zaman:
                                       'dar tarikh 8.3.90'
        Select Case X1
        Case 1 :
        Locate 2 , 8
        Lcd "volt=64"
        Case 2 :
        Locate 2 , 8
        Lcd "volt=48"
        Case 3 :
        Locate 2 , 8
        Lcd "volt=32"
        Case 4 :
        Locate 2 , 8
        Lcd "volt=16"
        End Select
                                     'dar tarikh 8.3.90'
        
        Timer1 = 3000
        Incr Z1
        If Z1 = 2 Then
        Toggle Porta.1
        Z1 = 0
        Incr Z2
        End If
        If Z2 = 60 Then
        Z1 = 0
        Z2 = 0
        Incr Z3
        End If
        If Z3 = 60 Then
        Incr Z4
        Z3 = 0
        Z2 = 0
        Z1 = 0
        End If
        If Z4 = 24 Then
        Z1 = 0
        Z2 = 0
        Z3 = 0
        Z4 = 0
        End If
        Locate 1 , 8
        Lcd Z4 ; ":" ; Z3 ; ":" ; Z2 ; " "
        If Pind.2 = 1 Then
        Bitwait Pind.2 , Reset
        Stop Timer1
        Cls
        Lcd "stoped"
        Portb = 0
        jmp main
        End If
        Return
        در کل اول برنامه منتظر یک شدن portd.2 میمونه و با یک شدن این پایه وارد برنامه میشه . دوباره وقتی توی برنامه هست با زدن همون کلید دوباره استپ میشه و میره main (همون اول برنامه (جایی که دوباره منتظره تا زده بشه)) و همونجا دوباره منتظر همون کلید میشه . حالا من مشکلم با این کلید هست در ابتدا با زدن کلید وارد برنامه میشه ولی هنوز نزدیمش استپ میشه ، یکدفعه 17 دقیقه کار میکنه یکدفعه 1 ساعت و 7 دقیقه ، یکدفعه 2 دقیقه ، ....
        با stk200/300 پروگرمش کردم ولی همه چیش درسته به غیر از این کلید . در ضمن تو مدار یک رله هم هست که قطع و وصل میشه که تغذیه 5 ولت رله ها جداست ولی گراندشون یکیه . پیش تغذیه آی سی یک خازن 100 میکرو به زمین وصل کردم گفتم نویز رو حذف کنه ، روی پایه های پورت d 123 هم خازن به زمین زدم گفتم نویز نیاد(البته مقاومت پول دون هم به زمین وصل کردم) ، ممنون از دوستان هر چی میدونید بگید خواهشا

        دیدگاه


          #5
          پاسخ : سوال در مورد هنگ کردن مگا32

          با وقفه امتحان نکردید؟
          من سوادم در اون حد نیست ولی میتونید مقدار مقاومت ها رو کمتر کنید مثلا 1 کیلو کنید شاید از نویز باشه

          دیدگاه


            #6
            پاسخ : سوال در مورد هنگ کردن مگا32

            نویز مربوط به lcd هست از دو میکرو استفاده کن که به محض تشخیص کلید دومی را ست کن
            تنها موردی که همه آدما یقین دارن خدا در حقش زیاد لطف کرده
            داشتن عقله زیادتر از دیگر آدم ها است

            دیدگاه


              #7
              پاسخ : سوال در مورد هنگ کردن مگا32

              با درود . . .

              نوشته اصلی توسط aliila
              نویز مربوط به lcd هست از دو میکرو استفاده کن که به محض تشخیص کلید دومی را ست کن
              oo:

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

              دوست عزیز من برنامه شما رو نگاه نکردم اما وقتی شماتیک رو دیدم یه نکته توش پیدا کردم. اونم اینکه تشخیص کلید با سطح 1 هستش!!!
              شما یه کاری کن:
              برای وصل کردن کلید از این روش استفاده کن:


              ddrx.x=0:portx.x=1
              if pinx.x=0 then ...

              x.x هر پایه ای میتونه باشه.
              کلید رو به همون پایه مورد نظر نصب کن و اون سر کلید رو هم به زمین وصل کن. مقاومت هم نمیخواد.
              به عبارتی تو برای میکرو یه پایه پول پ تعریف کردی که در صورت 0 شدنش کاری رو که میخوای بهش میگی تا انجام بده.
              با استفاده از دستور DEBOUNCE خیلی راحت تر میتونی کاری رو که میخوای انجام بدی.

              اول امتحان کن و بعد نتیجشو حتما بگو.

              درد من تنهایی نیست؛ بلکه مرگ ملتی است که گدایی را قناعت، بی‏عرضگی را صبر، و با تبسمی بر لب این حماقت را حکمت خداوند می‏ نامند! "گاندی"

              به دلیل وجود برخی مشکلات و بی احترامی ها این اکانت رو غیر فعال کردم. همیشه سر بلند باشید.
              بدرود . . .

              دیدگاه


                #8
                برای کسانی که نیاز به برنامه اسانسور به صورت فوری دارند

                من برنامه پروژه اسانسور رو کامل کردم به زبان بسکام ... برای یک ساختمان 4 طبقه همراه با قسمت های میکانیکی..کابین موتور ریل ها .درب کابین چراغ کابین نمایشگر طبقه در هر یک از طبقات دکمه فراخوان کابین و.....اگه کسی نیزا داشت میتونه توضیحات بیشتر رو توی وبلاگم ببینه. به زودی فیلم و عکس هم از پایان کار اسانسورم قرار میدم. :nerd:
                http:\\spaadtronic.blogfa.com

                دیدگاه

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