(۲۱-شهریور-۱۳۹۳, ۲۳:۰۳:۱۲)parsegade نوشته است: [ -> ]مشکل مربوط به کپچر3 و pwm2 حل شد.مشکل از برنامه بسکام بود که با نصب ورژن بالاتر حل شد.
سلام به شما،
من هم یک میکروی ATmega1284P (که به صورت pin-for-pin جایگزین ATmega32 می شود) از نوع DIP-40 Pin تهیه کردم و با ورژن 2.0.7.6 بسکام، کدها رو hex کرده و با نرم افزار PROGISP 1.7.2 روی میکرو بارگزاری کردم. اما مشکل اینجاست که اگر چه در ظاهر برنامه روی فلش میکرو ریخته می شود، اما برنامه کار نمی کند! همین برنامه عینا روی ATmega32 به خوبی کار می کند، (در اینجا فقط دستور Regfile$ را تغییر دادم و فیوزبیتها را هم طبق تصویر تنظیم کردم)
ضمنا در مدار از کریستال خارجی 16MHz و ولتاژ 5V برای میکرو استفاده می کنم.خواستم بپرسم شما بدون مشکل این میکرو را پروگرام می کنید؟ برای برنامه ریزی این میکرو، تکنیک خاصی را رعایت می کنید؟
برای کریستال خارجی همه ی بیت های CKSEL0~3 باید 1 باشن.
سپاس از پاسخ شما؛
البته در مورد میکروهائی مثل ATmega32 و یا ATmega16 این گفته شما کاملا درست است اما در مورد ATmega1284P طبق دیتاشیت آن (تصویر زیر)، یک تفاوت کوچک در فیوز بیت CKSEL وجود دارد و آن اینکه برای انتخاب کریستال خارجی در مود Full Swing، فیوزبیت CKSEL3 باید پروگرام (صفر) شود:
[align=center]
اما نکته جالب تری که امروز پیدا کردم اینکه اگر برنامه کمتر از 32Kb فضای فلاش را اشغال کند، برنامه روی میکرو به خوبی کار می کند اما اگر حجم آن بیشتر شد، میکرو به کلی از کار می افتد(میکروی ATmega1284P حدود 128Kb حافظه فلاش قابل برنامه ریزی دارد). خودم فعلا یکی از 3 اتفاق زیر را حدس می زنم:
1_ نسخه کرک شده برنامه بسکام دارای محدودیت در کمپایل کدنویسیهای بزرگتر از 32 کیلوبیت (هگز) است.
2_ برنامه Progisp 1.7.2 دارای محدودیت در انتقال کدهای بزرگ است.
3_ اینکه برادران چینی یا ایرانی، گنجشک را رنگ کرده و به جای قناری به ما فروخته باشند و شاید میکروئی که خریده ام (از فروشگاه چهره الکترونیک خیابان جمهوری)، در واقع تقلبی است و همان ATmega32 است!
البته مورد سوم فعلا به نظرم بعید است چون فیوزبیتهای این دو میکرو فرق می کند و زمانی هم که منبع کلاک را روی اسیلاتور داخلی (8MHz) تنظیم می کنم، با پروگرام کردن فیوزبیت CKDIV8، فرکانس به خوبی تقسیم به 8 می شود. خاصیتی که در ATmega32 وجود ندارد.
به جز این؛ خواندن chip signature میکرو، مقدار "0x1e 0x97 0x05" را برمی گرداند که برای ATmega1284P درست است.
صفحاتی که از دیتاشیت گذاشتید برای کریستال اسیلاتور هست ( یعنی مولد پالس ).
شما از کریستال اسیلاتور استفاده می کنید یا کریستال؟
با توجه به مواردی که اشاره کردید، ظاهرا بسکام رو کرک نکردید ...
نسخه ی رایگانشون تا یه حجم محدود رو کامپایل می کنه .
موفق باشید.
سپاس ویژه از بذل توجه جناب sharin گرامی؛ خوشبختانه امروز قضیه حل شد!
متوجه شدم که ریشه مشکل ذکر شده (عدم پروگرام درست کدهای با حجم بیشتر از 32Kb روی میکروی ATmega1284P )، از وجود یک باگ در نرم افزار چینی PROGISP نسخه 1.7.2 بود و امروز موفق شدم برنامه با حجم بالا را توسط منوی Program نسخه کرک شده کمپایلر BascomAVR و از طریق همان دستگاه پروگرامر USPASP (با میان افزار آپدیت شده)، روی حافظه فلاش میکرو بارگذاری کنم که به خوبی هم کار می کند.