اطلاعیه

Collapse
No announcement yet.

هالت میکرو stm32f103

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

    هالت میکرو stm32f103

    سلام
    چی میشه که برنامه از while(1) میاد بیرون و تابع main() دوباره از اول اجرا میشه و گاهی هنگ میکنه؟
    وقفه های سخت افزاری دارم اما الویت بندی شده اند و تا وقتی به شرط فعال کننده ی کیپد و lcd در برنامه نرسیدم مشکلی نیست اما بمحض ورود به شرط مذکور گاهی بلافاصله و گاهی بعد از مدتی حین وارد کردن مقادیر از Keypad میکرو هالت و میشه و تا وقتی ریست نکنم و دوباره با ST Link utility روی Core Reset یا hardware Reset شناسایی و سپس روی Software Reset برنامه ریزی نکنم برنامه ریزی نکنم میکرو شناسایی و برنامه ریزی نمیشه.
    کیپد 4 در 4 هستش و lcd 128x64 graphical KS108 برنامه ای هم که استفاده میکنم Keil u5 هستش

    #2
    نوشته اصلی توسط mrtz_2024 نمایش پست ها
    سلام
    چی میشه که برنامه از while(1) میاد بیرون و تابع main() دوباره از اول اجرا میشه و گاهی هنگ میکنه؟
    وقفه های سخت افزاری دارم اما الویت بندی شده اند و تا وقتی به شرط فعال کننده ی کیپد و lcd در برنامه نرسیدم مشکلی نیست اما بمحض ورود به شرط مذکور گاهی بلافاصله و گاهی بعد از مدتی حین وارد کردن مقادیر از Keypad میکرو هالت و میشه و تا وقتی ریست نکنم و دوباره با ST Link utility روی Core Reset یا hardware Reset شناسایی و سپس روی Software Reset برنامه ریزی نکنم برنامه ریزی نکنم میکرو شناسایی و برنامه ریزی نمیشه.
    کیپد 4 در 4 هستش و lcd 128x64 graphical KS108 برنامه ای هم که استفاده میکنم Keil u5 هستش
    سلام یک شبه کد کلی بده از تابع اصلی و حلقه while و حدالامکان از یک کتابخانه دیگه برای اسکن صفحه کلید استفاده کن شاید اون داره مشکل ایجاد میکنه برات

    دیدگاه


      #3
      نوشته اصلی توسط m.aziz نمایش پست ها

      سلام یک شبه کد کلی بده از تابع اصلی و حلقه while و حدالامکان از یک کتابخانه دیگه برای اسکن صفحه کلید استفاده کن شاید اون داره مشکل ایجاد میکنه برات
      کتابخانه کیپد رو حذف کردم و 4 تا ردیف رو یک میکنم با وقفه سخت افزاری کلید رو با اسکن میخونم، شبه کدش این شده:

      main(){ set output; scan_kpad(); while(1){ if(key==0){...} else{...} } }
      توی اون else مقادیر کیپد اسکن میشه و رو LCD نمایش داده میشه و برنامه کلا از شرط اول میاد بیرون اما گاهی موقع فشردن کلید میپره بیرون از while و اون خروجی که ابتدا فعال کردم تو تابع اصلی قبل از while شروع میکنه به دائما قطع و وصل کردن عین حالت اینکه برنامه دیگه داخل While نشه و دائما همونجا بمونه و قطع و وصل کنه …

      دیدگاه


        #4
        نوشته اصلی توسط mrtz_2024 نمایش پست ها
        سلام
        چی میشه که برنامه از while(1) میاد بیرون و تابع main() دوباره از اول اجرا میشه و گاهی هنگ میکنه؟
        وقفه های سخت افزاری دارم اما الویت بندی شده اند و تا وقتی به شرط فعال کننده ی کیپد و lcd در برنامه نرسیدم مشکلی نیست اما بمحض ورود به شرط مذکور گاهی بلافاصله و گاهی بعد از مدتی حین وارد کردن مقادیر از Keypad میکرو هالت و میشه و تا وقتی ریست نکنم و دوباره با ST Link utility روی Core Reset یا hardware Reset شناسایی و سپس روی Software Reset برنامه ریزی نکنم برنامه ریزی نکنم میکرو شناسایی و برنامه ریزی نمیشه.
        کیپد 4 در 4 هستش و lcd 128x64 graphical KS108 برنامه ای هم که استفاده میکنم Keil u5 هستش
        سلام ،
        آیا مطمئن هستید که Flag تمام وقفه ها رو موقع رویدادنشون پاک میکنید ؟
        در صورت امکان برای عیب یابی تک به تک وقفه ها رو غیرفعال کنید و واکنش برنامه رو امتحان کنید.

        دیدگاه


          #5
          نوشته اصلی توسط mrtz_2024 نمایش پست ها

          کتابخانه کیپد رو حذف کردم و 4 تا ردیف رو یک میکنم با وقفه سخت افزاری کلید رو با اسکن میخونم، شبه کدش این شده:

          main(){ set output; scan_kpad(); while(1){ if(key==0){...} else{...} } }
          توی اون else مقادیر کیپد اسکن میشه و رو LCD نمایش داده میشه و برنامه کلا از شرط اول میاد بیرون اما گاهی موقع فشردن کلید میپره بیرون از while و اون خروجی که ابتدا فعال کردم تو تابع اصلی قبل از while شروع میکنه به دائما قطع و وصل کردن عین حالت اینکه برنامه دیگه داخل While نشه و دائما همونجا بمونه و قطع و وصل کنه …
          واستا ببینم سخت افزارت رو روی چی سوار کردی؟

          دیدگاه


            #6
            نوشته اصلی توسط HS1386 نمایش پست ها

            سلام ،
            آیا مطمئن هستید که Flag تمام وقفه ها رو موقع رویدادنشون پاک میکنید ؟
            در صورت امکان برای عیب یابی تک به تک وقفه ها رو غیرفعال کنید و واکنش برنامه رو امتحان کنید.
            بله در این مورد رعایت شده، اونم تست کردم

            دیدگاه


              #7
              نوشته اصلی توسط m.aziz نمایش پست ها

              واستا ببینم سخت افزارت رو روی چی سوار کردی؟
              برد بورد !!

              دیدگاه


                #8
                نوشته اصلی توسط mrtz_2024 نمایش پست ها

                بله در این مورد رعایت شده، اونم تست کردم
                تا الان علت بروز این مشکل ( اجرا شدن برنامه از اول ) برای من بخاطر همون پاک نشدن فلگ های وقفه بوده که گفتید رعایت میکنید.
                مورد دیگه میتونه سرریز شمارنده Watchdog باشه.

                دیدگاه


                  #9
                  نوشته اصلی توسط mrtz_2024 نمایش پست ها

                  برد بورد !!
                  به این عکس توجه کنید لطفا:
                  برد بورد در لایه زیرین از فلزات هادی عمودی در مرکز و افقی در اطراف است
                  ​این وسیله وقتی زیاد استفاده بشه خیلی سریع مستهلک میشه چون پایه ها دیگه مثل روز اول جمع و جور نیستند و گاهی اگر دقت کنید میبینید که بعضی پایه ها شل و بعضی هنوز هنگام فرو کردن سیم در آنها سفت تر بنظر میرسند.
                  حالا وقتی ما میخوایم پروژه با LCD و KPAD رو با میکروی سرعت بالایی مثل STM32 در بستر برد بورد انجام بدیم مثلا رو فرکانس 72MHZ چی میشه؟
                  میکرو با سرعت 72x10^6 پایه های میکرو و کیپد رو رفرش و اسکن میکنه حالا شما در نظر بگیر یکی از این پایه ها که عمدتا هم در پیکر بندی اولیه Float تعریف میشند و بعد از کتابخونه کنترل میشند رو برد بورد شل باشه یا با فلز کف برد بورد اتصال نکرده باشه چی میشه؟
                  آنتن با فرکانس 72MHZ! ولتاژ شناور روی پایه ای که در تلاش برای صفر یا یک شدنه! نوسانات ولتاژی روی اون پایه ! مخصوصا در LCD و KPAD که دائما از طرف میکرو پایه ها در حال چک شدنه! حالا اگر این وسط دست شما بره رو کیپد و پایه ها رو از زیر موقع فشردن کلید کمی جابجا کنه این موضوع حاد تر هم میشه و اگر به سر سیم آزادی روی برد بورد یا مثلا قسمت فلزی قاب دور LCD که زمین شده در ماژول بخوره یا به پینهای میکرو دیگه بدتر چون دست شما الکتریسیته ساکن و مقاومت بالایی داره عین اتصال به زمین عمل میکنه.
                  برد بورد رو هیچوفت برای مدارات میکروکنترلری شلوغ مخصوصا STM32 و امثالهم که سرعت بالایی دارند و نویز پذیرند توصیه نمیکنم چون بشخصه قبلا از این موضوع زیاد ضربه خوردم و وقتم گرفته شده عین شما.
                  پیشنهاد من اینه که این عدوات رو حدالامکان روی برد بورد نبندید یا اگر اینکار رو میکنید برد بردتون سالم و درست باشه و از پایه های سفت و سالم برد استفاده کنید نه پایه های شل و ول، حتما پین ها رو تا مقصد با مولتی متر تست اتصال بازر بگیرید و از سیم خشک مفتول بجای سیم های ضعیف و نازک برد بوردی که کیفیت پائینی هم دارند استفاده کنید، سیم ها رو از سمت LCD و KPAD لحیم کنید و KPAD رو هم از میکرو و تجهیزات کمی فاصله بدید چون دستتون قراره هی باهاش کار کنه و این خودش میتونه نویز بندازه روی اتصالات ضعیفی که عرض کردم.
                  دوباره پروژه رو با رعایت نکات فوق اجرا کنید، اگر مشکل رفع نشد باید دید از چه کتابخانه ای برای برنامه نوسی استفاده کردید و جزئیات بیشتری از نرم افزارتون اینجا بگذارید، همونطور که جناب HS بالاتر فرمودند از دید نرم افزاری وقفه ها و واچ داگ عامل اصلی خروجی از حلقه هستند مگر اینکه جایی رو اشتباه کرده باشید یا کتابخانه درست عمل نکنه، اگرم از CUBE MX استفاده میکنید فایل رو بازتولید کنید چون گاهی درست کانفیگ نمیده.
                  جدیدترین ویرایش توسط m.aziz; ۱۸:۴۳ ۱۴۰۳/۰۹/۲۲.

                  دیدگاه


                    #10
                    نوشته اصلی توسط m.aziz نمایش پست ها

                    به این عکس توجه کنید لطفا:
                    برد بورد در لایه زیرین از فلزات هادی عمودی در مرکز و افقی در اطراف است
                    ​این وسیله وقتی زیاد استفاده بشه خیلی سریع مستهلک میشه چون پایه ها دیگه مثل روز اول جمع و جور نیستند و گاهی اگر دقت کنید میبینید که بعضی پایه ها شل و بعضی هنوز هنگام فرو کردن سیم در آنها سفت تر بنظر میرسند.
                    حالا وقتی ما میخوایم پروژه با LCD و KPAD رو با میکروی سرعت بالایی مثل STM32 در بستر برد بورد انجام بدیم مثلا رو فرکانس 72MHZ چی میشه؟
                    میکرو با سرعت 72x10^6 پایه های میکرو و کیپد رو رفرش و اسکن میکنه حالا شما در نظر بگیر یکی از این پایه ها که عمدتا هم در پیکر بندی اولیه Float تعریف میشند و بعد از کتابخونه کنترل میشند رو برد بورد شل باشه یا با فلز کف برد بورد اتصال نکرده باشه چی میشه؟
                    آنتن با فرکانس 72MHZ! ولتاژ شناور روی پایه ای که در تلاش برای صفر یا یک شدنه! نوسانات ولتاژی روی اون پایه ! مخصوصا در LCD و KPAD که دائما از طرف میکرو پایه ها در حال چک شدنه! حالا اگر این وسط دست شما بره رو کیپد و پایه ها رو از زیر موقع فشردن کلید کمی جابجا کنه این موضوع حاد تر هم میشه و اگر به سر سیم آزادی روی برد بورد یا مثلا قسمت فلزی قاب دور LCD که زمین شده در ماژول بخوره یا به پینهای میکرو دیگه بدتر چون دست شما الکتریسیته ساکن و مقاومت بالایی داره عین اتصال به زمین عمل میکنه.
                    برد بورد رو هیچوفت برای مدارات میکروکنترلری شلوغ مخصوصا STM32 و امثالهم که سرعت بالایی دارند و نویز پذیرند توصیه نمیکنم چون بشخصه قبلا از این موضوع زیاد ضربه خوردم و وقتم گرفته شده عین شما.
                    پیشنهاد من اینه که این عدوات رو حدالامکان روی برد بورد نبندید یا اگر اینکار رو میکنید برد بردتون سالم و درست باشه و از پایه های سفت و سالم برد استفاده کنید نه پایه های شل و ول، حتما پین ها رو تا مقصد با مولتی متر تست اتصال بازر بگیرید و از سیم خشک مفتول بجای سیم های ضعیف و نازک برد بوردی که کیفیت پائینی هم دارند استفاده کنید، سیم ها رو از سمت LCD و KPAD لحیم کنید و KPAD رو هم از میکرو و تجهیزات کمی فاصله بدید چون دستتوت قراره هی باهاش کار کنه و این خودش میتونه نویز بندازه روی اتصالات ضعیفی که عرض کردم.
                    دوباره پروژه رو با رعایت نکات فوق اجرا کنید، اگر مشکل رفع نشد باید دید از چه کتابخانه ای برای برنامه نوسی استفاده کردید و جزئیات بیشتری از نرم افزارتون اینجا بگذارید، همونطور که جناب HS بالاتر فرمودند از دید نرم افزاری وقفه ها و واچ داگ عامل اصلی خروجی از حلقه هستند مگر اینکه جایی رو اشتباه کرده باشید یا کتابخانه درست عمل نکنه، اگرم از CUBE MX استفاده میکنید فایل رو بازتولید کنید چون گاهی درست کانفیگ نمیده.
                    سلام
                    تجربتون صحیحه استاد چون وقتی کیپد رو با کابل چند رشته لحیم کردم و آوردم بیرون از برد بورد مشکلم حل شد انگار فشار دستم روی کیپد باعثش بود و نرم افزار مشکلی نداره و روان کار میکنه.
                    سپاس از همراهان گرامی

                    دیدگاه


                      #11
                      نوشته اصلی توسط mrtz_2024 نمایش پست ها

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

                      دیدگاه

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