ايران ويج

نسخه‌ی کامل: تنظیم دقیق کلاک AVR
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام. من نمیتونم چه در حالتی که از کریستال داخلی میکرو استفاده میکنم و چه در حالت خارجی، کلاک صحیح رو تنظیم کنم. وقتی فیوزبیت‌های CKSEL در حالت پیش فرض هستند (یعنی CKSEL0=1 و بقیه 0) کریستال داخلی میکرو درست جواب نمیده وقتی هم فیوز بیت‌ها رو 1 میکنم با اتصال یه کریستال خارجی مثلا 10 مگاهرتز بازم جواب نمیگیرم.

فرضا مثال زیر در بیسیک برای روشن و خاموش کردن یه led:
کد:
$regfile = "M16def.dat"
$crystal = 10000000
Config Porta = Output
Do
Set Porta.0
Wait 1
Reset Porta.0
Wait 1
Loop
End
در هر دوحالت استفاده از کریستال داخلی و خارجی دستور wait 1 که در حقیقت معادل یک ثانیه هست زمان دیگری رو برمیگردونه یا دستور waitms... جالب اینکه وقتی از کریستال خارجی استفاده می‌کنم وضعیت میکرو نامتعادله و تقریبا راندوم کار میکنه...

من در این زمینه تازه واردم اشکال از کجا میتونه باشه؟
سلام دوست عزیز
مهندس اگه از بسکام برای ریختن برنامت توی میکرو استفاده میکنی بیخیالش شو به شما توصیه میکنم از AVR Studio برای رریختن برنامت استفاده کنی و همچنین برای تنظیم کلاک میکرو داخل خود این نرم افزار با فعال کردن CKopt و انتخاب مقدار کریستال به CKsel با توجه به کریستات انتخاب کنی
External/resonaste 8MHz
من فایل hex کامپایل شده توسط بیسکام رو با progisp میریزم چون پروگرامرم Usbasp هست و بیسکام ساپورتش نمیکنه. یه مشکل دیگه هم دارم اونم وقتی با سی مینویسم فرضا همین چشمک زن رو، led خیلی کم‌نور روشن و خاموش میشه ولی با بیسکام خیلی پر نور تر روشن و خاموش میشه. از اتصالات صحیح میکرو و led هم مطمئنم...
دوست عزیز wait بستگی به کیریستال داره و متغیره بهترین راه اینکه از تایمر استفاده کنید بی دقدقه و دقیق کیریستال داخلی روی 8 و یه کیزستال ساعت به پایه های مربوط وصل کنید
(۳۰-شهریور-۱۳۸۸, ۱۴:۳۶:۳۱)maxn@morteza نوشته است: [ -> ]دوست عزیز wait بستگی به کیریستال داره و متغیره بهترین راه اینکه از تایمر استفاده کنید بی دقدقه و دقیق کیریستال داخلی روی 8 و یه کیزستال ساعت به پایه های مربوط وصل کنید
در Atmega16 تایمر اوسیلاتور به پین‌های 7 و 6 پورت C وصل می‌شن. اما من این پورت رو به عنوان I/O نیاز دارم. همانطور که میدونید فقط میشه این پین‌ها یه نقش داشته باشند! آیا راه حل دیگری نداره؟

می‌شه راهنمایی کنید درصورتیکه تایمر اوسیلاتور رو ست کردم تنظیم فیوز بیت‌ها چطور خواهد بود؟
تنظیم فیوز بیت نمی خواد کافیه از نظر نرم افزایش راهندازی کنید
خوب میتونید از ای سی موتلی پلیکسر استفاده کنید یه عدد
مهندس الان wait 10 تو برنامه شما چقدر طول مي كشه !

مي توني با كورنومتر اندازه بگيري !

اگه فرضا 5 ثانيه طول مي كشه يعني فركانس ميكرو دو برابر اعمالي هستش !

من تا حالا مشكلي تو اين زمينه نداشتم و فركانس نوسان ساز داخلي اونقدري دقيق بوده كه نيازمو برطرف كنه !
مدار اسیلاتور داخل AVR کرسیتالی نیست و RC هست، و برای 10 مگ هم طرحی نداره.
خطا از نوع تغییر فیوز هاست ، احتمالا فیوز ها رو درست ست نمی کنین و روی 4 فرکانس موجود داخل میکرو جابجا می کنین
مهندس تو بعضي ميكروهاي خاص مثل ATINY 13 فركانس هاي مثل 4.8 و 9.6 داخلي هم دارن !
توو 90% Avr ها بایتی برای تنظیم و کالیبره کردن RC داخلی هست که با تغییرات اون می تونین از 400 کیل.هرتز تا 12 مگاهرتز رو با RC دااخلی بدست بیارین. اما دقت فرکانسهای خارج از رنج اصلا تضمین نشده
(۳۰-شهریور-۱۳۸۸, ۱۳:۴۳:۲۲)web_developer نوشته است: [ -> ]من فایل hex کامپایل شده توسط بیسکام رو با progisp میریزم چون پروگرامرم Usbasp هست و بیسکام ساپورتش نمیکنه. یه مشکل دیگه هم دارم اونم وقتی با سی مینویسم فرضا همین چشمک زن رو، led خیلی کم‌نور روشن و خاموش میشه ولی با بیسکام خیلی پر نور تر روشن و خاموش میشه. از اتصالات صحیح میکرو و led هم مطمئنم...
این که میگی کم نور میشه واسه اینه که پورتتو به عنوان خروجی قرار نمی دی و میکر اونو پول آپ می کنه یعنی با یه مقاومت بالا سری میکنه که در نتیجه نور ال ای دی کم میشه