اطلاعیه

Collapse
No announcement yet.

مشکل قفل شدن میکروکنترلر pic 16f877a

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

    مشکل قفل شدن میکروکنترلر pic 16f877a

    سلام دوستان
    بعد از مدتهای بازی با میکرو و خراب کردن انواع قطعات به مشکل جدیدی برخوردم به تازگی مداری رو برای کنترل دقیق یک موتور DC طراحی کردم که باید یک کدی رو بگیره و مطابق اون کد گردش به راست یا چپ داشته باشد در این مدار از l298 استفاده کردم مدار و نرم افزار کاملاٌ درست کار می کنه مشکل اینجاست که گاهی وقت ها میکرو روشن نمی شه و بعد از یک تحریک با نویز مثل نزدیک کردن دست به کریستال یا تماس با پایه های خازن متصل به کریستال روشن می شه و عجیب تر اینکه با تغییر فیوز بیت های میکرو توسط پروگرامر npp106 توآوران میکرو به حالت کما رفته و دیگر هیچ عکس العملی را از خود نشان نمی دهد . جالب اینجاست که برنامه و فیوز بیت ها در میکرو ثبت می شود و یا پاک می شود ولی میکرو روشن نمی شود ؟
    آیا کسی مشکل مشابه داشته ؟
    لطفا کمک کنید . مدت زیادی معطل این موضوع هستم و البته تا الان 4 تا میکرو از کار افتاده .


    #2
    پاسخ : مشکل قفل شدن میکروکنترلر pic 16f877a

    سلام

    تنظیمات فیوز بیتاتون به چه شکلیه ؟
    نا اميدي يه دروغ بزرگه که آدما به خودشون ميگن
    تلاش يه حقيقت بزرگه که با صبر به ثمر ميرسه

    دیدگاه


      #3
      پاسخ : مشکل قفل شدن میکروکنترلر pic 16f877a

      دوست عزیز تا حالا هر بار برای من این مشکلات پیش اومده مشکل از pcb مدارم بوده که معمولا یه جایی مشکل اتصال کوتاه یا عدم اتصال بین سیمها بوده.تا دلت بخواد برام پیش اومده .کل مدارت رو چک کن انشالله درست میشه

      دیدگاه


        #4
        پاسخ : مشکل قفل شدن میکروکنترلر pic 16f877a

        از اینکه دیر پاسخ شما را می دهم معذرت می خواهم
        عرض شود بیت های تنظیم شده default نرم افزار mikrobasic هست یعنی روی pickit2 بصورت 2f4a هست تمام فیوزبیت ها رو روی دیتاشیت چک کردم همه مطابق آنچه می خواهم است ولی مشکل اینجاست وقتی این میکروهای از کار افتاده رو پروگرام می کنم کاملا طبیعی پروگرام می شه و حتی پس از بازخوانی تمام مقادیر مشابه اون چیزی است که پروگرام کردم ولی میکرو کار نمی کنه حتی کار ساده ای مانند روشن کردن یک پایه c فقط وقتی پایه 13 خازن کریستال را دست میزنم و یا با وسیله ای تحریک می کنم پایه c روشن می شه و ادامه برنامه انجام نمی شه و با تحریک پایه mclr میکرو خاموش می شه این موضوع در حالی رخ می ده که یک میکرو نو را با همین مدار و برنامه بکار می گیرم کاملا طبیعی کار می کنه و کل برنامه اجرا میشه.
        سئوالم اینه که از کجا می شه فهمید میکرو سوخته ؟
        آیا امکان داره میکرو قفل شده باشه و امکان بازیابی وجود داشته باشه؟
        آیا تغییر فیوز بیت ها باعث قفل شدن یا سوختن میکرو می شه ؟
        یک سوال دیگر آیا تنظیم میکرو برای دریافت اطلاعات usart از میکرو و یا کامپیوتر باعث هنگ کردن آن می شه چون هر میکرویی که این ارتباط قسمتی از برنامه اون بوده در ابتدای روشن شدن هنگ می کرد.

        از اینکه برای حل مشکل من وقت صرف می کنید متشکرم

        دیدگاه


          #5
          پاسخ : مشکل قفل شدن میکروکنترلر pic 16f877a

          نوشته اصلی توسط irsmeco92
          از اینکه دیر پاسخ شما را می دهم معذرت می خواهم
          عرض شود بیت های تنظیم شده default نرم افزار mikrobasic هست یعنی روی pickit2 بصورت 2f4a هست تمام فیوزبیت ها رو روی دیتاشیت چک کردم همه مطابق آنچه می خواهم است ولی مشکل اینجاست وقتی این میکروهای از کار افتاده رو پروگرام می کنم کاملا طبیعی پروگرام می شه و حتی پس از بازخوانی تمام مقادیر مشابه اون چیزی است که پروگرام کردم ولی میکرو کار نمی کنه حتی کار ساده ای مانند روشن کردن یک پایه c فقط وقتی پایه 13 خازن کریستال را دست میزنم و یا با وسیله ای تحریک می کنم پایه c روشن می شه و ادامه برنامه انجام نمی شه و با تحریک پایه mclr میکرو خاموش می شه این موضوع در حالی رخ می ده که یک میکرو نو را با همین مدار و برنامه بکار می گیرم کاملا طبیعی کار می کنه و کل برنامه اجرا میشه.
          سئوالم اینه که از کجا می شه فهمید میکرو سوخته ؟
          آیا امکان داره میکرو قفل شده باشه و امکان بازیابی وجود داشته باشه؟
          آیا تغییر فیوز بیت ها باعث قفل شدن یا سوختن میکرو می شه ؟
          یک سوال دیگر آیا تنظیم میکرو برای دریافت اطلاعات usart از میکرو و یا کامپیوتر باعث هنگ کردن آن می شه چون هر میکرویی که این ارتباط قسمتی از برنامه اون بوده در ابتدای روشن شدن هنگ می کرد.

          از اینکه برای حل مشکل من وقت صرف می کنید متشکرم
          سلام.
          دوست عزیز وضعیت LVP به چه صورت هست، آیا در زمان تنظیم کلمه پیکره بندی ( CONFIGURATION WORD ) این قابلیت رو غیر فعال کردید یا نه؟ اگر LVP فعال هست پین RB3 رو به زمین متصل کردید یا خیر؟ این نکته از اشتباهاتی هست که اکثر افرادی که با PIC کار میکنن بهش توجه نمیکنن. از اونجایی که گفتید کلمه پیکره بندی به صورت 2F4A هست به نظر میرسه LVP فعال هست. کلمه پیره بندی رو به 2FCA تغییر بدید و تست کنید.

          دیدگاه


            #6
            پاسخ : مشکل قفل شدن میکروکنترلر pic 16f877a

            فیوز بیت ها تنظیم شد و پورت B3 نیز زمین شد ولی باز هم هیچ یک از میکروهای قفل شده تغییر نکرد باز هم شرایط همان گونه شد.

            دیدگاه


              #7
              پاسخ : مشکل قفل شدن میکروکنترلر pic 16f877a

              فرکانس اسیلاتور شما چقدره ؟
              تنظیمات فیوز بیت های سیستم کلاکتون به چه شکلیه ؟ مثلا HS هست ؟
              نا اميدي يه دروغ بزرگه که آدما به خودشون ميگن
              تلاش يه حقيقت بزرگه که با صبر به ثمر ميرسه

              دیدگاه


                #8
                پاسخ : مشکل قفل شدن میکروکنترلر pic 16f877a

                فرکانس اسیلاتور 20 mhz می باشد با خازن های 22pf که تنظیمات فیوز بیت به صورت HS می باشد و WDT و LVP بصورت off تنظیم شده است

                دیدگاه


                  #9
                  پاسخ : مشکل قفل شدن میکروکنترلر pic 16f877a

                  سلام دوستان
                  علیرغم کم لطفی دوستان و پاسخ ندادن به سوالات من باز هم می نویسم تا شاید کسی پیدا شود به من کمک کند
                  بعد از مشکلات پیش آمده در پست های قبلی یک مدار دیگر هم ساختم که در آن چهار ورودی آنالوگ به دیجیتال استفاده شد که می باید مقادیر اندازه گیری شده توسط ارتباط RS232 به کامپیوتر ارسال گردد در این مدار نیز مشکل توقف میکرو در آغاز کار وجود دارد یعنی میکرو گاهی وقت ها هنگام وصل شدن تغذیه روشن نمی شود و تنها با قطع و وصل کردن تغذیه بصورت اتفاقی روشن می شود . خازن ها در رنج های مختلف و کریستال در انواع مختلف تعویض شد . حتی WDT هم خاموش شد و در مرحله بعد بصورت فعال برنامه ریزی شد باز هم این مشکل وجود دارد . سوال من اینجاست که آیا ارتباط با RS232 موجب اختلال در عملکرد میکرو می گردد؟

                  دوستان عزیز خواهش می کنم کمک نمایید . این پروژه مدت زیادیست مرا درگیر خود کرده است .

                  دیدگاه


                    #10
                    پاسخ : مشکل قفل شدن میکروکنترلر pic 16f877a

                    شما خودتون مشکل رو حل کردید! میکرو رو عوض کردین درست شد دیگه!

                    یه عکس از مداری که مشکل داره بزارین.

                    دیدگاه


                      #11
                      پاسخ : مشکل قفل شدن میکروکنترلر pic 16f877a

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

                      دیدگاه


                        #12
                        پاسخ : مشکل قفل شدن میکروکنترلر pic 16f877a

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

                        دیدگاه


                          #13
                          پاسخ : مشکل قفل شدن میکروکنترلر pic 16f877a

                          دوستان عزیز از اینکه وقت خود را صرف پاسخ به سوالات من می نمایید متشکرم .
                          من با نرم افزار Mikrobasic می نویسم البته قبلا با picbasic می نوشتم به دلیل برخی مشکلات و کمبود توابع در این کامپایلر مجبور شدم به نرم افزار mikrobasic روی بیاورم . مشکل اصلی من اینجاست که وقتی سورس را در نرم افزار پروتوس شبیه سازی می کنم کاملا صحیح عمل می کند و در مدار واقعی نیز اینگونه است ولی در برخی موارد میکرو روشن نمی شود . در دو مدار دیگر با ساختار و برنامه های متفاوت نیز این مشکل وجود دارد بیشتر سورس هایی که از پروتکل ارتباطی RS232 استفاده کردم ام این مشکل پیش می آید . سورس برنامه بصورت زیر است که تحلیل مقداری آن توسط نرم افزار VB در کامپیوتر انجام می شود .

                          [code=qbasic]
                          dim Vin,ValOut as integer

                          dim i as integer
                          dim textout as string[6]

                          dim received_byte as byte
                          dim txt as string[5]

                          main:
                          intcon =$88
                          ADCON1 = %10001000
                          trisB = $00
                          trisC= %10000000
                          'trisD=0
                          portb=$00
                          portB=0
                          Lcd_Init(PORTd)
                          TRISA = $FF
                          USART_init(9600)
                          Lcd_Out(2, 1, " Monitoring&quot
                          Lcd_Out(1, 2, "Hello &quot ' Print text at LCD
                          for i=0 to 50
                          ClrWdt
                          delay_ms(50)
                          next i
                          ClrWdt
                          Lcd_Out(2, 1, "connecting to PC&quot
                          Lcd_Out(1, 2, "Searching...... &quot ' Print text at LCD
                          for i=0 to 50
                          ClrWdt
                          delay_ms(50)
                          next i
                          ClrWdt
                          Lcd_Cmd(Lcd_Clear)
                          i=1
                          while true
                          ClrWdt
                          if Usart_Data_Ready = 1 then
                          received_byte = Usart_Read
                          bytetostr(received_byte,txt)
                          lcd_out(2,1,txt)

                          if i=8 then i=2 else i=i+1 end if

                          if received_byte=51 then
                          portc.0=1
                          portB.0=1
                          Lcd_Out(1, 2, "Sensor is ready &quot
                          end if
                          if received_byte=52 then
                          portC.0=0
                          portB.0=0
                          Lcd_Out(1, 2, "Sensor is off &quot
                          end if

                          portb.(i-1)=1
                          delay_ms(50)
                          Vin = Adc_Read(i-1)
                          IntToStr(i, textout)

                          if portc.0=0 then
                          portb.0=0
                          end if

                          ValOut=vin
                          ValOut = ValOut*10 + i
                          intToStr(ValOut, textout)
                          strcat(textout,"*&quot
                          Usart_Write_text(textout)
                          lcd_out(2,5,textout)
                          delay_ms(50)
                          portb.(i-1)=0
                          end if
                          ClrWdt
                          wend
                          [/code]

                          واقعا کلافه شده ام تقریبا 2 ماه است که آن را کنار گداشته ام اگر کسی از دوستان می داند کمک کند.

                          دیدگاه


                            #14
                            پاسخ : مشکل قفل شدن میکروکنترلر pic 16f877a

                            سلام

                            مطمئن نیستم اما این مشکل ممکنه از تغذیه هم باشه , در مدارهایی که ولتاژ به آرامی بالا میرود لازم است با استفاده از یک خازن کم ظرفیت که روی پایه MCLR قرار میدهیم , میکرو را در هنگام روشن شدن رست کنیم

                            یه راه دیگه هم هست که البته بیشتر شبیه پاک کردن صورت مسئله هست
                            اونم اینکه WDT رو فعال کنی تا مثلا اگه 10 ثانیه روال عادی برنامه وجود نداشت میکرو رست بشه
                            نا اميدي يه دروغ بزرگه که آدما به خودشون ميگن
                            تلاش يه حقيقت بزرگه که با صبر به ثمر ميرسه

                            دیدگاه


                              #15
                              پاسخ : مشکل قفل شدن میکروکنترلر pic 16f877a

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

                              دیدگاه

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