به نام خدا : آموزش جامع میکروکنترلر AVR جلسه 10 : در این جلسه میخوام در مورد فیوز بیت های میکرو کنترلر AVR کمی توضیح بدم ؛ این مطلب تقریبا کامل هستش(برای تازه کار ها) و انشاالله کم کم کاملش میکنم و نکات جزئی تر رو هم قرار میدم.(اینم از جلسه 10 ام از سلسله مطالب آموزش جامع avr )
آموزش جامع میکروکنترلر AVR جلسه۱۰
اگه در کدویژن روی دکمه ی زیر ( Chip Programmer ) کلیک کنید.
صفحه ی زیر باز میشه که در این مطلب میخوام تمام موارد شکل زیر رو توضیح بدم.
در زیر میخوام به ترتیب شماره ای که در عکس بالا گزاشتم….تمام مواردش رو توضیح بدم.
(توضیح اون ۱۶ تا مورد که تو عکس بالا داخل اون مستطیل آبی میبینید)
توجه : فیوزبیت ها با ۱ غیر فعال و با ۰ فعال میشوند.
۱) فیوز بیت های CKDEL2 ، CKDEL1 ، CKDEL0
عمل کرد : با این ۴ تا فیوز بیت ما فرکانس کاری میکرو رو تعیین میکنیم…..که هر چی عدد بزرگتری رو انتخاب کنید ….پروژتون سریع تر عمل میکنه.
توجه۱ :
- فرکانس پایین : فرکانس کمتر از ۳ مگاهرتز
- فرکانس متوسط : بین ۳ الی ۸ مگاهرتز
- فرکانس بالا : و ۸ الی ۱۶ (ویا ۲۰ )
توجه ۲ : مقدار فرکانس پیش فرض ۱Mhz میباشد.(در حالتی که فیوز بیت ها رو تغییر ندید ، مقدار فرکانس پیش فرض ۱Mhz هستش)
به نظر من : بهتره که رو ۸Mhz تنظیم کنید.
منبع فرکانس و اندازش | CKDEL3..0 |
۱Mhz – داخلی | ۰۰۰۱ |
۲Mhz – داخلی | ۰۰۱۰ |
۴Mhz – داخلی | ۰۰۱۱ |
۸Mhz – داخلی | ۰۱۰۰ |
۲) فیوز بیت های STU0 , STU1
عملکرد : زمان شروع به کار میکروکنترلر بعد از اتصال به منبع تغزیه.تو حالت پیشفرض SUT0 فعال و STU1 غیر فعال هستش.
به نظر من : بهتره که تو حالت عادی دست بهش نزنید و بزارید رو حالت پیش فرض بمونه
Delay | SUT1..0 | CKSEL0 |
۴٫۱ms | ۰۰ | ۰ |
۶۵ms | ۰۱ | ۰ |
– | ۱۰ | ۰ |
۴٫۱ms | ۱۱ | ۰ |
۶۵ms | ۰۰ | ۱ |
– | ۰۱ | ۱ |
۴٫۱ms | ۱۰ | ۱ |
۶۵ms | ۱۱ | ۱ |
۳) فیوز بیت BDEN و BODLEVEL
عملکرد : با فعال کردن و غیر فعال کردن این دو فیوز بیت تعیین میکنیم که اگه ولتاژ تغزیه میکرو از چه حدی پایین تر اومد اون وقت میکرو ریست بشه.
به طور پیش فرض فیوز بیت BDEN فعال و BODLEVEL غیر فعال هستش.
عملکرد | BODLEVEL | BODEN |
اگه VCC کمتر از ۴v بشه ، میکرو ریست میشه | ۰ | ۰ |
غیر فعال | ۱ | ۱ |
اگه VCC کمتر از ۲٫۷v بشه ، میکرو ریست میشه | ۱ | ۰ |
۴) فیوز بیت BOOTRST
این فیوز بیت برا انتخاب بردار RESET هستش.تو حالت عادی اگه میکروکنترلر AVR ریست بشه بردار RESET از ۰X0000 شروع میشه (زمانی که این فیوز بیت غیر فعال هستش) ولی اگه این فیوز بیت رو فعال کنیم بردار RESET از جایی شروع میشه که توسط ۲ فیوز بیت BOOTSZ1 و BOOTSZ0 تعیین کردیم.(یعنی اگه زمانی میکرو ریست شد ؛ بردار ریست از ۰X0000 دیگه شروع نمیشه و مثلا از ۰X00FF شروع میشه.)>>>>اگه نفهمیدید بگید تا بیشتر توضیح بدم.
۵) فیوز بیت BOOTSZ1 و BOOTSZ0
توجه : تو ( بعضی از ) میکروکنترلر ها حافظه فلش به دو قسمت کاربردی(جایی که اطلاعات ما موقع پروگرام کردن اطلاعاتمون درش قرار میگیره) و BOOT تقسیم میشود.
توضیح : این فیوز بیت میزان حافظه اختصاص داده شده به BOOT رو تعیین میکنند.
Boot Loader چیست
- در بعضی میکرو کنترلر ها قابلیت پروگرام حافظه فلش توسط هسته خود میکرو وجود دارد.
- این قابلیت برای تولید کنندگانی که Firmware تولیدات خود را Update می کنند بسیار کار آمد است.
- برای اطلاعات بیشتر جدول Boot Size Configuration را در دیتاشیت چیپ مورد نظر مطالعه کنید.
(تو حالت عادی هر دو فیوز بیت فعال هستند…یعنی هر دو صفر هستن)
(×_×) اینم از جدول مقدار دهی این دو فیوز بیت.
۶) فیوز بیت EESAVE
وقتی میکرو رو اطلاعاتش رو پاک میکنی هم اطلاعات توی FLASH پاک میشه و هم اطلاعات روی EEPROM
حالا اگه بخوایم کاری کنیم که موقه پاک کردن میکرو کنترلر حافظه EEPROM اطلاعاتش پاک نشه باید این فیوز بیت رو فعال کنید
(تو حالت عادی این فیوز بیت غیر فعال هستش)
۷) فیوز بیت CKOPT
با فعال شدن این فیوزبیت مقدار توان مصرفی افزایش یافته ولی در عوض سطح نوسان توسط آمپلی فایر افزایش می یابد و باعث بهبود عملکرد در محیط نویزی خواهد شد.(در حالت پیش فرض این فیوز بیت غیر فعال هستش)
۸) فیوز بیت JTAGEN
این فیوز بیت به طور پیش فرض فعال هستش و پایه های PC2 تا PC5 غیر فعال هستند (MEGA16) و نمیتونید ازشون به عنوان ورودی/خروجی (I/O) استفاده کنید.
این فیوز بیت برا پروگرام کردن میکرو در حالت JTAG هستن.
لذا اگه میخواین از PORTC در پروژتون استفاده کنید ، حتما این فیوز بیت رو غیر فعال کنید.
۹) فیوز بیت OCDEN
لپ کلوم : این فیوز بیت برا پیدا کردن عین برنامه به صورت آنلاین هستش.
اگه JTAGEN فعال باشه برنامه میکرو هم قفل نشده باشه ، با فعال کردن این فیوز بیت میشه پروژه مون رو به صورت آنلاین از طریق نرم افزار AVR STDIO مشاهده کرد.
در شکل زیر قسمت فیوز بیت ها (مستطیل آبی رنگ) رو توضیح دادم و بقیه قسمت هاش هم بمونه برا بعد (الان حسش نیست که بگم. ×_×)
مهمان
خدا قوت
مهمان
سلام،من اتمگا ۱۶ دارم که jtag آن رو غیر فعال کردم اما از موقع غیر فعال شدن آن دیگه پروگرام نمیشه میخواستم بدونم چطور میشه jtag رو فعال کنم؟از همون طریقی که غیر فعالش کردم خواستم فعالش کنم اما پروگرامر نسبت به میکرو ارور میده
مهمان
سلام اقای مهندس وقت بخیر.ممنون بابت اموزش هاتون . اقای مهندس من یه برنامه ی ساده نوشتم روی فرکانس ۸مگ خارجی وقتی ای سی mega8l-puرو باهاش پروگرم میکنم دقیق جواب میده ولی ای سی mega8a-u با تاخیر ۵ثانیه ای تمام برنامه رو اجرا میکنه؟
مهمان
سلام
فیوز بیت BODLEVEL در ATMEGA328 سه فیوز بیت
BODLEVEL1
BODLEVEL2
BODLEVEL3
هستش.میشه بگید تفاوتش با بقیه ی میکرو ها چیه؟
مهمان
سلام
ببخشید میشه تو یجا لینک تمام این اموزشارو بزارید
من پیدا نکردم .
ممنون.
نویسنده این مطلب
سلام / قسمت مطالب مرتبط رو دارم کدنویسی میکنم / ولی خب تا اون موقع شما میتونید از منو سایت، قسمت avr و آموزش رفته و مطالب مرتبط با این مطلب رو پیدا کنید.
مهمان
تو اتمل چطور باید فیوزبیت ها رو تنظیم کرد؟
مهمان
سلام من یک برنامه با بسکام نوشتم یک شرطی گذاشتم اگر اون شرط برقرار شد یک رله یا ledفعال بشه اما در عمل کار نمیکنه ودر پروتویوس به صورت چشمک زن عمل میکند.چه باید بکنم
مهمان
سلام
خطای زیر بابت چیست و چگونه رفع می شود؟
stk500 error entering programming mode
نویسنده این مطلب
سلام-نمیدونم والا – همین متنو عینا بسرچید ببینید چه نتایجی بالا میاد – اونا رو بررسی کنید.
مهمان
سلام
میخواستم بدونم بعد از این که یه برنامه رو generate میکنیم چطور میشه تنظیمات میکرو رو تغیر بدیم
نویسنده این مطلب
سلام
از منو Project گزینه آخرو انتخاب کن.
مهمان
سلام.
من یک میکرو دارم که خیلی وقته پروگرامش میکنم نزدیک ۶ ماه.
الان کدویژن ارور زیر رو میده
http://p30up.ir/uploads/f748942417.png
صفحه پرو گرامرم این شکلیه
http://p30up.ir/uploads/f698438247.png
کدیژنم هم سالم سالم است.
نسخه۳٫۱۲
نویسنده این مطلب
سلام-نمیدونم والا
مهمان
اگه میشه یه توضیحی هم راجب قفل کردن میکرو بدید
بعد میخواستم بدونم اون عکسیو که گزاشتید از صفحه فیوز بیتها، فرکانسش روی ۸ مگه؟
مهمان
سلام
ممنون از سایت خوبتون
اگه تو برنامم از حافظهEEPROMاستفاده کرده باشم، تو تنظیم فیوز بیت ها باید تغییری بدم؟
نویسنده این مطلب
سلام – الزاما نه – ولی بهتره یه سری تنظیماتی انجام بدی – که من دقیقا اطلاع ندارم – زیاد استفاده نکردم – تو نت بزن – یه مطلب با عنوان avr نویز پذیر نیست – تو اون توضیح داده که کدوم فیوز بیتا رو باید تغییر بدی برا بحث پایداری بیشتر حافظه ایپرام میکرو
مهمان
دم شما گرم
مهمان
سلام خدمت شما / ممنون از اموزش خوبتون / به اشتباه و برحسب عادت فیوز بیت های کلاک atmega 2560 را مثل بقیه avr ها برای ۸ مگاهرتز داخلی تنظیم کنم ولی ترتیب مثل بقیه avr ها نبود و به مد Ext. Low-Freq. Crystal رفته / الان با اتصال یک کریستال RTC با خازن های ۲۲ پیکو فاراد به پایه های TOSC1 و TOSC2 هنوز میکرو را نمیشناسه . در داخل دیتاشیت یه سری روابط برای بدست اوردن این خازن بود / ازش چیزی سردر نیاوردم . ولی بیشتر جاها دیدم برای این مد از ۱۲٫۵ پیکوفاراد استفاده میکنند ، البته این مقدار را تست نکردم . راهکاری برای این مشکل وجود دارد ؟؟ با تشکر از شما
نویسنده این مطلب
سلام
پروگرامر هاتل یه پایه به نام کلاک داره – به پایه xtal1 میکرو وصل کنید و میکرو رو با Spi پروگرام کنید و فیوز بیت رو تغییر بدید.
مهمان
سلام ببخشید اگر بخوام میکرو رو در هشت مگا هرتز تنظیم کنم باید کدوم یک از فیوز بیت هایckdelرو فعال کنم؟
نویسنده این مطلب
سلام
https://dmf313.ir/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AC%D8%A7%D9%85%D8%B9-avr-%D8%AC%D9%84%D8%B3%D9%87-%DB%B1%DB%B4-system-clock-and-clock-options/
مهمان
یعنی اینکه پورت a مثلا خروجی میکردم یک میزاشتم ولی در عمل صفر بود
نه دیگه نمیشه
امدم با یه میکرو دگ فرکانس 1مگ درس کردم دادم به xtal1
چند بار پروگرام شد دگ بازم نشد
راستی چنتا سوال؟
1.اینکه مثلا من میخوام از 1مگ داخلی فرکانسو بزارم رو 16 کریس خارجی.باید یه کریس بزارم بعد فیوزبیت کلاکو بزارم رو 1111 و ckopt هم فعال کنم؟
2.اگه بخوام دوباره برگردونم 1 باید اول کریسو بزارم بعد بیام دوباره 0001 کنم و read کنم فیوزارو ؟بعدش کریس بردارم و erase , program کنم؟
بابا من نمیخوام یه میکرو دگ فنا بشه خیلی خطرناکه این فیوزا
پول ندارم به خدا:((
نویسنده این مطلب
1) میکرو رو میزارم تو پروگرامر و فیوز بیت ها رو تنظیم میکنم، و بعد پروگرام میکنم فیوز بیت ها و برنامه رو و بعد میزارم تو برد برد و کریستال رو هم وصل میکنم بهش–من با پروگرامر هاتل کار میکنم
2) این مورد رو نمیدونم، چون این کار رو تا حالا انجام ندادم حقیقتا و اصلا فکرش رو هم نکردم، چون ملت دنبال افزایبش فرکانس هستن و نه کاهش، ولی بعضی وقتا شاید نیاز بشه و این بعضی وقتا تا حالا برا من رخ نداده
خب اصلا به فیوز بیت ها دست نزن و خودت رو راحت کن، و فقط jtag رو تغییر بده و فرکانس رو بزار رو 8 میگ داخلی — من خودم همیشه از ترس سوتی دادن همین کار رو میکنم، مگه این که مجبور بشم بزارم رو 16 خارجی
مهمان
سلام مهندس تنظیمات فیوزبیت برا کریستال 8 مگ چطوریه ؟ ممنون
نویسنده این مطلب
سلام داش محمد
این مطلب و مطلب زیر رو بخونی متوجه میشی — اگه متوجه نشدی بگو تا بهت بگم باید چیکار کنی
آموزش جامع AVR جلسه ۱۴ System Clock and Clock Options
مهمان
سلام
آقا منم همین مشکل نشناختن میکرو بهم دس داده
ارور میده
chip enable progrram error
فقط یه jtagen رو عوض کردم برا پورت سی
بعدش دیگه پورت a پروگرام نشد بعد اونم دیگه کلا میکرو نمیشناسه
در ضمن به روش ispهم پروگرام میکردم که اینجوری افتادم تو هچل
چیکار کنم؟
نویسنده این مطلب
سلام
اگه فقط جیتگ رو تغییر دادین مشکلی نباید ایجاد بشه
راستی منظورتون از این که دیگه پورت a پروگرام نشد چیه؟؟؟
الان به روش معمولی هم پروگرام میکنی پروگرام نمشه؟(همین که میکرو رو میزاری داخل سوکت و…)
مهمان
سلام :
من فیوز بیت هم رو اشتباه گذاشتم ، یکدفعه دیگه پروگرمر نشناختش !!!!!!!
چند جا مطلب خوندم که با مدار دکتر فیوز بیت میشه احیا کردشون ، راه دیگه ای نداره ؟؟؟؟؟؟؟؟؟
نویسنده این مطلب
سلام
والا دقیقا نمیدونم(چون زیاد کریستال خارجی استفاده نمیکنم و به طبع این مشکلات برام ایجاد نمیشه) تو eca مطرح کنی زود تر به جواب میرسی
ولی معمولا من که با isp پروگرام میکنم و اشتب فیوز بیت ها رو پروگرام میکنم و دیگه شناسایی نمیشه…..با zif سوکت پروگرام میکنم شناسایی میشه
و به نظرم ببین این فیوز بیتی که دادی مربوط به کدوم منبع کلاکه…..اون منبع کلاک رو بده به میکرو و بعد با isp یا zif سوکت مدار رو پروگرام کن……..چیزی که به ذهنم میرسه همینه—حالا بازم سوال کن
مهمان
با سلام
همین مشکل برای بنده هم پیش اومده بود که با وصل نمودن یک کریستال خارجی به پروگرامر تونستم میکرکتنرلر رو شناسایی کنم.
نویسنده این مطلب
سلام
باید منبع صحیح اعمال کرد وگرنه کار نمیکنه.
مهمان
سلام.

من هم الان ساعت ۴ رو۵دقیقه میکرو رو پرو گرام کردم.
هواسم نبود فیوزبیت های کلاک رفت رو۰٫۹MHZداخلی !!!!!!! !!!!!!!
و دیگر پرو گرامر او را نشناخت
میشه هر راه حلی که به ذهنتور رسید بگید در انجا
نویسنده این مطلب
سلام – اطلاع ندارم دقیقا.
مهمان
با عرض سلام و خسته نباشید خدمت شما
ممنون از وبسایت و مطالب فوق العادتون
یه سوال داشتم
من برنامه ای که برای وقفه خارجی نوشتم رو تست کردم ولی به درستی عمل نمیکنه
ممکنه مشکل از فیوزبیتها باشه؟؟
برنامه جوری نوشته شده که با لبه بالا رونده یکبار led را روشن و پس از 1 ثانیه خاموش کنه ولی در عمل led دو و یا سه بار روشن خاموش میکنه
نویسنده این مطلب
سلام
ربطی به فیوز بیت نداره
مهمان
سلام فقط بقول خودتون میتونم بگم دمت چیییییییییییییزززززززززز!!!!!!!!!!!!
مهمان
سلام لطفا در مورد محاسبه فرکانس و زمان هر پالس این دستور راهنمایی بفرمایید ممنون:
interrupt [TIM1_OVF] void timer1_ovf_isr(void){ // Reinitialize Timer 1 value
TCCR1B=0; TCNT1H=243; TCNT1L=203; TCCR1B=0x04; d=!d; PORTD.0=d;
نویسنده این مطلب
سلام
تو مطلب زیر یه عکس گزاشتم نحوه محاسبه رو توضیح دادم
https://dmf313.ir/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AC%D8%A7%D9%85%D8%B9-%D9%85%DB%8C%DA%A9%D8%B1%D9%88%DA%A9%D9%86%D8%AA%D8%B1%D9%84%D8%B1-avr-%D8%AC%D9%84%D8%B3%D9%879/
مهمان
سلام واقعا ممنون از توضیحات خوب و کاملتون ولی یه درخواست لطفا راجع به مینیمم سیستم میکرو و حداقل اتصالات و مدارات لازم برای راه اندازیش هم مطلب بذارید
مهمان
با سلام مطالب خیلی عالی و خوبه
مهمان
حالا اگه روزی اسپانسری جور شد حتما به یادم هستی (اخه کارم اینه اسپانسر جور کنم البته تا حالا برا سایتی اینکارو نکردم
حالا خدا داند اگه جور شد روزی اولین گزینه معرفی خودتی البته بعید می دونم تا اون موقع به من نیاز داشته باشی باشی با این سایتی که من می بینم زودی پیشرفت می کنی خدا تومن ارزشش می شه)
مهمان
خدا رو شکر احتمال پایینه کاری از دستمون بر می یاد بگو انجام بدیم
نویسنده این مطلب
دمت گرم بامرام….
خدا بزرگه….یکاریش میکنم…..
مهمان
نبندیش یهو
نویسنده این مطلب
اگه پول رو ندم…میبندنش…
)
به احتمال ۱۰۰ درصد سایت بسته میشه با این وضعیت
.
.
.
.
.
.
.
(البته ۱۰۰ از ۱۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰ >>>>
مهمان
خیلی سایت خوبی داری دمت گرمه مینکه جواب می دی عالیش کرده تا الان به خیلیا سایتتو معرفی کردم هر کی ازم سوال می پرسه می فرستم اینجا
نویسنده این مطلب
دمت چیز….


اوضاع مالی خراب داش…
سایت هزینه داره….
یه ماه دیگه باید ۳۰۰ بریزم به حساب شرکت
نویسنده این مطلب
یعنی کن خودت تست کنی در عمل……مثلا یه بار تیک جیتگ رو بزار و یه بار نزار و در عمل ببین….ok???
بدون تیک یعنی۰٫٫٫اگه اشتباه نکنم
نویسنده این مطلب
سلام
تیک بزنی یعنی یکشون کردی….
یه چیز بگم همیشه یادت باشه و …
jtag همیشه فعاله…یعنی ۰ هستش…..لذا تو هر نرم افزاری حالت پیشفرض این فیوز بیت فعاله یعنی ۰ هستش…….حالا اگه تیک داش….یعنی با تیک گزاشتن ۰ میکنیم و اگه نداشت یعنی با تیک زدن ۱ میکنیم
گرفتی منظورمو؟
مهمان
سلام دوباره
تو پروژه راه اندازی بلوتوثتون من فقط از داخل کد ویزارد فرکانسو تغییر می دادم اون نوشته تستی که گزاشته بودید که باید تو مدت یک ثانیه خاموش می شد اگر فرکانس کاری 8مگاهرتز بود با 8مگاهرتز کدویزارد 8ثانیه طول می کشید وبا 1مگاهرتزش 1ثانیه که تو جفت حالت کلمات اشتباه نشون می داد حالا بازم با تغییر فرکانس از طریق فیوزبیتا ادامه می دم بینم چی می شه
مهمان
سلام من کمی گیج شدم
تغیرراتی که به CKDEL می دیم تا فرکانس کاریو تغییر بدیم با تغییر کلاکی که تو کد ویزارد بعد انتخاب نوع می کرومون می دیم چیه؟؟؟؟
نویسنده این مطلب
سلام
والا چرا دروغ بگم …. نمیدونم…چون من فرکانس رو از کدویزارد تعیین نمیکنم.. و از طریق فیوز بیت ها تغییرش میدم…..حالا خودت باس عملی تست کنی ببینی از طریق کدویزارد تغییر بدی فرکاس رو در عمل در پروژه تغییری اعمال میشه یا نه……..
مهمان
عالی
خیلی ساده توضیح دادی ولی کامل
مهمان
اگه میشه در مورد بوت لودر و چگونگی پروگرم میکرو توسط آن توضیح بیشتری بدید ممنون میشم ضمنا مطالب شما خیلی عالیه مرسی خیلی زیاد
نویسنده این مطلب
آره خودم هم تو فکرش بودم که یه مطلب در موردش بنویسم…..در اسرع وقت مینویسمش….
فعلا درگیر پروژه های دیگه ای هستم
مهمان
نویسنده این مطلب
خواهش