اطلاعیه

Collapse
No announcement yet.

از کار افتادن میکرو stm32f100c8t6 بعد از یک بار پروگرام

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

    از کار افتادن میکرو stm32f100c8t6 بعد از یک بار پروگرام

    سلام
    من یه برد واسه میکرو stm32f100c8t6 زدم که وقتی واسه اولین بار میخوام پروگرام کنم ارور read out protection میده که بعد از سرچی که کردم متوجه شدم باید از طریق نرم افزار stlink utility و option byte این read out protection رو غیر فعال کنم.بعد از طریق نرم افزار این کار رو کردم و یه بار میکرو رو از طریق iar پروگرام کردم ولی بعد از اون دیگه میکرو از کار افتاد و پروگرامر اونو نمیشناسه!
    یه برد دیگه زدم و دوباره همین کارا رو انجام دادم و این یکی دیگه هم همینجوری شد!
    مشکل از چیه؟

    آپدیت

    دقیقا بعد از این پست با یکم سرچ دیگه روش کار رو در سایت زیر پیدا کردم ، اول خواسم از مدیران سایت درخواست حذف تاپیک رو بدم ولی بعد با خودم گفتم شاید یه نفر دیگه هم مثل من همین مشکل رو داشته باشه و بهتره اینجا روش کار رو بگم:
    اول اینکه واسه هر برنامه ای که مینویسید قبلش حتما یه تاخیر کوچیک بزارید تا به این مشکل بر نخورید!
    و اگه یه موقع اشتباهی برنامتون بدون اینکه تاخیر بزارید رو میکرو پروگرم کردید کافیه تا در نرم افزار STLINK UTILITY از بخش منوی target به قسمت setting برید و از بخش mode گزینه connect under reset رو انتخاب کنید
    بعد دستتون رو روی کلید ریست بگیرید و گزینه erase رو بزنید تا برنامه میکرو پاک بشه و مشکل پروگرام نشدن حل شه
    اینم سایتی که آموزش توش نوشته شده:
    I have built my own board with STM32F7-45VGT6. I have successfully programmed it with ST-LINK v2 (not the original one though) and now I cannot even connect with MCU. I use ST-Link Utility from ST...

    #2
    پاسخ : از کار افتادن میکرو stm32f100c8t6 بعد از یک بار پروگرام

    سلام
    این کار رو بخواید هر دفعه انجام بدید براتون سخته.
    تو همون محیط کامپایلر(keil یا iar) قبل پروگرام کردن ریست رو نگه دارید و به محض اینکه گزینه پروگرام رو زدید دکمه ریست رو رها کنید.
    [آموزشی] کنترل رله با پیامک توسط sim800l
    [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
    [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
    [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
    صفحه اینستاگرام : ecdco_ir

    دیدگاه


      #3
      پاسخ : از کار افتادن میکرو stm32f100c8t6 بعد از یک بار پروگرام

      نوشته اصلی توسط سید رضا باباتبار نمایش پست ها
      سلام
      این کار رو بخواید هر دفعه انجام بدید براتون سخته.
      تو همون محیط کامپایلر(keil یا iar) قبل پروگرام کردن ریست رو نگه دارید و به محض اینکه گزینه پروگرام رو زدید دکمه ریست رو رها کنید.
      ممنون بابت راهنمایی
      نمیدونستم تو محیط کامپایلر هم این امکان وجود داره
      ولی اگه اون تاخیر اولیه قرار داده بشه دیگه نیاز به این کار هم نیست

      دیدگاه


        #4
        پاسخ : از کار افتادن میکرو stm32f100c8t6 بعد از یک بار پروگرام

        عزیز من فکر میکنم ایراد شما چیز دیگری هست!!
        داخل برنامه بعد از روشن شدن میکرو توسط برنامه ماهیت پایه های dio و clk که برای پروگرام هستند را تغیر میدهید که باعث می شود دفعه بعد میکرو امادگی پروگرام نداشته باشد و برای اماده کردن ان باید کاری که شما گفتید را انجام داد!!!

        برای حل این مشکل دو راه دارید یکی این که پین ریست را به پروگرامر اتصال بدید و یا داخل کیوب ام ایکس debug را روی serial wire قرار بدید که ماهیت این دو پایه عوض نشه!!!!

        متوجه نشدید بگید کامل تر توضیح بدم!!
        انجام پروژه هاي برنامه نويسي اندرويد
        [glow=red,2,300]نرم افزار نقشه هاي پاور کامپيوتر اندوريد[/glow]
        http://cafebazaar.ir/app/?id=com.atxdroid

        دیدگاه


          #5
          پاسخ : از کار افتادن میکرو stm32f100c8t6 بعد از یک بار پروگرام

          نوشته اصلی توسط mohsen.hex نمایش پست ها
          عزیز من فکر میکنم ایراد شما چیز دیگری هست!!
          داخل برنامه بعد از روشن شدن میکرو توسط برنامه ماهیت پایه های dio و clk که برای پروگرام هستند را تغیر میدهید که باعث می شود دفعه بعد میکرو امادگی پروگرام نداشته باشد و برای اماده کردن ان باید کاری که شما گفتید را انجام داد!!!

          برای حل این مشکل دو راه دارید یکی این که پین ریست را به پروگرامر اتصال بدید و یا داخل کیوب ام ایکس debug را روی serial wire قرار بدید که ماهیت این دو پایه عوض نشه!!!!

          متوجه نشدید بگید کامل تر توضیح بدم!!
          ممنون بابت توضیحات ولی من اصلا این دوتا پایه رو استفاده نمیکنم و تو cube هم اصلا تعریفشون نکردم و فقط واسه پروگرام کردن از این دو پایه استفاده میکنم
          فعلا درگیر یه چیز عجیبی شدم که داغونم کرده چند روزه
          از دوتا uart میکرو استفاده کردم زمانی که از یکیشون دریافت انجام میدم مشکلی ندارم ولی اگه از دوتاش دریافت داشته باشم میکرو کلا هنگ میکنه ، اولویت وقفه ها هم تعیین کردم ولی نمیدونم چرا اینجوری میشه!
          شما تا حالا به این مشکل بر نخوردید؟

          دیدگاه


            #6
            پاسخ : از کار افتادن میکرو stm32f100c8t6 بعد از یک بار پروگرام

            نوشته اصلی توسط M3R-E نمایش پست ها
            من اصلا این دوتا پایه رو استفاده نمیکنم و تو cube هم اصلا تعریفشون نکردم و فقط واسه پروگرام کردن از این دو پایه استفاده میکنم
            ایراد همین جاست !! من هم مثل شما فکر میکردم و بعد پروگرام دیگه میکرو پروگرام نمیشد!!
            بعد کاری رو که بالا توضیح دادم انجام دادم مشکل حل شد!!
            در واقعیت شما اگر در کیوب به پایه ای عملکرد ندید خودش میبره روی یک کد پیشفرض که باعث میشه پایه ها کارایی دیگه ای بگیرند



            نوشته اصلی توسط M3R-E نمایش پست ها
            شما تا حالا به این مشکل بر نخوردید؟
            اخ اخ اخ منم درگیر دقیقا هچین چیزی هستم!!
            شما DMA زدید؟؟
            انجام پروژه هاي برنامه نويسي اندرويد
            [glow=red,2,300]نرم افزار نقشه هاي پاور کامپيوتر اندوريد[/glow]
            http://cafebazaar.ir/app/?id=com.atxdroid

            دیدگاه


              #7
              پاسخ : از کار افتادن میکرو stm32f100c8t6 بعد از یک بار پروگرام

              نوشته اصلی توسط mohsen.hex نمایش پست ها
              در واقعیت شما اگر در کیوب به پایه ای عملکرد ندید خودش میبره روی یک کد پیشفرض که باعث میشه پایه ها کارایی دیگه ای بگیرند
              چه جالب!!


              نوشته اصلی توسط mohsen.hex نمایش پست ها
              اخ اخ اخ منم درگیر دقیقا هچین چیزی هستم!!
              شما DMA زدید؟؟
              نه من از dma استفاده نکردم ولی تونستم مشکل رو حل کنم!
              یه مشکل میتونه از این باشه که شما زمان ارسال به uart یه دریافت اتفاق بیفته که در این حالت قسمت uart میره تو حالت overrun و از کار میفته و کاری که من کردم این بود که همیشه قبل از ارسال ، دریافت رو کلا غیر فعال میکردم و اینجوری مشکلم کاملا حل شد
              مشکل بعدی که اینجا هم گفتم:
              زمانی که عمل دیباگ رو انجام میدادم متوجه شدم که وقتی میکرو به یه هدر دیگه میره و یه تابع رو اجرا میکنه متغیرهایی که دارم مقادیر عجیبی میگیرن و مثلا یه متغیر داشتم که عمل index رو واسه وقفه دریافت انجام میدادو با هر بار اتفاق افتادن وقفه یه کاراکتر دریافت میشد و یه دونه به این index اضافه میشد و خاصه رشته تشکیل میشد ، حالا این متغیر زمانی که به یه هدر دیگه میرفتم یه مقدار دیگه میگرفت و باعث میشد تو یه خونه دیگه از حافظه یه عدد جدید ذخیره شه که میکرو کلا هنگ میکرد ، منم اومدم از دم تمام توابع و متغیر هایی که داشتم از نوع static تعریف کردم که تو جای دیگه برنامه مقدار دیگه ای نگیره و خدا روشکر مشکلم حل شد
              البته من با کامپایلر iar این مشکل رو داشتم و الان keil رو زدم رو دانلود با keil هم تست کنم ببینم این مشکل وجود داره یا نه

              آپدیت

              این مشکل ربطی به static تعریف کردن نداشت که من اشتباه فکر میکردم!!
              مشکل اصلی از این بود که stack سرریز میشد و میکرو هنگ میکرد ، با افزایش سایز stack مشکل به کلی برطرف شد
              جدیدترین ویرایش توسط M3R-E; ۱۴:۴۳ ۱۳۹۶/۱۰/۲۳.

              دیدگاه


                #8
                پاسخ : از کار افتادن میکرو stm32f100c8t6 بعد از یک بار پروگرام

                کدام مد را استفاده میکنید؟؟
                چرا DMA استفاده نمیکنید؟؟
                انجام پروژه هاي برنامه نويسي اندرويد
                [glow=red,2,300]نرم افزار نقشه هاي پاور کامپيوتر اندوريد[/glow]
                http://cafebazaar.ir/app/?id=com.atxdroid

                دیدگاه


                  #9
                  پاسخ : از کار افتادن میکرو stm32f100c8t6 بعد از یک بار پروگرام

                  نوشته اصلی توسط mohsen.hex نمایش پست ها
                  کدام مد را استفاده میکنید؟؟
                  چرا DMA استفاده نمیکنید؟؟
                  مد آسنکرون معمولی!!
                  چون این مد معمولی هم کارم رو راه میندازه و نیازی به قابلیتهای dma نداشتم واسه همین خودم رو درگیرش نکردم
                  شما با چه کامپایلری کار میکنید؟
                  متغیر و توابع از نوع استاتیک تست کردین؟

                  دیدگاه


                    #10
                    پاسخ : از کار افتادن میکرو stm32f100c8t6 بعد از یک بار پروگرام

                    نوشته اصلی توسط M3R-E نمایش پست ها
                    شما با چه کامپایلری کار میکنید؟
                    متغیر و توابع از نوع استاتیک تست کردین؟
                    من کیل کار میکنم و راضی هستم ازش چون باهاش ++C هم میشه نوشت!!
                    نه استاتیک نزدم و اشکالات من چیزهایی بودند که با استاتیک کردن حل نمیشد!!
                    انجام پروژه هاي برنامه نويسي اندرويد
                    [glow=red,2,300]نرم افزار نقشه هاي پاور کامپيوتر اندوريد[/glow]
                    http://cafebazaar.ir/app/?id=com.atxdroid

                    دیدگاه


                      #11
                      پاسخ : از کار افتادن میکرو stm32f100c8t6 بعد از یک بار پروگرام

                      نوشته اصلی توسط mohsen.hex نمایش پست ها
                      من کیل کار میکنم و راضی هستم ازش چون باهاش ++C هم میشه نوشت!!
                      نه استاتیک نزدم و اشکالات من چیزهایی بودند که با استاتیک کردن حل نمیشد!!
                      تو کیل کاراکتر r\ و n\ رو چطور به پورت سریال میفرستن؟؟
                      من هر کاری کردم نشد!

                      دیدگاه


                        #12
                        پاسخ : از کار افتادن میکرو stm32f100c8t6 بعد از یک بار پروگرام

                        نوشته اصلی توسط M3R-E نمایش پست ها
                        ممنون بابت توضیحات ولی من اصلا این دوتا پایه رو استفاده نمیکنم و تو cube هم اصلا تعریفشون نکردم و فقط واسه پروگرام کردن از این دو پایه استفاده میکنم
                        فعلا درگیر یه چیز عجیبی شدم که داغونم کرده چند روزه
                        از دوتا uart میکرو استفاده کردم زمانی که از یکیشون دریافت انجام میدم مشکلی ندارم ولی اگه از دوتاش دریافت داشته باشم میکرو کلا هنگ میکنه ، اولویت وقفه ها هم تعیین کردم ولی نمیدونم چرا اینجوری میشه!
                        شما تا حالا به این مشکل بر نخوردید؟
                        این مشکل ربطی به static تعریف کردن نداشت که من اشتباه فکر میکردم!!
                        مشکل اصلی از این بود که stack سرریز میشد و میکرو هنگ میکرد ، با افزایش سایز stack مشکل به کلی برطرف شد

                        دیدگاه


                          #13
                          پاسخ : از کار افتادن میکرو stm32f100c8t6 بعد از یک بار پروگرام

                          نوشته اصلی توسط M3R-E نمایش پست ها
                          تو کیل کاراکتر r\ و n\ رو چطور به پورت سریال میفرستن؟؟
                          من هر کاری کردم نشد!
                          خیلی ساده این زیر برنامه ای هست توی همه برنامه هام استفاده میکنم!!
                          کد:
                          [LEFT]void print (char *data)
                          {
                              strlen(data);
                              HAL_UART_Transmit(&huart3,(uint8_t*)data,strlen(data),10);
                              HAL_UART_Transmit(&huart3,(uint8_t*)"\r\n",2,10);
                          }
                          [/LEFT]
                          انجام پروژه هاي برنامه نويسي اندرويد
                          [glow=red,2,300]نرم افزار نقشه هاي پاور کامپيوتر اندوريد[/glow]
                          http://cafebazaar.ir/app/?id=com.atxdroid

                          دیدگاه


                            #14
                            پاسخ : از کار افتادن میکرو stm32f100c8t6 بعد از یک بار پروگرام

                            نوشته اصلی توسط mohsen.hex نمایش پست ها
                            خیلی ساده این زیر برنامه ای هست توی همه برنامه هام استفاده میکنم!!
                            کد:
                            [LEFT]void print (char *data)
                            {
                                strlen(data);
                                HAL_UART_Transmit(&huart3,(uint8_t*)data,strlen(data),10);
                                HAL_UART_Transmit(&huart3,(uint8_t*)"\r\n",2,10);
                            }
                            [/LEFT]
                            من هر کاری کردم نتونستم کاراکتر r/ و n/ رو ارسال کنم!! یعنی اصلا ارسال نمیشد
                            البته همین دستور تو کامپیالر iar مشکلی نداره و جواب میده اما تو کیل نه!
                            ولی در کل iar زمین تا آسمون با کیل تفاوت داره ، هم از لحاظ امکانات و هم از لحاظ بهینه سازی هایی که روی کد انجام میده فقط محیطش یکم خشنه

                            دیدگاه


                              #15
                              پاسخ : از کار افتادن میکرو stm32f100c8t6 بعد از یک بار پروگرام

                              نوشته اصلی توسط M3R-E نمایش پست ها
                              من هر کاری کردم نتونستم کاراکتر r/ و n/ رو ارسال کنم!! یعنی اصلا ارسال نمیشد
                              البته همین دستور تو کامپیالر iar مشکلی نداره و جواب میده اما تو کیل نه!
                              ولی در کل iar زمین تا آسمون با کیل تفاوت داره ، هم از لحاظ امکانات و هم از لحاظ بهینه سازی هایی که روی کد انجام میده فقط محیطش یکم خشنه
                              هم میتونی بجای آنها از مقادیر اسکی آنها( 10 و 13) استفاده بکنی وهمچنین با استفاده از مثلا مثال زیر

                              کد:
                              void USARTSend(char *pucBuffer)
                              {
                                  while (*pucBuffer)
                                  {
                                      USART_SendData(USART1, *pucBuffer++);
                                      while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
                                      {
                                      }
                                  }
                              [/QUOTE]
                              کد:
                              while (1)
                                  {
                              [FONT=Yekan]USARTSend("\r\nI has received a line:\r\n");[/FONT]
                                          USARTSend(RX_BUF);
                                          USARTSend("\r\n");
                              }
                              [/QUOTE]
                              جدیدترین ویرایش توسط shapour; ۱۱:۱۱ ۱۳۹۶/۱۰/۲۵.

                              دیدگاه

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