با سلام خدمت همه اساتید.
من میخواستم برنامه ای با میکرو avr بنویسم که دفعات خاموش شدن و reset شدن میکرو را روی lcd کاراکتری نمایش بدم. بنابراین با توجه به رجیستر MCUCSR که علت ریست شدن میکرو را نگه میدارد به این صورت عمل کردم:
با توجه به دیتاشیت بیت صفرم رجیستر فوق power on reset نام دارد.(من از دیتاشیت این طور فهمیدم که وقتی تغذیه میکرو وصل میگردد میکرو reset میگردد و این بیت set میگردد.البته مطمین نیستم که درست فهمیدم یا نه ؟؟؟؟؟) حال برای بار اول که میکرو روشن میگردد مقدار MCUCSR برابر 0x01 خواهد بود. در ادامه با نوشتن 0 بر روی بیت صفرم این رجیستر مقدار ان را به 0x00 تغییر دادم.الان اگر تغذیه میکرو قطع گردد و دوباره وصل گردد یعنی اینکه میکرو یک بار خاموش شده است پس در خانه صفرم حافظه EEPROM یک شمارنده ای را یک واحد افزایش میدهم.

1-الان مشکل من اینجاست که وقتی برنامه را با اتمل استودیو debug میکنم مقدار اولیه رجیستر MCUCSR برابر 0x01 است و مشکلی نیست. اما هنگام شبیه سازی با proteus مقدار اولیه رجیستر MCUCSR برابر 0x02 است. که نمیدانم علت کجاست؟

2- نکته دیگه این که در حافظه EEPROM اگر چیزی داخلش نوشته نشود مقداری برابر 0xFF خواهد داشت اما در اتمل استودیو خانه 0x00 حافظه EEPROM مقدار 0x00 دارد.ولی در proteus مقدار 0xFF دارد؟؟؟

در ادامه عکس های مربوط به محیط debug اتمل استودیو و proteus و اون قسمت از دیتاشیت که مربوط به رجیستر MCUCSR است را قرار داده ام.








اگر برای بررسی احتیاج به کد برنامه داشتید بگید تا اون رو هم قرار بدم.

ممنون از همه دوستانی که راهنمایی میکنند.