اطلاعیه

Collapse
No announcement yet.

تجربه ای که شاید به درد کسی بخوره

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

    تجربه ای که شاید به درد کسی بخوره

    با درود و خسته نباشید
    یه سفارش گرفته بودم که باید یه تعداد ازش درست میکردم که توی اون از arm و lcd4.3 استفاده کرده بودم . چون از adc استفاده میکردم حسابی پرش داشتم
    تازه این روی چشمم بعضی وقت ها میکرو ریست میشد یا ال سی دی بد کار میکرد
    توی انجمن مطرح کردم بچه ها نظر میدادند بلعخره قسمت adc که یک مشکل کد بود بر طرف کردم ولی باز پرش ها کم شده بود ولی قابل قبول نبود
    مورد اول پرش adc این بود که من یه دستگاه خارجی باز کردم و مدار دیدم . توی اون با اینکه یه تغذیه سوئیچینگ عالی داشت با این حال اومده بود به جای 5 . 3.3 یه ولتاژ 8.5 ولت درست کرده بود و همه تعذیه هارو با رگولاتور خطر تغذیه کرده بود . تست کردم 50% با رگولاتور خطی پرش ها کم شد ؟؟؟ من تمام نکات ساخت منبع تغذیه سوئیچینگ از قطعات و pcb رعایت کرده بودم
    تغذیه 5 ولت ال سی دی هم با یک عدد 7805 مجزا از تغذیه سنسور ها جدا کردم باز بهتر شد ؟ یعنی خیلی بهتر شد چون با اوسکوپ که میدیدم وقتی رنگ عوض میشد یک لحظه کوچک ولتاژ میافتاد البته در حد 1 یا 2 میلی ولت بعد ثابت میشد .
    مورد بعدی من برد با تینر و اسپری ناهید خیلی شسته بودم . من همیشه زیر پایه های میکرو پلیگان نمیکنم که بشه توی نور چراغ مطالعه پایه هارو ببینم . میدیدم عادی بود . این بار اومدم با یک led 10w یک میز نور درست کردم و برد روی اون گزاشتم . چیزهایی دیدم که با ذره بین نمیدیدم
    این عکسشه

    این کثیفی ها با ذره بین و نور از بالا درست پیدا نبود
    وقتی با یک سوزن بین پین هارو تمیز کردم پرش کمتر شد و ال سی دی و میکرو هم هنگ نکرد .
    با اینکه من از کمترین روغن لحیم استفاده کرده بودم نمیدونم این نا خالصی های سوخته سیم لحیم چه بلاهایی سرم اورد
    تازه پین هایی که کنار پایه ورودی adc بودند چون 1 و 0 میشدند و این پین ها خیای به هم نزدیکند روی عدد adc تاثیر میگزاشتند .
    جدیدترین ویرایش توسط sepehr63; ۱۵:۴۷ ۱۳۹۶/۰۵/۰۶.

    #2
    پاسخ : تجربه ای که شاید به درد کسی بخوره

    خیلی جالب بود...
    ممنون که تجربه ارزشمندتون رو به اشتراک گذاشتید

    دیدگاه


      #3
      پاسخ : تجربه ای که شاید به درد کسی بخوره

      یه مورد دیگه هم هست که از بچه ها سوال کردم و کسی متوجه نشد
      درودیه مورد ساده 2 روزه پدر منو در آورده.متغیری FLOAT توی مین تعریف کردم و از طریق پورت سریال دیتا میگیرم و با یه فرمول تبدیلش میکنم و روی نمایشگر نمایش میده که توی حالت عادی -0.17 درست نمایش میدهحالا من این متغیر توی یک تابع جدید از صدا میزنم البته اونجا هم این متغیر از نوی EXTERN تعریف میکنم با همون اسم.حالا توی اگه من اون

      مشکل این بود که من توی فایل مین یه تابع تعریف کردم و و وقتی توی فایل دوم این تابع فراخوانی میکردم اعدادی که نمایش میداد اشتباه بود ولی توی تابه مین اگه نمایش میدادم درست بود؟؟؟
      خیلی عجیب بود و بلعخره بعد 3 روز که هفت جدم اومدند جلوی چشمام و آبرو و حیثیتم رفت و کلی به نرم افزار keil و خودم ... فوش دادم بلعخره در ساعت 1.15 دقیقه شب مشکل فهمیدم
      مشکل این بود که من توی اون تابع متغری تعریف کرده بودم که طولش 35 تا بود

      char buffer[35];

      بعد اومده بودم و قبل از اینکه اطلاعات پورت سریال بخونم اونو پاک کرده بودم اینجوری

      for(i=0 ; i<36 ; i++);buffer[i]=0;

      مشکل اون 1 اظافه بود که از طول اون متغیر بیشتر بود. باید مینوشتم i کوچکتر از 35 نوشته بودم 36 که با این کار ظاهرا اعداد سایر متغیر ها هم شیفت پیدا میکرد یا پاک میشد . توی کد ویژن و نرم افزار های دیگه اینجوری نبود.
      همه زندگی منو به هم ریخت .
      جدیدترین ویرایش توسط sepehr63; ۰۱:۵۸ ۱۳۹۶/۰۵/۲۰.

      دیدگاه


        #4
        پاسخ : تجربه ای که شاید به درد کسی بخوره

        این مشکل برای من نیز پیش اومده و منو یه هفته درگیر کرد. بله این قضیه باعث overflow شدن stack میشد و ادرس برگشت تابع تو رجیستری تغییر پیدا می کرد و باعث میشد برنامه خود به خود رست بشه. موضوع جالب اینکه کدهای بعد از حلقه اجرا میشد ولی به محض اینکه تابع خارج میشد برنامه ریست میشد. کلا overflow شدن یک بافر میتونه مشکلات عجیب غریبی ایجاد کنه

        دیدگاه


          #5
          پاسخ : تجربه ای که شاید به درد کسی بخوره

          ممنون . اگه از این تجربه ها داری لطفا به اشتراک بزار . توی کد ویژن ..... من این کارو کرده بودم مثلا طول رجیستر 20 تا بود ولی توی حلقه فور 50 تایی 50 بار عدد بهش داده بودم ولی این مشکل نداشتم .

          دیدگاه

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