اطلاعیه

Collapse
No announcement yet.

la;g fh مقدار بازگشتی float در تابع با lpc1788

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

    #16
    پاسخ : la;g fh مقدار بازگشتی float در تابع با lpc1788

    نوشته اصلی توسط dark star نمایش پست ها
    فقط اینو اگر ممکنه امتحان کن (توضیح دادن چراش طولانیه )
    float رو کلا بکن double بعد ببین چی میگیری؟

    یعنی توی تعریف ها و ...
    %F همون بمونه
    صفر برمیگردونه

    دلیل: ادغام دو پست برای جلوگیری از اسپم

    نوشته اصلی توسط x935418 نمایش پست ها
    آیا تابع get_max6675 در یک فایل و تابعی که از آن استفاده میکند در یک فایل دیگر است ؟ یا هردو در یک فایل هستند ؟
    فایل هاشون جدا هستش
    برای آنکه کاری امکان پذیر گردد دیدگان دیگری لازم است، دیدگانی نو

    دیدگاه


      #17
      پاسخ : la;g fh مقدار بازگشتی float در تابع با lpc1788

      دو چیز رو پیشنهاد میدم که امتحان کنید
      1- پروتوتایپ تابع را در بالای تابعی که در آن استفاده شده بنویسید
      2- نوع تابع را double نمایید و در تابع sprintf هم از %lf استفاده کنید
      در مورد پیشنهاد دوم فراموش نکنید که نوع متغیر داخل تابع هم باید double شود

      متاسفانه کیل ندارم والا خودم امتحان میکردم، من با میکروسی و پروتئوس کار میکنم

      دیدگاه


        #18
        پاسخ : la;g fh مقدار بازگشتی float در تابع با lpc1788

        نوشته اصلی توسط x935418 نمایش پست ها
        دو چیز رو پیشنهاد میدم که امتحان کنید
        1- پروتوتایپ تابع را در بالای تابعی که در آن استفاده شده بنویسید
        2- نوع تابع را double نمایید و در تابع sprintf هم از %lf استفاده کنید
        در مورد پیشنهاد دوم فراموش نکنید که نوع متغیر داخل تابع هم باید double شود

        متاسفانه کیل ندارم والا خودم امتحان میکردم، من با میکروسی و پروتئوس کار میکنم
        همه اینایی که گفتید رو امتحان کردم
        اما جواب نمیدن
        این لینک رو هم نگاه کنید

        شرح مقدار float رو ببنید
        برای آنکه کاری امکان پذیر گردد دیدگان دیگری لازم است، دیدگانی نو

        دیدگاه


          #19
          پاسخ : la;g fh مقدار بازگشتی float در تابع با lpc1788

          پیشنهاد آخر:
          یک متغیر گلوبال فلوت فقط برای این تابع تعریف کنید و مقدار ی را که میخواهید برگردانید را (در همان تابع) داخل آن بگذارید و چیزی برنگردانید

          البته این روش درستی در برنامه نویسی محسوب نمیشود ولی ممکن است کارتان را راه بیندازد و همچنین دایره احتمالات علل ممکنه را کوچکتر کند

          دیدگاه


            #20
            پاسخ : la;g fh مقدار بازگشتی float در تابع با lpc1788

            نوشته اصلی توسط hossein_tomari007 نمایش پست ها
            این لینک رو هم نگاه کنید

            شرح مقدار float رو ببنید
            این چیز عجیبی نیست، این قرار داد IEEE برای تفسیر 0 و 1 و نحوه ی ذحیره float هستش.

            اینکارا که اینجا نوشته رو داری:

            دیدگاه


              #21
              پاسخ : la;g fh مقدار بازگشتی float در تابع با lpc1788

              نوشته اصلی توسط x935418 نمایش پست ها
              پیشنهاد آخر:
              یک متغیر گلوبال فلوت فقط برای این تابع تعریف کنید و مقدار ی را که میخواهید برگردانید را (در همان تابع) داخل آن بگذارید و چیزی برنگردانید

              البته این روش درستی در برنامه نویسی محسوب نمیشود ولی ممکن است کارتان را راه بیندازد و همچنین دایره احتمالات علل ممکنه را کوچکتر کند
              ممنون دوست عزیز
              که پیگیر بودید
              متاسفانه هیچ کدوم از راه ها به نتیجه نرسید
              و عدد رو با همون فرمتی که گفتم برمیگردونه
              برای آنکه کاری امکان پذیر گردد دیدگان دیگری لازم است، دیدگانی نو

              دیدگاه


                #22
                پاسخ : la;g fh مقدار بازگشتی float در تابع با lpc1788

                نوشته اصلی توسط hossein_tomari007 نمایش پست ها
                ممنون دوست عزیز
                که پیگیر بودید
                متاسفانه هیچ کدوم از راه ها به نتیجه نرسید
                و عدد رو با همون فرمتی که گفتم برمیگردونه
                یعنی شما مقدارتون رو توی یک متغیر گلوبال قرارمیدین و مقدار این متغیر داخل تابع درست است ولی در قسمتی که میخواین استفاده کنید مقدار این متغیر (بعد از احضار تابع و قبل از دادن به sprintf) درست نیست ؟

                مگه میشه ؟
                مگه داریم ؟

                دلیل: ادغام دو پست برای جلوگیری از اسپم

                کد:
                while(1)
                    {
                
                        unsigned char buf[30];
                        gg=get_max6675();
                 
                                                   // !!!!!!!!!!!!!
                                                   gg=3.14;
                
                
                        sprintf(buf,"Temp = %f \n\r",gg);
                        UART_Send(_LPC_UART, buf, strlen(buf), BLOCKING);
                        //wait_ms(500);
                    }
                خطی که با علامت تعجب مشخص شده رو اضافه کنید
                اگه همچنان مشکل باقی بود ، پس مشکل در قسمت sprintf است و هیچ ربطی به مقدار برگشتی و نحوه برگرداندن مقدار از تابع نداره
                جدیدترین ویرایش توسط x935418; ۱۶:۵۸ ۱۳۹۶/۰۶/۰۸.

                دیدگاه


                  #23
                  پاسخ : la;g fh مقدار بازگشتی float در تابع با lpc1788

                  نوشته اصلی توسط x935418 نمایش پست ها
                  یعنی شما مقدارتون رو توی یک متغیر گلوبال قرارمیدین و مقدار این متغیر داخل تابع درست است ولی در قسمتی که میخواین استفاده کنید مقدار این متغیر (بعد از احضار تابع و قبل از دادن به sprintf) درست نیست ؟

                  مگه میشه ؟
                  مگه داریم ؟

                  دلیل: ادغام دو پست برای جلوگیری از اسپم

                  کد:
                  while(1)
                      {
                  
                          unsigned char buf[30];
                          gg=get_max6675();
                   
                                                     // !!!!!!!!!!!!!
                                                     gg=3.14;
                  
                  
                          sprintf(buf,"Temp = %f \n\r",gg);
                          UART_Send(_LPC_UART, buf, strlen(buf), BLOCKING);
                          //wait_ms(500);
                      }
                  خطی که با علامت تعجب مشخص شده رو اضافه کنید
                  اگه همچنان مشکل باقی بود ، پس مشکل در قسمت sprintf است و هیچ ربطی به مقدار برگشتی و نحوه برگرداندن مقدار از تابع نداره
                  ممنون از شما دوست عزیز
                  قسمت sprintf هیچ مشکلی نداره و تست شده
                  مشکل اینه که مقدار برگشتی از تابع با فرمت
                  32-Bit IEEE format هست و عدد بزرگیه
                  اگه این عدد رو تبدیل کنیم ؟؟؟؟ که چند بار لینک رو دادم اون مقدار رو بهمون میده
                  یعنی اینکه برگشتیمون یه عددیه که باید تبدیل بشه به عدد اعشار
                  ولی نمیدونم چطوری !!!!!
                  اینجا توابع math رو هم توی هدر فایل نگاه میکنم یه چیزای اضافی داره که نمیدونم چیه
                  مثل
                  کد:
                  extern _ARMABI double asin(double /*x*/);
                  extern _ARMABI float logbf(float /*x*/);
                  عجیبه
                  برای آنکه کاری امکان پذیر گردد دیدگان دیگری لازم است، دیدگانی نو

                  دیدگاه


                    #24
                    پاسخ : la;g fh مقدار بازگشتی float در تابع با lpc1788

                    نوشته اصلی توسط hossein_tomari007 نمایش پست ها
                    مشکل اینه که مقدار برگشتی از تابع با فرمت
                    32-Bit IEEE format هست و عدد بزرگیه
                    اگه این عدد رو تبدیل کنیم ؟؟؟؟ که چند بار لینک رو دادم اون مقدار رو بهمون میده
                    یعنی اینکه برگشتیمون یه عددیه که باید تبدیل بشه به عدد اعشار
                    ولی نمیدونم چطوری !!!!!
                    نمی فهمم ، مقدار برگشتی یک عدد فلوت هستش ، چرا ما باید فرمت آن را عوض کنیم ؟ چون بزرگه ؟

                    اینطوری به نتیجه نمیرسیم، میشه یک لینک داونلود کیل برام میزارین ؟ (ترجیحا همون ورژنی که خودتون استفاده میکنید)
                    جدیدترین ویرایش توسط x935418; ۱۵:۱۳ ۱۳۹۶/۰۶/۱۱.

                    دیدگاه


                      #25
                      پاسخ : la;g fh مقدار بازگشتی float در تابع با lpc1788

                      روش حل این مشکل بنظرم استفاده از pointer هستش
                      اگه درست متوجه شده باشم شما چهار بایت داده دارید که کنار هم در حافظه قرار دارند الان میخواید این چهار بایت تبدیل به عدد float بشند درسته؟

                      دیدگاه


                        #26
                        پاسخ : la;g fh مقدار بازگشتی float در تابع با lpc1788

                        نوشته اصلی توسط kazem1010 نمایش پست ها
                        روش حل این مشکل بنظرم استفاده از pointer هستش
                        اگه درست متوجه شده باشم شما چهار بایت داده دارید که کنار هم در حافظه قرار دارند الان میخواید این چهار بایت تبدیل به عدد float بشند درسته؟
                        خود تابع فلوت برمیگردونه ، چیزی برای تبدیل کردن نیست

                        دیدگاه


                          #27
                          پاسخ : la;g fh مقدار بازگشتی float در تابع با lpc1788

                          در صفحه داونلود کیل چهار گزینه برای داونلود هست
                          MDK-ARM
                          C251
                          C51
                          C166

                          کدامیک را استفاده میکنید ؟

                          دیدگاه


                            #28
                            پاسخ : la;g fh مقدار بازگشتی float در تابع با lpc1788

                            دوستان من با پک ها یه برنامه نوشتم و همون توابع رو کپی کردم
                            درست کار کرد
                            نمیدونم چرا اینطوری شد
                            اما فکر کنم که ایراد احتمالاً از فایل های cmsis بوده ، البته فقط شاید
                            من در عجبم
                            برای آنکه کاری امکان پذیر گردد دیدگان دیگری لازم است، دیدگانی نو

                            دیدگاه

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