دوستان سلام
مشکلم رو اینجا مطرح می کنم. شدیداً به کمک نیاز دارم...
یه سیستم مانیتورینگ طراحی کردم. Atmega 32 ، دو سنسور SHT-15 ، رام اکسترنال I2C ، ساعت، ال سی دی گرافیکی، کی پد 4*4
مسلماً سیستم پیچیده شده و تعداد زیادی متغیر داره
مشکل اصلی:
تعدادی از متغیر های عمومی موجود در SRAM بعد از فراخوانی بعضی توابع تغییر مقدار می دن. به نظر میاد متغیرهای محلی بعضی توابع با متغیرهای عمومی تداخل دارن.
متوجه شدم که با جابه جا کردن متغیر ها در لیست اعلان (یعنی عوض کردن تقدم اعلان) یک سری از متغیرها به حالت اصلی بر می گردن ولی متغیر های دیگری دچار تداخل می شن.
فرض کنید مقادیر ساعت و تاریخ داخل 5 متغیر قرار میگیره و روی ال سی دی نمایش داده میشه. بعد از فراخوانی تابع ایکس مقادیر این پنج متغیر دستکاری میشن.
لطفاً درخواست بازبینی کد برنامه رو نداشته باشید. کد اصلی شامل 2682 سطره، و مرورش زمان زیادی می طلبه.
کد ها کاملاً اصولی نوشته شدن و مشکل فقط باید به تخصیص حافظه مربوط باشه.
پیشاپیش از به اشتراک گذاری اطلاعات ارزشمندتون تشکر می کنم.
مشکلم رو اینجا مطرح می کنم. شدیداً به کمک نیاز دارم...
یه سیستم مانیتورینگ طراحی کردم. Atmega 32 ، دو سنسور SHT-15 ، رام اکسترنال I2C ، ساعت، ال سی دی گرافیکی، کی پد 4*4
مسلماً سیستم پیچیده شده و تعداد زیادی متغیر داره
مشکل اصلی:
تعدادی از متغیر های عمومی موجود در SRAM بعد از فراخوانی بعضی توابع تغییر مقدار می دن. به نظر میاد متغیرهای محلی بعضی توابع با متغیرهای عمومی تداخل دارن.
متوجه شدم که با جابه جا کردن متغیر ها در لیست اعلان (یعنی عوض کردن تقدم اعلان) یک سری از متغیرها به حالت اصلی بر می گردن ولی متغیر های دیگری دچار تداخل می شن.
فرض کنید مقادیر ساعت و تاریخ داخل 5 متغیر قرار میگیره و روی ال سی دی نمایش داده میشه. بعد از فراخوانی تابع ایکس مقادیر این پنج متغیر دستکاری میشن.
Chip: ATmega32
Clock frequency: 8.000000 MHz
Program type: Application
Memory model: Small
Optimize for: Size
(s)printf features: int, width
(s)scanf features: int, width
Promote 'char' to 'int': No
'char' is unsigned: Yes
global 'const' stored in FLASH: Yes
8 bit enums: No
Enhanced core instructions: Yes
Automatic register allocation: Yes
Smart register allocation: Yes
Build: ...
4919 line(s) compiled
No errors
10 warning(s)
Bit variables size: 0 byte(s)
Data Stack area: 200h to 3FFh
Data Stack size: 512 byte(s)
Estimated Data Stack usage: 69 byte(s)
RAM Global variables area: 400h to 497h
RAM Global variables size: 152 byte(s)
Hardware Stack area: 498h to 85Fh
Hardware Stack size: 968 byte(s)
Heap size: 0 byte(s)
EEPROM usage: 204 byte(s), 19.9% of EEPROM
Program size: 11308 words (22616 bytes), 69.0% of FLASH
Clock frequency: 8.000000 MHz
Program type: Application
Memory model: Small
Optimize for: Size
(s)printf features: int, width
(s)scanf features: int, width
Promote 'char' to 'int': No
'char' is unsigned: Yes
global 'const' stored in FLASH: Yes
8 bit enums: No
Enhanced core instructions: Yes
Automatic register allocation: Yes
Smart register allocation: Yes
Build: ...
4919 line(s) compiled
No errors
10 warning(s)
Bit variables size: 0 byte(s)
Data Stack area: 200h to 3FFh
Data Stack size: 512 byte(s)
Estimated Data Stack usage: 69 byte(s)
RAM Global variables area: 400h to 497h
RAM Global variables size: 152 byte(s)
Hardware Stack area: 498h to 85Fh
Hardware Stack size: 968 byte(s)
Heap size: 0 byte(s)
EEPROM usage: 204 byte(s), 19.9% of EEPROM
Program size: 11308 words (22616 bytes), 69.0% of FLASH
لطفاً درخواست بازبینی کد برنامه رو نداشته باشید. کد اصلی شامل 2682 سطره، و مرورش زمان زیادی می طلبه.
کد ها کاملاً اصولی نوشته شدن و مشکل فقط باید به تخصیص حافظه مربوط باشه.
پیشاپیش از به اشتراک گذاری اطلاعات ارزشمندتون تشکر می کنم.
دیدگاه