اطلاعیه

Collapse
No announcement yet.

مشکل با متغیر های گلوبال در کدویژن

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

    مشکل با متغیر های گلوبال در کدویژن

    سلام دوستان عزیز.
    من تو یک پروژه ای به مشکل برخوردم و دیدم برنامه درست کار نمی کند، بعد از کلی ریشه یابی به چیز عجیبی برخوردم! اینکه کدویژن بعضی از متغیر های گلوبالم رو بدون اینکه اصلا دستوری وجود داشته باشه مقدار دهی می کنه! البته مطمئن نیستم ایراد از کدویژن باشه.
    برای مثال مقدار اولیه ی متغیر گلوبال a رو صفر تعیین می کنم، تو متن برنامه که مقدار این متغیر رو بدون اینکه جایی دستکاریش کرده باشم میفرستم روی پورت سریال، میبینم از مقدار اولیه ی خودش خارج شده و برای مثال شده: 14642
    هم تو شبیه ساز این اتفاق میوفته هم تو واقعیت!
    ورژن کدویژن 2.04 هستش و میکرو atmega8
    حجم برنامه 3kb
    دوستان کسی اگر اطلاعاتی داره ممنون میشم.

    #2
    پاسخ : مشکل با متغیر های گلوبال در کدویژن

    حدس میزنم قسمتای دیگه برنامه ات باگ داره
    C محدوده متغیر ها رو چک نمیکنه یعنی اینکه اگه بگی:

    کد:
    char c[10];
    ...
    c[12]='a';

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

    دیدگاه


      #3
      پاسخ : مشکل با متغیر های گلوبال در کدویژن

      نوشته اصلی توسط بامداد
      حدس میزنم قسمتای دیگه برنامه ات باگ داره
      C محدوده متغیر ها رو چک نمیکنه یعنی اینکه اگه بگی:

      کد:
      char c[10];
      ...
      c[12]='a';

      بدون خطا کامپایلش میکنه و در زمان اجرا میره دیتا در نقطه مورد نظر میریزه و فجایعی ایجاد میکنه که بیا و ببین
      بگردین تو برنامه تون ببینین همچین باگی پیدا میکنین یا نه
      اگه برنامه تون بزرگه یک راهش اینه که اول از برنامتون یک بک پ بگیرین، بعد قسمتهاشو یکی یکی پاک کنین و چک کنین ببینین کی مشکل رفع میشه، بعد تو اون قسمتی که پاکش کردین بگردین باگ رو پیدا کنین
      آقا خدا خیرت بده. :agree:
      مشکلم حل شد!
      مشکل اینجا بود که متغیر buff رو با 11 خونه تعریف کرده بودم اما با تعداد بیشتر از 11 کاراکتر پرش می کردم.
      ممنون

      دیدگاه


        #4
        پاسخ : مشکل با متغیر های گلوبال در کدویژن

        وقتی این نوع تاپیک ها رو میخونم افسوس می خورم که چرا اسمبلی کار نمی کنید ؟


        ..
        100 ها تاپیک با مضمون
        تایمر کار نمیکنه اینتراپت هنگ میکنه متغر درست مقدار دهی نمیشه زیر تابع برنامه اصلی رو هنگ میکنه urt و spi چطوری کار میکنه و ....

        همشون ریشه در اسمبلی داره

        با اسمبلی با میکرو نفس میکشی با فرکانس 16 مگ هر دستور 62.5 نانو ثانیه طول میکشه . انگار دستتو گذاشی رو قلب میکرو ظربانشو حس میکنی
        تنها موردی که همه آدما یقین دارن خدا در حقش زیاد لطف کرده
        داشتن عقله زیادتر از دیگر آدم ها است

        دیدگاه


          #5
          پاسخ : مشکل با متغیر های گلوبال در کدویژن

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

          دیدگاه

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