میکروکنترلر AVR 8 بیتی Atmel با فلش قابل برنامه ریزی درون سیستمی 2/4/8 کیلوبایتی
ویژگی ها
- میکروکنترلر 8 بیتی AVR® با کارایی بالا و کم مصرف
- معماری پیشرفته RISC
- 120 دستورالعمل قدرتمند - بیشترین اجرای چرخه تک ساعت
- 32 8 XNUMX ثبت عمومی کار عمومی
- عملیات کاملاً استاتیک
- برنامه بی ثبات و حافظه های داده
- 2/4/8K بایت حافظه فلش برنامه ای قابل برنامه ریزی در سیستم
- استقامت: 10,000 چرخه نوشتن/پاک کردن
- 128/256/512 بایت EEPROM قابل برنامه ریزی در سیستم
- استقامت: 100,000 چرخه نوشتن/پاک کردن
- 128/256/512 بایت SRAM داخلی
- قفل برنامه نویسی برای برنامه خودکار برنامه نویسی Flash و امنیت داده EEPROM
ویژگی های محیطی
- تایمر / شمارنده 8 بیتی با Prescaler و دو کانال PWM
- تایمر / شمارنده با سرعت بالا 8 بیتی با پیش فروش جداگانه
- 2 خروجی PWM با فرکانس بالا با خروجی جداگانه ثبت ها را مقایسه کنید
- قابل برنامه ریزی تولید کننده زمان مرده
- USI - رابط سریال جهانی با ردیاب شرط شروع
- ADC 10 بیتی
4 کانال تک پایان یافته
2 جفت کانال دیفرانسیل ADC با سود قابل برنامه ریزی (1 برابر ، 20 برابر)
اندازه گیری دما
تایمر دیده بان قابل برنامه ریزی با اوسیلاتور جداگانه روی تراشه
مقایسه کننده آنالوگ بر روی تراشه
ویژگی های ویژه میکروکنترلر
debugWIRE سیستم رفع اشکال روی تراشه
از طریق پورت SPI قابل برنامه ریزی در سیستم است
منابع قطع داخلی و خارجی
حالت کم کار در حالت بی مصرف ، کاهش نویز ADC و کاهش قدرت
مدار تنظیم مجدد روشن شدن نیرو
برنامه ریزی مدار تشخیص قهوه ای
اسیلاتور کالیبره شده داخلی
I / O و بسته ها
شش خط ورودی / خروجی قابل برنامه ریزی
8 پین PDIP ، 8 پین SOIC ، 20 پد QFN / MLF و 8 پین TSSOP (فقط ATtiny45 / V)
جلد عملیاتیtage
- 1.8 - 5.5 ولت برای ATtiny25V / 45V / 85V
- 2.7 - 5.5 ولت برای ATtiny25 / 45/85
سرعت درجه
- ATtiny25V / 45V / 85V: 0 - 4 مگاهرتز در 1.8 - 5.5 ولت ، 0 - 10 مگاهرتز در 2.7 - 5.5 ولت
- ATtiny25 / 45/85: 0 - 10 مگاهرتز در 2.7 - 5.5 ولت ، 0 - 20 مگاهرتز در 4.5 - 5.5 ولت
محدوده دمای صنعتی
مصرف برق کم
حالت فعال:
1 مگاهرتز ، 1.8 ولت: 300 میکرومتر
حالت خاموش کردن:
تنظیمات پین
Pinout ATtiny25 / 45/85
پین توضیحات
VCC: Supply voltage.
GND: زمین.
پورت B (PB5:PB0): پورت B یک پورت ورودی/خروجی دو جهته 6 بیتی با مقاومت های کششی داخلی (انتخاب شده برای هر بیت) است. بافرهای خروجی پورت B دارای ویژگی های درایو متقارن با قابلیت سینک و منبع بالا هستند. به عنوان ورودی، پینهای پورت B که از بیرون به سمت پایین کشیده میشوند، در صورت فعال شدن مقاومتهای کشش، جریان را تامین میکنند. پین های پورت B هنگامی که یک شرط بازنشانی فعال می شود، حتی اگر ساعت در حال اجرا نباشد، سه حالته می شوند.
پورت B همچنین عملکردهای مختلف ویژگی های خاص ATtiny25 / 45/85 را که در لیست ذکر شده است ، ارائه می دهد
در ATtiny25 ، پورت های ورودی / خروجی قابل برنامه ریزی PB3 و PB4 (پایه های 2 و 3) در حالت سازگاری ATtiny15 برای پشتیبانی از سازگاری عقب با ATtiny15 مبادله می شوند.
RESET: ورودی را بازنشانی کنید. یک سطح پایین در این پین برای طولانیتر از حداقل طول پالس، تنظیم مجدد ایجاد میکند، حتی اگر ساعت در حال اجرا نباشد و به شرطی که پین تنظیم مجدد غیرفعال نشده باشد. حداقل طول پالس در داده شده است جدول 21-4 در صفحه 165. پالس های کوتاه تر برای ایجاد تنظیم مجدد تضمین نمی شوند.
از پین تنظیم مجدد می توان به عنوان پین ورودی / خروجی (ضعیف) نیز استفاده کرد.
تمام شدview
ATtiny25 / 45/85 یک میکروکنترلر 8 بیتی کم مصرف CMOS است که بر اساس معماری RISC تقویت شده AVR ساخته شده است. با اجرای دستورالعمل های قدرتمند در یک چرخه ساعت ، ATtiny25 / 45/85 توان تولیدی نزدیک به 1 مگاپیکسل در هر مگاهرتز را می دهد که به طراح سیستم اجازه می دهد تا مصرف برق را در مقابل سرعت پردازش بهینه کند.
نمودار بلوکی
هسته AVR مجموعه ای از دستورالعمل های غنی را با 32 رجیستر کار با هدف عمومی ترکیب می کند. همه 32 رجیستر مستقیماً به واحد منطق حساب (ALU) متصل هستند و به این ترتیب به دو رجیستر مستقل در یک دستورالعمل مجزا که در یک چرخه ساعت قابل دسترسی هستند ، دسترسی دارند. معماری حاصل در حالی که به ده برابر سریعتر از میکروکنترلرهای CISC معمولی دسترسی پیدا می کند ، از کد کارآمدتر است.
ATtiny25 / 45/85 ویژگی های زیر را فراهم می کند: 2/4/8K بایت فلش قابل برنامه ریزی در سیستم ، 128/256/512 بایت EEPROM ، 128/256/256 بایت SRAM ، 6 خط ورودی / خروجی هدف کلی ، 32 عمومی رجیسترهای کار هدف ، یک تایمر / شمارنده 8 بیتی با حالت های مقایسه ، یک تایمر / شمارنده 8 بیتی با سرعت بالا ، رابط سریال جهانی ، وقفه های داخلی و خارجی ، یک ADC 4 کاناله ، 10 بیتی ، یک تایمر دیده بان قابل برنامه ریزی با داخلی اسیلاتور و سه حالت ذخیره انرژی قابل انتخاب نرم افزار. در حالت آماده به کار ، CPU را متوقف می کند در حالی که به سیستم های SRAM ، Timer / Counter ، ADC ، Analog Comparator و Interrupt امکان ادامه کار می دهد. حالت خاموش کردن باعث ذخیره محتوای ثبت شده می شود و همه عملکردهای تراشه را تا وقفه بعدی یا تنظیم مجدد سخت افزار غیرفعال می کند. حالت ADC Noise Reduction ، CPU و همه ماژول های ورودی / خروجی به جز ADC را متوقف می کند تا نویز سوئیچینگ هنگام تبدیل ADC به حداقل برسد.
این دستگاه با استفاده از فناوری حافظه غیر فرار Atmel با تراکم بالا تولید شده است. On-chip ISP Flash این امکان را برای برنامه ریزی مجدد حافظه برنامه در سیستم از طریق یک رابط سریال SPI ، توسط یک برنامه نویس حافظه غیر فرار معمولی یا توسط کد راه اندازی On-chip که روی هسته AVR اجرا می شود ، فراهم می کند.
ATtiny25 / 45/85 AVR با مجموعه کاملی از ابزارهای توسعه برنامه و سیستم از جمله: کامپایلرهای C ، Macro Assemblers ، برنامه اشکال زدایی / شبیه سازها و کیت های ارزیابی پشتیبانی می شود.
درباره منابع
مجموعه کاملی از ابزارهای توسعه ، یادداشت های برنامه و صفحه داده ها برای بارگیری در دسترس است http://www.atmel.com/avr.
کد سابقamples
این اسناد شامل کد ساده سابق استampمواردی که نحوه استفاده از قسمتهای مختلف دستگاه را به طور مختصر نشان می دهد. این کدها به عنوان مثالamples فرض می کند که سرصفحه مخصوص قسمت file قبل از تدوین گنجانده شده است. توجه داشته باشید که همه فروشندگان کامپایلر C تعاریف بیت را در سرصفحه قرار نمی دهند files و دست زدن به وقفه در C به کامپایلر وابسته است. لطفاً برای جزئیات بیشتر ، مستندات کامپایلر C را تأیید کنید.
برای رجیسترهای ورودی و خروجی واقع در نقشه ورودی و خروجی گسترده ، دستورالعمل های "IN" ، "OUT" ، "SBIS" ، "SBIC" ، "CBI" و "SBI" باید با دستورالعمل هایی جایگزین شوند که اجازه دسترسی به I توسعه یافته را داشته باشند / O به طور معمول ، این به معنای "LDS" و "STS" همراه با "SBRS" ، "SBRC" ، "SBR" و "CBR" است. توجه داشته باشید که همه دستگاه های AVR شامل نقشه ورودی / خروجی گسترده نیستند.
حسگر لمسی خازنی
Atmel QTouch Library یک راه حل ساده برای استفاده برای رابط های حساس به لمس در میکروکنترلرهای Atmel AVR ارائه می دهد. کتابخانه QTouch شامل پشتیبانی از روشهای کسب QTouch® و QMatrix® است.
سنجش لمس به راحتی با پیوند دادن کتابخانه QTouch و استفاده از رابط برنامه نویسی برنامه (API) کتابخانه برای تعریف کانالهای لمسی و سنسورها ، به هر برنامه ای اضافه می شود. سپس برنامه برای بازیابی اطلاعات کانال و تعیین وضعیت سنسور لمسی ، با API تماس می گیرد.
کتابخانه QTouch رایگان است و می توان آن را از Atmel بارگیری کرد webسایت. برای اطلاعات بیشتر و جزئیات پیاده سازی ، به راهنمای کاربر کتابخانه QTouch مراجعه کنید - همچنین از Atmel موجود است webسایت
حفظ داده ها
نتایج قابلیت اطمینان قابلیت اطمینان نشان می دهد که میزان شکست احتباس داده پیش بینی شده بسیار کمتر از 1 PPM در طول 20 سال در 85 درجه سانتیگراد یا 100 سال در 25 درجه سانتیگراد است.
هسته پردازنده AVR
مقدمه
در این بخش به طور کلی ساختار اصلی AVR مورد بحث قرار می گیرد. عملکرد اصلی هسته پردازنده اطمینان از اجرای صحیح برنامه است. بنابراین CPU باید بتواند به حافظه ها دسترسی پیدا کند ، محاسبات را انجام دهد ، لوازم جانبی را کنترل کند و وقفه ها را کنترل کند.
معماری تمام شدview
به منظور به حداکثر رساندن عملکرد و موازی سازی ، AVR از معماری هاروارد - با حافظه و اتوبوس جداگانه برای برنامه و داده ها استفاده می کند. دستورالعمل ها در حافظه برنامه با خط لوله یک سطح اجرا می شوند. در حالی که یک دستورالعمل در حال اجرا است ، دستورالعمل بعدی از قبل از حافظه برنامه واکشی می شود. این مفهوم امکان اجرای دستورالعمل ها را در هر چرخه ساعت فراهم می کند. حافظه برنامه حافظه Flash در سیستم مجدداً قابل برنامه ریزی است.
ثبت نام سریع دسترسی File شامل رجیسترهای کار عمومی 32 x 8 بیتی با یک زمان دسترسی به چرخه ساعت. این اجازه می دهد تا یک چرخه واحد منطق حسابی (ALU) عملیات. در یک عملیات ALU معمولی، دو عملوند از Register خارج می شود File، عملیات اجرا می شود و نتیجه مجددا در Register ذخیره می شود File- در یک چرخه ساعت.
شش مورد از 32 ثبات را می توان به عنوان سه نشانگر ثبت آدرس غیر مستقیم 16 بیتی برای آدرس دهی فضای داده استفاده کرد - محاسبات کارآمد آدرس را امکان پذیر می کند. یکی از این نشانگرهای آدرس همچنین می تواند به عنوان یک نشانگر آدرس برای جداول جستجو در حافظه Flash Program استفاده شود. این ثبات های ثبت شده توابع X- ، Y- و Z-16 بیتی هستند که بعداً در این بخش شرح داده می شوند.
ALU از عملیات حساب و منطق بین ثبات ها یا بین یک ثابت و یک ثبات پشتیبانی می کند. عملیات تک ثبتی را می توان در ALU نیز اجرا کرد. پس از یک عملیات حساب ، ثبت وضعیت به روز می شود تا اطلاعات مربوط به نتیجه عملیات را منعکس کند.
جریان برنامه با دستورالعمل های پرش و تماس مشروط و بدون قید و شرط فراهم می شود که می تواند به طور مستقیم کل فضای آدرس را برطرف کند. بیشتر دستورالعمل های AVR دارای یک قالب کلمه 16 بیتی هستند ، اما دستورالعمل های 32 بیتی نیز وجود دارد.
در هنگام قطع تماس و زیرروال ، آدرس بازگشت Program Counter (PC) در Stack ذخیره می شود. پشته به طور م inثر در SRAM داده های عمومی تخصیص داده می شود ، و در نتیجه اندازه پشته فقط توسط اندازه كل SRAM و استفاده از SRAM محدود می شود. همه برنامه های کاربر باید SP را در روال تنظیم مجدد تنظیم کنند (قبل از اینکه زیر روال ها یا وقفه ها اجرا شوند). Stack Pointer (SP) در فضای ورودی / خروجی قابل خواندن و نوشتن است. داده های SRAM به راحتی از طریق پنج حالت آدرس دهی مختلف پشتیبانی شده در معماری AVR قابل دسترسی هستند.
فضاهای حافظه در معماری AVR همه نقشه های حافظه خطی و منظم هستند.
یک ماژول وقفه انعطاف پذیر دارای رجیسترهای کنترل خود در فضای ورودی / خروجی با یک بیت فعال جهانی وقفه در ثبت نام وضعیت است. همه وقفه ها دارای یک بردار جداگانه جداگانه در جدول بردار وقفه هستند. وقفه ها مطابق با موقعیت بردار وقفه اولویت دارند. هرچه آدرس بردار وقفه کمتر باشد ، اولویت بالاتر خواهد بود.
فضای حافظه ورودی/خروجی شامل 64 آدرس برای عملکردهای جانبی CPU به عنوان Control Registers ، SPI و سایر توابع ورودی/خروجی است. به حافظه ورودی/خروجی می توان مستقیماً دسترسی داشت ، یا به عنوان مکان های فضای داده (Data Space) به دنبال مکان های ثبت کننده دسترسی پیدا کرد File، 0x20 - 0x5F.
ALU - واحد منطق حساب
AVR ALU با کارایی بالا در ارتباط مستقیم با همه 32 رجیستر کار با هدف عمومی کار می کند. در یک چرخه ساعت واحد ، عملیات حسابی بین ثبات های هدف کلی یا بین یک ثبات و یک لحظه انجام می شود. عملکردهای ALU به سه دسته اصلی تقسیم می شوند - توابع حسابی ، منطقی و بیت. برخی از پیاده سازی های معماری نیز ضربی قدرتمند را از هر دو ضرب امضا شده / امضا نشده و قالب کسری پشتیبانی می کند. برای توضیحات دقیق به بخش "مجموعه دستورالعمل ها" مراجعه کنید.
ثبت نام وضعیت
وضعیت ثبت شامل اطلاعاتی در مورد نتیجه دستورالعمل ریاضی است که اخیراً اجرا شده است. از این اطلاعات می توان برای تغییر جریان برنامه به منظور انجام عملیات شرطی استفاده کرد. توجه داشته باشید که ثبت وضعیت بعد از تمام عملیات ALU به روز می شود ، همانطور که در مرجع تنظیم دستورالعمل مشخص شده است. این امر در بسیاری از موارد نیاز به استفاده از دستورالعمل های مقایسه اختصاصی را از بین می برد و در نتیجه کد سریعتر و فشرده تری ایجاد می شود.
هنگام ورود به روال وقفه ، ثبت وضعیت به طور خودکار ذخیره نمی شود و هنگام بازگشت از وقفه ، بازیابی نمی شود. این باید توسط نرم افزار اداره شود.
SREG - ثبت نام وضعیت AVR
ثبت وضعیت AVR - SREG - به این صورت تعریف می شود:
بیت | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3F | I | T | H | S | V | N | Z | C | SREG |
بخوان / بنویس | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
ارزش اولیه | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
بیت 7 - I: فعال کردن وقفه جهانی
برای فعال شدن وقفه ها باید بیت Global Interrupt Enable تنظیم شود. سپس کنترل فعال کردن وقفه منفرد در رجیسترهای کنترل جداگانه انجام می شود. در صورت پاک شدن ثبت جهانی فعال کردن وقفه جهانی ، هیچ یک از وقفه ها مستقل از تنظیمات فعال وقفه قطع نیستند. I-bit پس از وقفه توسط سخت افزار پاک می شود و توسط دستور RETI تنظیم می شود تا وقفه های بعدی را فعال کند. همانطور که در مرجع مجموعه دستورالعمل شرح داده شده است ، I-bit را می توان با استفاده از دستورالعمل های SEI و CLI تنظیم و پاک کرد.
بیت 6 - T: ذخیره کپی بیت
دستورالعمل های Bit Copy BLD (Bit LoaD) و BST (Bit STore) از بیت T به عنوان منبع یا مقصد برای بیت مورد استفاده استفاده می کنند. کمی از ثبت نام در Register File می تواند با دستور BST در T کپی شود ، و یک بیت در T را می توان در یک بیت در یک ثبت در Register کپی کرد File طبق دستور BLD
بیت 5 - H: پرچم نیمه حمل
Half Carry Flag H نشانگر Half Carry در برخی از عملیات حسابی است. Half Carry در حساب BCD مفید است. برای اطلاعات دقیق به "توضیحات مجموعه دستورالعمل ها" مراجعه کنید.
بیت 4 – S: بیت علامت، S = N ⊕ V
S-bit همیشه انحصاری است یا بین پرچم منفی N و پرچم پرریز دو متغیر دو است. برای اطلاعات دقیق به "توضیحات مجموعه دستورالعمل" مراجعه کنید.
بیت 3 - V: پرچم پر شدن مکمل دو
The Two's Complement Overflow Flag V از محاسبات مکمل دو پشتیبانی می کند. برای اطلاعات دقیق به "توضیحات مجموعه دستورالعمل ها" مراجعه کنید.
بیت 2 - N: پرچم منفی
علامت منفی N نشان دهنده یک نتیجه منفی در یک کار محاسباتی یا منطقی است. برای اطلاعات دقیق به "شرح مجموعه دستورالعمل ها" مراجعه کنید.
بیت 1 - Z: پرچم صفر
Zero Flag Z یک نتیجه صفر را در یک کار محاسباتی یا منطقی نشان می دهد. برای اطلاعات دقیق به "توضیحات مجموعه دستورالعمل ها" مراجعه کنید.
بیت 0 - C: حمل پرچم
Carry Flag C نشان دهنده یک حمل در یک کار محاسباتی یا منطقی است. برای اطلاعات دقیق به "توضیحات مجموعه دستورالعمل ها" مراجعه کنید.
ثبت اهداف عمومی File
ثبت نام File برای مجموعه دستورالعمل های AVR Enhanced RISC بهینه شده است. به منظور دستیابی به عملکرد و انعطاف پذیری مورد نیاز ، طرح های ورودی/خروجی زیر توسط Register پشتیبانی می شود. File:
یک عملوند خروجی 8 بیتی و یک ورودی نتیجه 8 بیتی
دو عملوند خروجی 8 بیتی و یک ورودی نتیجه 8 بیتی
دو عملوند خروجی 8 بیتی و یک ورودی نتیجه 16 بیتی
یک عملوند خروجی 16 بیتی و یک ورودی نتیجه 16 بیتی
شکل 4-2 ساختار 32 رجیستر کار با هدف عمومی در CPU را نشان می دهد.
همانطور که در نشان داده شده است شکل 4-2، به هر ثبات نیز یک آدرس حافظه داده اختصاص داده می شود و آنها را مستقیماً در 32 مکان اول فضای داده کاربر ترسیم می کند. اگرچه از نظر فیزیکی به عنوان مکان های SRAM پیاده سازی نمی شود ، اما این سازمان حافظه در دسترسی به رجیسترها انعطاف پذیری بالایی را ارائه می دهد ، زیرا رجیسترهای اشاره گر X- ، Y- و Z می توانند برای ثبت هر رجیستری در file.بیشتر دستورالعمل های فعال در ثبت نام File دسترسی مستقیم به همه رجیسترها دارند و اکثر آنها دستورالعمل های یک چرخه هستند.
رجیستر X ، رجیستر Y و رجیستر Z
رجیسترهای R26..R31 توابع اضافه شده ای برای استفاده عمومی دارند. این ثبات ها نشانگر آدرس 16 بیتی برای آدرس دهی غیرمستقیم فضای داده هستند. سه رجیستر آدرس غیرمستقیم X ، Y و Z به شرح آنچه در آن توضیح داده شده است تعریف می شوند شکل 4-3.
در حالت های مختلف آدرس دهی ، این رجیسترهای آدرس عملکردهایی مانند جابجایی ثابت ، افزایش خودکار و کاهش خودکار دارند (برای جزئیات به مرجع مجموعه دستورالعمل ها مراجعه کنید).
نشانگر پشته
Stack عمدتا برای ذخیره داده های موقتی ، برای ذخیره متغیرهای محلی و برای ذخیره آدرس های بازگشت پس از قطع و تماس های زیرروال استفاده می شود. Stack Pointer Register همیشه به بالای پشته نشان می دهد. توجه داشته باشید که Stack در حال رشد است که از مکان های حافظه بالاتر به مکان های حافظه پایین تر رشد می کند. این نشان می دهد که یک دستور Stack PUSH باعث کاهش Stack Pointer می شود.
Stack Pointer به منطقه داده Stack SRAM که Subroutine و Interrupt Stacks در آن قرار دارد اشاره می کند. این فضای Stack در داده های SRAM باید توسط برنامه مشخص شود قبل از اینکه هر فراخوانی زیر روال اجرا شود و یا interput ها فعال شوند. Stack Pointer باید روی نقطه بالای 0x60 تنظیم شود. هنگامی که داده ها با دستور PUSH بر روی Stack رانده می شوند ، نشانگر Stack یک کاهش می یابد ، و هنگامی که آدرس بازگشت به سیستم Stack با تماس زیرروالین یا وقفه فشار می یابد ، با دو کاهش می یابد. Stack Pointer وقتی داده ها از Stack با دستور POP ظاهر می شود ، یک افزایش می یابد و وقتی داده ها از Stack با بازگشت از زیرروال RET یا بازگشت از RETI متوقف می شوند ، با دو افزایش می یابد.
نشانگر پشته AVR به عنوان دو ثبت کننده 8 بیتی در فضای ورودی / خروجی پیاده سازی می شود. تعداد بیت های مورد استفاده واقعاً به اجرا بستگی دارد. توجه داشته باشید که فضای داده در برخی از پیاده سازی های معماری AVR آنقدر کم است که فقط به SPL نیاز است. در این حالت ، ثبت نام SPH حضور نخواهد داشت.
SPH and SPL - Stack Pointer Register
بیت | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | |
0x3E | SP15 | SP14 | SP13 | SP12 | SP11 | SP10 | SP9 | SP8 | SPH |
0x3D | SP7 | SP6 | SP5 | SP4 | SP3 | SP2 | SP1 | SP0 | SPL |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
بخوان / بنویس | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
بخوان / بنویس | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
ارزش اولیه | رامند | رامند | رامند | رامند | رامند | رامند | رامند | رامند | |
ارزش اولیه | رامند | رامند | رامند | رامند | رامند | رامند | رامند | رامند |
زمان اجرای دستورالعمل ها
این بخش مفاهیم کلی زمانبندی دسترسی برای اجرای دستورالعمل را توضیح میدهد. CPU AVR توسط ساعت CPU clkCPU هدایت می شود که مستقیماً از منبع ساعت انتخاب شده برای تراشه تولید می شود. هیچ تقسیم ساعت داخلی استفاده نمی شود.
شکل 4-4 واکشی دستورات موازی و اجرای دستورات فعال شده توسط معماری هاروارد و ثبت دسترسی سریع را نشان می دهد File مفهوم این مفهوم اصلی خط لوله برای بدست آوردن حداکثر 1 MIPS در MHz با نتایج منحصر به فرد مربوط به توابع در هزینه ، توابع در ساعت و توابع در واحد قدرت است.
شکل 4-5. عملیات ALU تک چرخه
تنظیم مجدد و مدیریت وقفه
AVR چندین منبع مختلف وقفه را فراهم می کند. این وقفه ها و Reset Vector جداگانه هر یک دارای یک بردار برنامه جداگانه در فضای حافظه برنامه هستند. به همه وقفه ها بیت های فعال فردی اختصاص داده شده است که باید برای فعال کردن وقفه ، یک بیت فعال جهانی وقفه را در وضعیت ثبت بنویسید.
کمترین آدرس ها در فضای حافظه برنامه به طور پیش فرض به عنوان Reset و Interract Vectors تعریف شده اند. لیست کامل بردارها در نشان داده شده است "وقفه ها" در صفحه 48. این لیست همچنین سطوح اولویت وقفه های مختلف را تعیین می کند. هرچه آدرس پایین تر باشد ، سطح اولویت بالاتر است. RESET بالاترین اولویت را دارد و بعدی INT0 است - درخواست وقفه خارجی 0.
با وقفه ، بیت فعال جهانی وقفه پاک می شود و تمام وقفه ها غیرفعال می شوند. نرم افزار کاربر می تواند منطقی را بر روی I-bit بنویسد تا وقفه های تو در تو را فعال کند. همه وقفه های فعال شده می توانند روال وقفه فعلی را قطع کنند. وقتی دستورالعمل Return from Interrupt - RETI - اجرا می شود ، بیت به طور خودکار تنظیم می شود.
در واقع دو نوع وقفه وجود دارد. نوع اول توسط یک رویداد ایجاد می شود که پرچم وقفه را تنظیم می کند. برای این وقفه ها ، برنامه Counter برای اجرای روال دست زدن به وقفه بردار واقعی قطع شده است ، و سخت افزار پرچم قطع شده مربوطه را پاک می کند. پرچم های وقفه را می توان با نوشتن یک منطق در موقعیت (های) بیت پرچم برای پاک شدن ، پاک کرد. اگر در هنگام پاک شدن بیت فعال کردن وقفه مربوطه ، شرایط وقفه ایجاد شود ، تا زمانی که وقفه فعال نشود یا پرچم توسط نرم افزار پاک نشود ، وقفه وقفه تنظیم می شود و به خاطر سپرده می شود. به طور مشابه ، اگر یک یا چند شرط وقفه در هنگام پاک شدن بیت Global Interrupt Enable رخ دهد ، پرچم (های) وقفه مربوطه تنظیم می شود و تا زمان تنظیم بیت Global Interrupt Enable ، یادآوری می شود و سپس به ترتیب اولویت اجرا می شود.
نوع دوم وقفه ها تا زمانی که شرایط وقفه وجود داشته باشد باعث تحریک می شوند. این وقفه ها لزوماً دارای پرچم های وقفه نیستند. اگر شرایط وقفه قبل از فعال شدن وقفه از بین برود ، وقفه ایجاد نخواهد شد.
هنگامی که AVR از وقفه خارج می شود ، همیشه به برنامه اصلی برمی گردد و قبل از ارائه وقفه در انتظار ، یک دستورالعمل دیگر اجرا می کند.
توجه داشته باشید که هنگام ورود به روال وقفه ، ثبت وضعیت به طور خودکار ذخیره نمی شود و هنگام بازگشت از روال وقفه ، بازیابی نمی شود. این باید توسط نرم افزار اداره شود.
هنگام استفاده از دستورالعمل CLI برای غیرفعال کردن وقفه ها ، وقفه ها بلافاصله غیرفعال می شوند. هیچ وقفه ای بعد از دستور CLI اجرا نمی شود ، حتی اگر همزمان با دستور CLI رخ دهد. سابق زیرample نشان می دهد که چگونه می توان از آن برای جلوگیری از وقفه در زمان توالی نوشتن زمان بندی شده EEPROM استفاده کرد.
کد مونتاژ سابقample |
در r16، SREG ; ذخیره مقدار SREG
cli ; وقفه ها را در طول توالی زمان بندی شده غیرفعال کنید sbi EECR، EEMPE ; نوشتن EEPROM را شروع کنید sbi EECR، EEPE خروجی SREG، r16; بازیابی مقدار SREG (I-bit) |
C کد سابقample |
char cSREG;
cSREG = SREG; /* ذخیره مقدار SREG */ /* غیرفعال کردن وقفه ها در طول توالی زمان بندی شده */ _CLI ()؛ EECR |= (1< EECR | = (1 < SREG = cSREG; /* بازیابی مقدار SREG (I-bit) */ |
هنگام استفاده از دستورالعمل SEI برای فعال کردن وقفه ها ، دستورالعمل زیر SEI قبل از وقفه های معلق اجرا می شود ، همانطور که در این مثال نشان داده شده استampله
کد مونتاژ سابقample |
sei ; فعال کردن وقفه جهانی را تنظیم کنید
خواب؛ وارد خواب شوید، منتظر وقفه باشید ؛ توجه: قبل از هرگونه تعلیق وارد حالت خواب می شود ؛ وقفه (ها) |
C کد سابقample |
_SEI(); /* تنظیم وقفه جهانی فعال */
_خواب()؛ /* وارد خواب شوید، منتظر وقفه باشید */ / * توجه: قبل از هر وقفه در انتظار وارد خواب می شود * / |
زمان پاسخ را قطع کنید
پاسخ اجرای وقفه برای تمام وقفه های فعال AVR حداقل چهار چرخه ساعت است. بعد از چهار چرخه ساعت آدرس وکتور Program برای روال واقعی کار با وقفه اجرا می شود. در طول این چهار دوره چرخه ساعت ، شمارنده برنامه به Stack رانده می شود. بردار به طور معمول پرش به روال وقفه است و این پرش سه چرخه ساعت طول می کشد. اگر در حین اجرای دستورالعمل چند چرخه وقفه رخ دهد ، این دستورالعمل قبل از ارائه وقفه تکمیل می شود. اگر زمانی که MCU در حالت خواب است وقفه ایجاد شود ، زمان پاسخ اجرای وقفه چهار چرخه ساعت افزایش می یابد. این افزایش علاوه بر زمان راه اندازی از حالت خواب انتخاب شده است.
بازگشت از روال کار با وقفه چهار چرخه ساعت طول می کشد. در طول این چهار چرخه ساعت ، شمارنده برنامه (دو بایت) از Stack باز می شود ، Stack Pointer دو برابر می شود و I-bit در SREG تنظیم می شود.
خاطرات AVR
این بخش خاطرات مختلف ATtiny25 / 45/85 را توصیف می کند. معماری AVR دارای دو فضای حافظه اصلی است: حافظه داده و فضای حافظه برنامه. علاوه بر این ، ATtiny25 / 45/85 دارای یک حافظه EEPROM برای ذخیره اطلاعات است. هر سه فضای حافظه خطی و منظم هستند.
در برنامه حافظه برنامه Flash قابل برنامه ریزی مجدد
ATtiny25 / 45/85 شامل 2/4/8K بایت حافظه فلش با قابلیت تنظیم مجدد درون سیستم در تراشه برای ذخیره سازی برنامه است. از آنجا که تمام دستورالعمل های AVR 16 یا 32 بیت عرض دارند ، Flash به صورت 1024/2048/4096 x 16 سازمان یافته است.
مقاومت حافظه Flash حداقل 10,000 هزار دوره نوشتن / پاک کردن است. شمارنده برنامه ATtiny25 / 45/85 (PC) با عرض 10/11/12 بیت است ، بنابراین آدرس دهی به مکانهای حافظه برنامه 1024/2048/4096 است. "برنامه حافظه- ming ”در صفحه 147 شامل شرح مفصلی در بارگیری سریال سریال داده Flash با استفاده از پین های SPI است.
جداول ثابت را می توان در کل فضای آدرس حافظه برنامه اختصاص داد (به توضیحات دستورالعمل حافظه LPM - Load Program مراجعه کنید).
شکل 5-1. نقشه حافظه برنامه
حافظه داده SRAM
شکل 5-2 نحوه سازماندهی حافظه SRAM ATtiny25 / 45/85 را نشان می دهد.
قسمت 224/352/607 پایین حافظه های داده هر دو Register را نشان می دهد File، حافظه ورودی و خروجی و SRAM داده های داخلی. 32 مکان اول آدرس Register را نشان می دهند File، 64 مکان بعدی حافظه استاندارد ورودی/خروجی و آخرین مکانهای 128/256/512 آدرس داخلی SRAM است.
پنج حالت مختلف آدرس دهی برای پوشش حافظه داده: مستقیم ، غیرمستقیم با جابجایی ، غیرمستقیم ، مستقیم با پیش کاهش و غیرمستقیم با افزایش اضافی. در ثبت نام File، رجیسترهای R26 تا R31 دارای رجیسترهای اشاره گر آدرس دهی غیر مستقیم هستند.
آدرس دهی مستقیم به کل فضای داده می رسد.
حالت غیر مستقیم با جابجایی از آدرس پایه داده شده توسط رجیستر Y- یا Z- به 63 مکان آدرس می رسد.
هنگام استفاده از حالت های آدرس دهی غیرمستقیم ثبت با پیش کاهش و پس از افزایش خودکار ، آدرس های ثبت X ، Y و Z کاهش یا افزایش می یابند.
32 رجیستر کارکرد عمومی ، 64 رجیستر ورودی و خروجی و 128/256/512 بایت SRAM داده داخلی در ATtiny25/45/85 همه از طریق تمام این حالت های آدرس دهی قابل دسترسی هستند. ثبت نام File شرح داده شده است در "ژن- ثبت اهداف اصلی File”در صفحه 10.
شکل 5-2. نقشه حافظه داده
دسترسی به حافظه داده بار
این بخش مفاهیم کلی زمان بندی دسترسی برای دسترسی به حافظه داخلی را توضیح می دهد. دسترسی SRAM به داده های داخلی در دو چرخه clkCPU همانطور که در توضیح داده شده است انجام می شود شکل 5-3.
شکل 5-3. چرخه های دسترسی SRAM داده روی تراشه حافظه داده EEPROM
ATtiny25 / 45/85 شامل 128/256/512 بایت حافظه EEPROM داده است. این به عنوان یک فضای داده جداگانه سازماندهی شده است ، که در آن می توان بایت های واحد را خواند و نوشت. EEPROM استقامت حداقل 100,000 دوره نوشتن / پاک کردن دارد. دسترسی بین EEPROM و CPU در زیر شرح داده شده است ، با مشخص کردن ثبت نام آدرس EEPROM ، ثبت اطلاعات EEPROM و ثبت کنترل EEPROM. برای اطلاعات بیشتر مراجعه کنید "بارگیری سریال" در صفحه 151.
EEPROM دسترسی خواندن / نوشتن
ثبت نام های دسترسی EEPROM در فضای I / O قابل دسترسی هستند.
زمان دسترسی به نوشتن برای EEPROM در آمده است جدول 5-1 در صفحه 21. با این حال، یک تابع زمانبندی خودکار به نرمافزار کاربر امکان میدهد تشخیص دهد که بایت بعدی چه زمانی میتواند نوشته شود. اگر کد کاربر حاوی دستورالعمل هایی است که EEPROM را می نویسد، باید اقدامات احتیاطی انجام شود. در منابع تغذیه به شدت فیلتر شده، VCC احتمالاً به آرامی افزایش یا کاهش می یابد
روشن/خاموش کردن. این باعث می شود که دستگاه برای مدتی با سرعت کار کندtage کمتر از حداقل تعیین شده برای فرکانس ساعت استفاده شده. دیدن "جلوگیری از فساد EEPROM" در صفحه 19 برای جزئیات بیشتر در مورد چگونگی جلوگیری از مشکلات در این شرایط.
به منظور جلوگیری از نوشتن غیرعمد EEPROM ، باید یک روش نوشتن خاص دنبال شود. رجوع شود به "اتمی Byte Programming ”در صفحه 17 و ”Split Byte Programming” در صفحه 17 برای جزئیات بیشتر در این مورد
وقتی EEPROM خوانده می شود ، قبل از اجرای دستورالعمل بعدی ، CPU برای چهار سیکل ساعت متوقف می شود. وقتی EEPROM نوشته می شود ، قبل از اجرای دستورالعمل بعدی ، CPU برای دو سیکل ساعت متوقف می شود.
برنامه نویسی بایت اتمی
استفاده از برنامه نویسی بایت اتمی ساده ترین حالت است. هنگام نوشتن بایت به EEPROM ، کاربر باید آدرس را در EEAR Register و داده ها را در EEDR Register بنویسد. اگر بیت های EEPMn صفر باشد ، نوشتن EEPE (ظرف چهار چرخه پس از نوشتن EEMPE) عملیات پاک کردن / نوشتن را آغاز می کند. چرخه پاک کردن و نوشتن هم در یک عملیات انجام می شود و هم کل زمان برنامه نویسی در آن داده می شود جدول 5-1 در صفحه 21. بیت EEPE تا پایان عملیات پاک کردن و نوشتن تنظیم می شود. در حالی که دستگاه مشغول برنامه نویسی است ، انجام سایر عملیات EEPROM امکان پذیر نیست.
برنامه نویسی Split Byte
امکان تقسیم چرخه پاک کردن و نوشتن در دو عملیات مختلف وجود دارد. این ممکن است مفید باشد اگر سیستم به مدت زمان محدودی به زمان دسترسی کوتاه نیاز داشته باشد (معمولاً اگر منبع تغذیه voltage می افتد) به منظور پیشرفت- tagدر این روش ، لازم است مکان هایی که باید نوشته شوند قبل از عملیات نوشتن پاک شده باشند. اما از آنجا که عملیات پاک کردن و نوشتن تقسیم شده است ، می توان عملیات پاک کردن را زمانی انجام داد که سیستم به شما اجازه انجام عملیات حساس زمان را می دهد (معمولاً پس از روشن شدن دستگاه).
پاک کردن
برای پاک کردن یک بایت ، آدرس باید در EEAR نوشته شود. اگر بیت های EEPMn 0b01 باشد ، نوشتن EEPE (ظرف چهار چرخه پس از نوشتن EEMPE) فقط عملیات پاک کردن را آغاز می کند (زمان برنامه نویسی در جدول 5-1 در صفحه 21) بیت EEPE تا زمان کامل شدن عملیات پاک کردن باقی می ماند. در حالی که دستگاه مشغول برنامه نویسی است ، انجام سایر عملیات EEPROM امکان پذیر نیست.
بنویسید
برای نوشتن مکان ، کاربر باید آدرس را به EEAR و داده را به EEDR بنویسد. اگر بیت های EEPMn 0b10 باشد ، نوشتن EEPE (ظرف چهار چرخه پس از نوشتن EEMPE) فقط عملیات نوشتن را آغاز می کند (زمان برنامه ریزی در جدول 5-1 در صفحه 21) بیت EEPE تا پایان کار نوشتن تنظیم می شود. اگر مکانی که باید نوشته شود قبل از نوشتن پاک نشده است ، داده های ذخیره شده باید از دست رفته در نظر گرفته شوند. در حالی که دستگاه مشغول برنامه نویسی است ، انجام سایر عملیات EEPROM امکان پذیر نیست.
اسیلاتور کالیبره شده برای تعیین زمان دسترسی EEPROM استفاده می شود. اطمینان حاصل کنید که فرکانس نوسان ساز مطابق با الزاماتی است که در آن توضیح داده شده است "OSCCAL - ثبت نام کالیبراسیون اسیلاتور" در صفحه 31.
کد زیر به عنوان مثالamples یک مجموعه و یک تابع C برای پاک کردن ، نوشتن یا نوشتن اتمی EEPROM نشان می دهد. سابقamples تصور می کند که وقفه ها کنترل می شوند (به عنوان مثال ، با غیرفعال کردن وقفه ها در سطح جهانی) ، بنابراین هیچ وقفه ای در حین اجرای این توابع رخ نمی دهد.
کد مونتاژ سابقample |
EEPROM_ بنویسید:
؛ منتظر تکمیل نوشته قبلی باشید sbic EECR،EEPE rjmp EEPROM_write ؛ حالت برنامه نویسی را تنظیم کنید ldi r16, (0<<EEPM1)|(0<<EEPM0) خروجی EECR، r16 ؛ آدرس (r18: r17) را در ثبت آدرس تنظیم کنید خارج از EEARH، r18 خارج از EEARL، r17 ؛ داده ها (r19) را برای ثبت اطلاعات بنویسید خروجی EEDR، r19 ؛ یکی را منطقی برای EEMPE بنویسید sbi EECR،EEMPE ؛ با تنظیم EEPE نوشتن eeprom را شروع کنید sbi EECR،EEPE ret |
C کد سابقample |
void EEPROM_write (نشانی نویسه بدون امضا، ucData کاراکتر بدون امضا)
{ /* منتظر تکمیل نوشتن قبلی باشید */ while(EECR & (1< ; /* تنظیم حالت برنامه نویسی */ EECR = (0 < / * ثبت آدرس و داده ها * / EEAR = ucAddress؛ EEDR = ucData ؛ /* یک منطقی را در EEMPE بنویسید */ EECR | = (1 < / * نوشتن eeprom را با تنظیم EEPE شروع کنید * / EECR | = (1 < } |
کد بعدی سابقampتوابع مونتاژ و C را برای خواندن EEPROM نشان می دهد. سابقamples تصور می کند که وقفه ها طوری کنترل می شوند که در حین اجرای این توابع وقفه ای رخ ندهد.
کد مونتاژ سابقample |
EEPROM_ بخوانید:
؛ منتظر تکمیل نوشته قبلی باشید sbic EECR،EEPE rjmp EEPROM_read ؛ آدرس (r18: r17) را در ثبت آدرس تنظیم کنید خارج از EEARH، r18 خارج از EEARL، r17 ؛ مطالعه eeprom را با نوشتن EERE شروع کنید sbi EECR،EERE ؛ داده ها را از ثبت داده بخوانید در r16، EEDR ret |
C کد سابقample |
char unsigned EEPROM_read(char ucAddress)
{ / * منتظر تکمیل نوشتن قبلی باشید * / while (EECR & (1 < ; / * تنظیم آدرس ثبت نام * / EEAR = ucAddress؛ /* خواندن eeprom را با نوشتن EERE شروع کنید */ EECR | = (1 < / * بازگشت داده ها از ثبت اطلاعات * / بازگشت EEDR ؛ } |
جلوگیری از فساد EEPROM
در طول دورههای VCC پایین، دادههای EEPROM میتوانند خراب شوند زیرا حجم عرضهtage برای عملکرد صحیح CPU و EEPROM بسیار پایین است. این مسائل مانند سیستم های سطح برد با استفاده از EEPROM است و باید از راه حل های طراحی مشابه استفاده شود.
خرابی داده های EEPROM می تواند در دو حالت ایجاد شودtage خیلی کم است ابتدا ، یک ترتیب نوشتن منظم برای EEPROM به حداقل حجم نیاز داردtage برای عملکرد صحیح ثانیاً ، CPU خود می تواند دستورالعمل ها را به اشتباه اجرا کند ، در صورتی که منبع تغذیه voltage خیلی کم است
با پیروی از این توصیه طراحی به راحتی می توان از تخریب داده های EEPROM جلوگیری کرد:
AVR RESET را در دوره های منبع تغذیه ناکافی فعال (کم) نگه داریدtagه این را می توان با فعال کردن آشکارساز قهوه ای داخلی (BOD) انجام داد. اگر سطح تشخیص BOD داخلی با
سطح تشخیص مورد نیاز، می توان از یک مدار حفاظتی بازنشانی VCC پایین خارجی استفاده کرد. اگر در حین انجام عملیات نوشتن، بازنشانی اتفاق بیفتد، عملیات نوشتن تکمیل خواهد شد مشروط بر اینکه منبع تغذیه voltage کافی است
حافظه ورودی / خروجی
تعریف فضای ورودی و خروجی ATtiny25 / 45/85 در نشان داده شده است "ثبت خلاصه" در صفحه 200.
تمام تجهیزات ورودی / خروجی ATtiny25 / 45/85 و لوازم جانبی در فضای ورودی / خروجی قرار می گیرند. با استفاده از دستورالعمل های LD / LDS / LDD و ST / STS / STD می توان به همه مکان های ورودی / خروجی دسترسی پیدا کرد ، و این امر انتقال داده ها بین 32 ثبات کار عمومی و فضای ورودی / خروجی را انجام می دهد. رجیسترهای ورودی و خروجی در محدوده آدرس 0x00 - 0x1F با استفاده از دستورالعمل های SBI و CBI مستقیماً در دسترس هستند. در این ثبات ها ، می توان مقدار تک بیت ها را با استفاده از دستورالعمل های SBIS و SBIC بررسی کرد. برای جزئیات بیشتر به قسمت مجموعه دستورالعمل ها مراجعه کنید. هنگام استفاده از دستورات خاص I / O IN و OUT ، باید از آدرس های I / O 0x00 - 0x3F استفاده شود. هنگام آدرس دهی ثبت های ورودی / خروجی به عنوان فضای داده با استفاده از دستورالعمل های LD و ST ، 0x20 باید به این آدرس ها اضافه شود.
برای سازگاری با دستگاه های آینده ، بیت های رزرو شده باید در صورت دسترسی صفر شوند. آدرس حافظه ورودی / ورودی رزرو شده هرگز نباید نوشته شود.
برخی از پرچم های وضعیت با نوشتن یک علامت منطقی برای آنها پاک می شوند. توجه داشته باشید که دستورالعمل های CBI و SBI فقط با بیت مشخص شده کار می کنند و بنابراین می توانند در ثبات های حاوی چنین وضعیت های پرچم استفاده شوند. دستورالعمل های CBI و SBI فقط با رجیسترهای 0x00 تا 0x1F کار می کنند.
رجیسترهای کنترل ورودی و خروجی و لوازم جانبی در بخشهای بعدی توضیح داده شده است.
ثبت نام
EEARH - ثبت نام آدرس EEPROM
بیت | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1F | – | – | – | – | – | – | – | EEAR8 | گوش |
بخوان / بنویس | R | R | R | R | R | R | R | R/W | |
ارزش اولیه | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X/0 |
بیت 7: 1 - رز: بیت های اختصاصی
این بیت ها برای استفاده های بعدی رزرو شده اند و همیشه صفر خوانده می شوند.
بیت 0 - EEAR8: آدرس EEPROM
این شاخص ترین بیت آدرس EEPROM از ATtiny85 است. در دستگاه های با EEPROM کمتر ، یعنی ATtiny25 / ATtiny45 ، این بیت محفوظ است و همیشه صفر خوانده می شود. مقدار اولیه ثبت نام آدرس EEPROM (EEAR) تعریف نشده است و بنابراین باید قبل از دسترسی به EEPROM مقدار مناسبی نوشته شود.
EEARL - ثبت نام آدرس EEPROM
بیت
0x1E | EEAR7 | EEAR6 | EEAR5 | EEAR4 | EEAR3 | EEAR2 | EEAR1 | EEAR0 | گوش گوش |
عقب / نوشتن | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
ارزش اولیه | X | X | X | X | X | X | X | X |
بیت 7 - EEAR7: آدرس EEPROM
این شاخص ترین بیت آدرس EEPROM از ATtiny45 است. در دستگاه های با EEPROM کمتر ، یعنی ATtiny25 ، این بیت محفوظ است و همیشه صفر خوانده می شود. مقدار اولیه ثبت نام آدرس EEPROM (EEAR) تعریف نشده است و بنابراین باید قبل از دسترسی به EEPROM مقدار مناسبی نوشته شود.
بیت 6: 0 - EEAR [6: 0]: آدرس EEPROM
این بیت های (کم) آدرس ثبت نام EEPROM هستند. بایت داده های EEPROM به صورت خطی در محدوده 0… (128/256 / 512-1) آدرس دهی می شوند. مقدار اولیه EEAR تعریف نشده است و بنابراین باید قبل از دسترسی به EEPROM مقدار مناسبی نوشته شود.
EEDR - ثبت اطلاعات EEPROM
بیت | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1D | EEDR7 | EEDR6 | EEDR5 | EEDR4 | EEDR3 | EEDR2 | EEDR1 | EEDR0 | EEDR |
بخوان / بنویس | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
ارزش اولیه | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
برای عملیات نوشتن EEPROM ، ثبت نام EEDR شامل داده هایی است که باید در EEPROM در آدرس داده شده توسط ثبت EEAR نوشته شود. برای عملیات خواندن EEPROM ، EEDR شامل داده های خوانده شده از
EEPROM در آدرس داده شده توسط EEAR.
5.5.4 EECR - ثبت نام كنترل EEPROM |
|||||||||
بیت 7 6 5 | 4 | 3 | 2 | 1 | 0 | ||||
0x1C – | – | EEPM1 | EEPM0 | وهم انگیز | EEMPE | EEPE | اینجا | EECR | |
R R R / W را بخوانید / بنویسید | R/W | R/W | R/W | R/W | R/W | ||||
مقدار اولیه 0 0 X | X | 0 | 0 | X | 0 |
بیت 7 - رز: بیت اختصاصی
این بیت مخصوص استفاده در آینده است و همیشه به صورت 0 در ATtiny25 / 45/85 خوانده می شود. برای سازگاری با دستگاه های AVR آینده ، همیشه این بیت را صفر بنویسید. بعد از خواندن ، این قسمت را ماسک بزنید.
بیت 6 - رز: بیت اختصاصی
این بیت در ATtiny25 / 45/85 رزرو شده است و همیشه صفر است.
بیت 5: 4 - EEPM [1: 0]: بیت های حالت برنامه نویسی EEPROM
تنظیم بیت های حالت برنامه نویسی EEPROM مشخص می کند کدام اقدام برنامه نویسی هنگام نوشتن EEPE شروع می شود. می توان داده ها را در یک عملیات اتمی برنامه ریزی کرد (مقدار قدیمی را پاک کرد و مقدار جدید را برنامه ریزی کرد) یا عملیات پاک کردن و نوشتن را در دو عمل مختلف تقسیم کرد. زمان برنامه نویسی برای حالت های مختلف در نشان داده شده است جدول 5-1. در حالی که EEPE تنظیم شده است ، هرگونه نوشتن در EEPMn نادیده گرفته می شود. در حین تنظیم مجدد ، بیت های EEPMn به 0b00 بازنشانی می شوند مگر اینکه EEPROM مشغول برنامه نویسی باشد.
جدول 5-1. بیت های حالت EEPROM
EEPM1 | EEPM0 | زمان برنامه نویسی | عملیات |
0 | 0 | 3.4 میلی ثانیه | پاک کردن و نوشتن در یک عملیات (عملیات اتمی) |
0 | 1 | 1.8 میلی ثانیه | فقط پاک کردن |
1 | 0 | 1.8 میلی ثانیه | فقط نوشتن |
1 | 1 | – | برای استفاده در آینده رزرو شده است |
بیت 3 - EERIE: EEPROM Ready وقفه را فعال کنید
نوشتن EERIE برای یک در صورت تنظیم I-bit در SREG ، وقفه آماده EEPROM را امکان پذیر می کند. نوشتن EERIE به صفر وقفه را غیرفعال می کند. وقتی حافظه غیر فرار برای برنامه نویسی آماده است ، وقفه EEPROM Ready وقفه ایجاد می کند.
بیت 2 - EEMPE: برنامه کارشناسی ارشد EEPROM فعال است
بیت EEMPE تعیین می کند که آیا نوشتن EEPE برای یکی تأثیرگذار است یا خیر.
با تنظیم EEMPE ، تنظیم EEPE در چهار چرخه زمانی EEPROM را در آدرس انتخاب شده برنامه ریزی می کند. اگر EEMPE صفر باشد ، تنظیم EEPE تأثیری نخواهد داشت. وقتی EEMPE توسط یک نرم افزار روی یک نوشته شد ، سخت افزار پس از چهار چرخش ساعت بیت را صفر می کند.
بیت 1 - EEPE: برنامه EEPROM فعال است
برنامه EEPROM فعال کردن سیگنال EEPE سیگنال فعال برنامه نویسی به EEPROM است. هنگامی که EEPE نوشته می شود ، EEPROM مطابق با تنظیمات بیت های EEPMn برنامه ریزی می شود. بیت EEMPE باید قبل از نوشتن منطقی در EEPE برای یکی نوشته شود ، در غیر این صورت هیچ نوشتاری EEPROM صورت نمی گیرد. وقتی زمان دسترسی به نوشتن سپری شد ، بیت EEPE توسط سخت افزار پاک می شود. وقتی EEPE تنظیم شد ، قبل از اجرای دستورالعمل بعدی ، CPU برای دو سیکل متوقف می شود.
بیت 0 - EERE: EEPROM خواندن فعال است
EEPROM Read Enable Signal - EERE - بارق خوانده شده برای EEPROM است. هنگامی که آدرس صحیح در EEAR Register تنظیم می شود ، بیت EERE باید برای یکی نوشته شود تا خواندن EEPROM آغاز شود. دسترسی خواندن EEPROM به یک دستورالعمل نیاز دارد و داده های درخواستی بلافاصله در دسترس هستند. وقتی EEPROM خوانده می شود ، قبل از اجرای دستورالعمل بعدی ، CPU برای چهار سیکل متوقف می شود. کاربر باید قبل از شروع کار خواندن ، بیت EEPE را نظر سنجی کند. اگر یک عملیات نوشتن در حال انجام است ، نه می توانید EEPROM را بخوانید ، و نه می توانید ثبت نام EEAR را تغییر دهید.
گزینه های ساعت و ساعت سیستم
سیستم های ساعت و توزیع آنها
ساعت CPU
ساعت CPU به قسمتهایی از سیستم مربوط به عملکرد هسته AVR هدایت می شود. سابقampتعدادی از این مدلها فهرست اهداف عمومی است File، Status Register و Data Data که Stack Pointer را نگه داشته اند. توقف ساعت CPU هسته را از انجام عملیات و محاسبات عمومی باز می دارد.
ساعت I / O - clkI / O
ساعت ورودی / خروجی توسط اکثر ماژول های ورودی / خروجی مانند تایمر / شمارنده استفاده می شود. ساعت ورودی / خروجی توسط ماژول وقفه خارجی نیز مورد استفاده قرار می گیرد ، اما توجه داشته باشید که برخی از وقفه های خارجی با منطق ناهمزمان شناسایی می شوند ، حتی در صورت قطع شدن ساعت ورودی / خروجی اجازه می دهد چنین وقفه هایی شناسایی شوند.
ساعت فلش - clkFLASH
ساعت فلش عملکرد رابط Flash را کنترل می کند. ساعت فلش معمولاً همزمان با ساعت CPU فعال است.
ساعت ADC - clkADC
ADC دارای یک دامنه اختصاصی ساعت است. این امکان باعث می شود تا ساعت های CPU و I / O به منظور کاهش نویز تولید شده توسط مدارهای دیجیتال متوقف شود. این نتایج دقیقتر تبدیل ADC را نشان می دهد.
PLL داخلی برای تولید ساعت سریع محیطی - clkPCK
PLL داخلی در ATtiny25 / 45/85 یک فرکانس ساعت ایجاد می کند که 8 برابر از ورودی منبع ضرب می شود. به طور پیش فرض ، PLL از خروجی اسیلاتور داخلی 8.0 مگاهرتزی RC به عنوان منبع استفاده می کند. متناوباً ، اگر بیت LSM PLLCSR تنظیم شود ، PLL از خروجی نوسان ساز RC تقسیم بر دو استفاده می کند. بنابراین خروجی PLL ، ساعت محیطی سریع 64 مگاهرتز است. ساعت محیطی سریع یا ساعتی که از آن منشعب شده است ، می تواند به عنوان منبع ساعت برای Timer / Counter1 یا به عنوان ساعت سیستم انتخاب شود. دیدن شکل 6-2. هنگامی که LSM PLLCSR تنظیم می شود، فرکانس ساعت محیطی سریع بر دو تقسیم می شود و در نتیجه فرکانس ساعت 32 مگاهرتز ایجاد می شود. توجه داشته باشید که اگر PLLCLK به عنوان ساعت سیستم استفاده شود، نمی توان LSM را تنظیم کرد.
شکل 6-2. سیستم کلاکینگ PCK.
PLL روی اسیلاتور RC قفل شده و تنظیم اسیلاتور RC از طریق رجیستر OSCCAL باعث تنظیم همزمان ساعت محیطی سریع می شود. با این حال ، حتی اگر نوسانگر RC به فرکانس بالاتر از 8 مگاهرتز منتقل شود ، فرکانس ساعت محیطی سریع در 85 مگاهرتز اشباع می شود (در بدترین حالت) و در حداکثر فرکانس نوسان می کند. لازم به ذکر است که PLL در این حالت دیگر با ساعت اسیلاتور RC قفل نمی شود. بنابراین توصیه می شود تنظیمات OSCCAL را با فرکانس بالاتر از 8 مگاهرتز انجام ندهید تا PLL در محدوده عملکرد صحیح باشد.
PLL داخلی فعال می شود:
بیت PLLE در PLLCSR ثبت نام تنظیم شده است.
فیوز CKSEL روی '0001' برنامه ریزی شده است.
فیوز CKSEL روی '0011' برنامه ریزی شده است.
بیت PLLCSR PLOCK زمانی تنظیم می شود که PLL قفل است. هر دو نوسان ساز داخلی RC و PLL در حالت خاموش و آماده به کار خاموش می شوند.
PLL داخلی در حالت سازگاری ATtiny15
از آنجا که ATtiny25 / 45/85 یک وسیله مهاجرت برای کاربران ATtiny15 است ، یک حالت سازگاری ATtiny15 برای سازگاری پشتی وجود دارد. حالت سازگاری ATtiny15 با برنامه ریزی فیوزهای CKSEL به "0011" انتخاب می شود.
در حالت سازگاری ATtiny15 فرکانس نوسان ساز RC داخلی تا 6.4 مگاهرتز کالیبره می شود و ضریب ضریب PLL روی 4x تنظیم می شود. دیدن شکل 6-3. با این تنظیمات ، سیستم کلاکینگ با ATtiny15 سازگار است و کلاک سریع محیطی حاصل نیز دارای فرکانس 25.6 مگاهرتز (همان ATtiny15) است.
شکل 6-3. سیستم کلاکینگ PCK در حالت سازگاری ATtiny15.
منابع ساعت
این گزینه دارای گزینه های منبع ساعت زیر است که مانند بقیه نشانگرهای فلش قابل انتخاب هستند. ساعت از منبع انتخاب شده به مولد ساعت AVR وارد می شود و به ماژول های مناسب هدایت می شود.
جدول 6-1. گزینه های ساعت دستگاه را انتخاب کنید
گزینه ساعت گذاری دستگاه | CKSEL [3:0](1) |
ساعت خارجی (نگاه کنید به صفحه 26) | 0000 |
ساعت با فرکانس بالا PLL (نگاه کنید به صفحه 26) | 0001 |
نوسان ساز داخلی کالیبره شده (نگاه کنید به صفحه 27) | 0010(2) |
نوسان ساز داخلی کالیبره شده (نگاه کنید به صفحه 27) | 0011(3) |
اسیلاتور داخلی 128 کیلوهرتز (نگاه کنید به صفحه 28) | 0100 |
نوسان ساز کریستال با فرکانس پایین (نگاه کنید به صفحه 29) | 0110 |
اسیلاتور کریستال / تشدید کننده سرامیک (نگاه کنید به صفحه 29) | 1000 - 1111 |
رزرو شده است | 0101، 0111 |
برای همه فیوزها "1" به معنی برنامه ریزی نشده در حالی که "0" به معنای برنامه ریزی شده است.
با انتخاب این گزینه ، دستگاه ارسال می شود.
این حالت سازگاری ATtiny15 را انتخاب می کند ، جایی که ساعت سیستم به چهار تقسیم می شود و در نتیجه فرکانس ساعت 1.6 مگاهرتز ایجاد می شود. برای اطلاعات بیشتر ، مراجعه کنید به "نوسان ساز داخلی کالیبره شده" در صفحه 27.
گزینه های مختلف برای هر گزینه ساعت در بخشهای زیر آورده شده است. وقتی CPU از حالت خاموش شدن بیدار می شود ، از منبع ساعت انتخاب شده برای زمان دهی به زمان شروع کار استفاده می شود و قبل از شروع اجرای دستورالعمل ، عملکرد اسیلاتور پایدار را تضمین می کند. هنگامی که CPU از تنظیم مجدد شروع می شود ، یک تأخیر اضافی وجود دارد که اجازه می دهد تا قبل از شروع کار نرمال ، برق به یک سطح پایدار برسد. Watchdog Oscillator برای زمانبندی این قسمت در زمان واقعی از زمان راه اندازی استفاده می شود. تعداد چرخه های نوسانگر WDT که برای هر زمان از وقت استفاده می شود در نشان داده شده است جدول 6-2.
جدول 6-2. تعداد چرخه های نوسانگر نگهبان
تایم اتمام | تعداد چرخه ها |
4 میلی ثانیه | 512 |
64 میلی ثانیه | 8K (8,192) |
ساعت خارجی
برای رانندگی دستگاه از یک منبع ساعت خارجی ، CLKI باید همانطور که در تصویر نشان داده شده است ، رانده شود شکل 6-4. برای اجرای دستگاه روی ساعت خارجی ، فیوزهای CKSEL باید بر روی "00" برنامه ریزی شود.
شکل 6-4. پیکربندی درایو ساعت خارجی
هنگامی که این منبع ساعت انتخاب می شود ، زمانهای شروع توسط فیوزهای SUT تعیین می شود همانطور که در شکل نشان داده شده است جدول 6-3.
جدول 6-3. زمان راه اندازی برای انتخاب ساعت خارجی
SUT [1:0] | زمان راه اندازی از خاموش کردن | تأخیر اضافی از تنظیم مجدد | استفاده توصیه شده |
00 | 6 CK | 14CK | BOD فعال است |
01 | 6 CK | 14CK + 4 میلی ثانیه | قدرت در حال افزایش سریع |
10 | 6 CK | 14CK + 64 میلی ثانیه | به آرامی در حال افزایش قدرت است |
11 | رزرو شده است |
هنگام استفاده از ساعت خارجی ، لازم است از تغییر ناگهانی فرکانس ساعت اعمال شده جلوگیری شود تا عملکرد پایدار MCU تضمین شود. تغییر فرکانس بیش از 2٪ از یک چرخه ساعت به چرخه دیگر می تواند منجر به یک رفتار غیر قابل پیش بینی شود. لازم است اطمینان حاصل شود که MCU در هنگام تغییر چنین فرکانس ساعت در Reset نگه داشته می شود.
توجه داشته باشید که پیش فروش سیستم ساعت می تواند در هنگام اطمینان از عملکرد پایدار ، تغییرات زمان اجرا در فرکانس ساعت داخلی را نیز اعمال کند. رجوع شود به "سیستم پیش فروش ساعت" در صفحه 31 برای جزئیات
ساعت با فرکانس بالا PLL
یک PLL داخلی وجود دارد که نرخ اسمی ساعت 64 مگاهرتز را برای استفاده از Timer / Counter1 محیطی و منبع ساعت سیستم قفل شده در RC Oscillator ارائه می دهد. هنگامی که به عنوان منبع ساعت سیستم انتخاب می شود ، با برنامه نویسی فیوزهای CKSEL به "0001" ، مانند چهار نشان داده شده در جدول 6-4.
جدول 6-4. حالت های عملیاتی ساعت PLL فرکانس بالا
CKSEL [3:0] | فرکانس اسمی |
0001 | 16 مگاهرتز |
هنگامی که این منبع ساعت انتخاب می شود ، زمان شروع به کار توسط فیوزهای SUT تعیین می شود ، همانطور که در شکل نشان داده شده است جدول 6-5.
جدول 6-5. زمان راه اندازی برای ساعت PLL فرکانس بالا
SUT [1:0] | زمان راه اندازی از Power Down | تأخیر اضافی از بازنشانی روشن (VCC = 5.0V) | استفاده توصیه شده |
00 | 14CK + 1K (1024) CK + 4 میلی ثانیه | 4 میلی ثانیه | BOD فعال است |
جدول 6-5. زمان راه اندازی برای ساعت PLL فرکانس بالا
SUT [1:0] | زمان راه اندازی از Power Down | تأخیر اضافی از بازنشانی روشن (VCC = 5.0V) | استفاده توصیه شده |
01 | 14CK + 16K (16384) CK + 4 میلی ثانیه | 4 میلی ثانیه | قدرت در حال افزایش سریع |
10 | 14CK + 1K (1024) CK + 64 میلی ثانیه | 4 میلی ثانیه | به آرامی در حال افزایش قدرت است |
11 | 14CK + 16K (16384) CK + 64 میلی ثانیه | 4 میلی ثانیه | به آرامی در حال افزایش قدرت است |
نوسان ساز داخلی کالیبره شده
به طور پیش فرض ، نوسان ساز داخلی RC یک ساعت تقریبی 8.0 مگاهرتز را ارائه می دهد. هر چند جلدtage و وابسته به دما ، این ساعت می تواند توسط کاربر بسیار دقیق کالیبره شود. دیدن ”محاسبه داخلی اسیلاتور RC کالیبره شده نژادی »در صفحه 164 و "سرعت اسیلاتور داخلی" در صفحه 192 برای جزئیات بیشتر این دستگاه با فیوز CKDIV8 برنامه ریزی شده حمل می شود. دیدن "سیستم پیش فروش ساعت" در صفحه 31 برای جزئیات بیشتر
این ساعت ممکن است با برنامه ریزی فیوزهای CKSEL همانطور که در تصویر نشان داده شده است ، به عنوان ساعت سیستم انتخاب شود جدول 6-6 در صفحه
27. در صورت انتخاب ، بدون اجزای خارجی کار خواهد کرد. در هنگام بازنشانی ، سخت افزار مقدار کالیبراسیون از پیش برنامه ریزی شده را در OSCCAL Register بارگیری می کند و بدین ترتیب RC Oscillator را به طور خودکار کالیبره می کند. دقت این کالیبراسیون به صورت کالیبراسیون کارخانه در نشان داده شده است جدول 21-2 در صفحه 164.
با تغییر ثبت OSCCAL از SW ، نگاه کنید به "OSCCAL - ثبت نام کالیبراسیون اسیلاتور" در صفحه 31، می توان دقت کالیبراسیون بالاتری نسبت به استفاده از کالیبراسیون کارخانه بدست آورد. دقت این کالیبراسیون به صورت کالیبراسیون کاربر در نشان داده شده است جدول 21-2 در صفحه 164.
وقتی از این اسیلاتور به عنوان ساعت تراشه استفاده شود ، Watchdog Oscillator همچنان برای Watchdog Timer و برای Reset Time-out استفاده می شود. برای اطلاعات بیشتر در مورد مقدار کالیبراسیون از پیش برنامه ریزی شده ، به بخش مراجعه کنید "کالی- bration Bytes ”در صفحه 150.
همچنین می توان تنظیم کرد که اسیلاتور داخلی با نوشتن فیوزهای CKSEL روی "6.4" یک ساعت 0011 مگاهرتز را فراهم کند ، همانطور که در تصویر نشان داده شده است جدول 6-6 در زیر این تنظیمات به عنوان حالت سازگاری ATtiny15 خوانده می شود و در نظر گرفته شده است تا مانند ساعت ATtiny6.4 ، منبع ساعت کالیبره شده در 15 مگاهرتز را فراهم کند. در حالت سازگاری ATtiny15 ، PLL از نوسان ساز داخلی با فرکانس 6.4 مگاهرتز برای تولید سیگنال ساعت محیطی 25.6 مگاهرتز برای Timer / Counter1 استفاده می کند (نگاه کنید به ”تایمر / شمارنده 8 بیتی 1 در حالت ATtiny15 »در صفحه 95) توجه داشته باشید که در این حالت عملکرد سیگنال ساعت 6.4 مگاهرتز همیشه به چهار تقسیم می شود و یک ساعت سیستم 1.6 مگاهرتز را ارائه می دهد.
جدول 6-6. حالت های عملیاتی نوسانگر RC کالیبره شده داخلی
CKSEL [3:0] | فرکانس اسمی |
0010(1) | 8.0 مگاهرتز |
0011(2) | 6.4 مگاهرتز |
با انتخاب این گزینه ، دستگاه ارسال می شود.
این تنظیم حالت سازگاری ATtiny15 را انتخاب می کند ، جایی که ساعت سیستم به چهار تقسیم می شود و در نتیجه فرکانس ساعت 1.6 مگاهرتز ایجاد می شود.
هنگامی که نوسانگر داخلی کالیبره شده 8 مگاهرتز به عنوان منبع ساعت انتخاب می شود ، زمانهای راه اندازی توسط فیوزهای SUT تعیین می شود همانطور که در تصویر نشان داده شده است جدول 6-7 زیر
جدول 6-7. زمان راه اندازی برای ساعت نوسانگر RC کالیبره شده داخلی
SUT [1:0] | زمان راه اندازی از خاموش کردن | تأخیر اضافی از تنظیم مجدد (VCC = 5.0V) | استفاده توصیه شده |
00 | 6 CK | 14CK(1) | BOD فعال است |
01 | 6 CK | 14CK + 4 میلی ثانیه | قدرت در حال افزایش سریع |
10(2) | 6 CK | 14CK + 64 میلی ثانیه | به آرامی در حال افزایش قدرت است |
11 | رزرو شده است |
1. اگر فیوز RSTDISBL برنامه ریزی شده باشد ، برای اطمینان از ورود حالت برنامه نویسی ، این زمان شروع به 14CK + 4 میلی ثانیه افزایش می یابد.
2. دستگاه با انتخاب این گزینه ارسال می شود.
در حالت سازگاری ATtiny15 زمان راه اندازی توسط فیوزهای SUT تعیین می شود همانطور که در تصویر نشان داده شده است جدول 6-8 زیر
جدول 6-8. زمان راه اندازی برای ساعت نوسانگر RC کالیبره شده داخلی (در حالت ATtiny15)
SUT [1:0] | زمان راه اندازی از خاموش کردن | تأخیر اضافی از تنظیم مجدد (VCC = 5.0V) | استفاده توصیه شده |
00 | 6 CK | 14CK + 64 میلی ثانیه | |
01 | 6 CK | 14CK + 64 میلی ثانیه | |
10 | 6 CK | 14CK + 4 میلی ثانیه | |
11 | 1 CK | 14CK(1) |
توجه: اگر فیوز RSTDISBL برنامه ریزی شده باشد، این زمان راه اندازی به 14CK + 4 میلی ثانیه افزایش می یابد تا اطمینان حاصل شود که می توانید حالت برنامه نویسی را وارد کنید.
به طور خلاصه ، اطلاعات بیشتر در مورد حالت سازگاری ATtiny15 را می توان در بخشها یافت "بندر B (PB5: PB0)" روشن است صفحه 2, "PLL داخلی در حالت سازگاری ATtiny15" در صفحه 24, "تایمر / شمارنده 8 بیتی در حالت ATtiny1" روشن است صفحه 95, "محدودیت های رفع اشکال WIRE" در صفحه 140, ”کالیبراسیون بایت” در صفحه 150 و در جدول "پیش فروش ساعت را انتخاب کنید »در صفحه 33.
اسیلاتور داخلی 128 کیلوهرتز
نوسان ساز داخلی 128 کیلوهرتز یک نوسان ساز کم توان است که کلاک 128 کیلوهرتز را ارائه می دهد. فرکانس اسمی در 3 ولت و 25 درجه سانتیگراد است. این ساعت را می توان با برنامه ریزی فیوزهای CKSEL روی "0100" به عنوان ساعت سیستم انتخاب کرد.
هنگامی که این منبع ساعت انتخاب می شود ، زمانهای شروع توسط فیوزهای SUT تعیین می شود همانطور که در شکل نشان داده شده است جدول 6-9.
جدول 6-9. زمان راه اندازی نوسان ساز داخلی 128 کیلوهرتز
SUT [1:0] | زمان راه اندازی از خاموش کردن | تأخیر اضافی از تنظیم مجدد | استفاده توصیه شده |
00 | 6 CK | 14CK(1) | BOD فعال است |
01 | 6 CK | 14CK + 4 میلی ثانیه | قدرت در حال افزایش سریع |
10 | 6 CK | 14CK + 64 میلی ثانیه | به آرامی در حال افزایش قدرت است |
11 | رزرو شده است |
توجه: اگر فیوز RSTDISBL برنامه ریزی شده باشد، این زمان راه اندازی به 14CK + 4 میلی ثانیه افزایش می یابد تا اطمینان حاصل شود که می توانید حالت برنامه نویسی را وارد کنید.
نوسان ساز کریستال با فرکانس پایین
برای استفاده از کریستال ساعت مچی 32.768 کیلوهرتز به عنوان منبع ساعت دستگاه ، باید اسیلاتور بلور فرکانس پایین را با تنظیم فیوزهای CKSEL روی "0110" انتخاب کنید. کریستال باید مطابق شکل نشان داده شود وصل شود شکل 6-5. برای یافتن ظرفیت بار مناسب برای یک کریستال 32.768 کیلوهرتز ، لطفا با صفحه داده سازنده مشورت کنید.
هنگامی که این اسیلاتور انتخاب می شود ، زمان شروع به کار توسط فیوزهای SUT تعیین می شود ، همانطور که در شکل نشان داده شده است جدول 6-10.
جدول 6-10. زمان راه اندازی برای انتخاب ساعت نوسانگر کریستال فرکانس پایین
SUT [1:0] | زمان راه اندازی از Power Down | تأخیر اضافی از تنظیم مجدد (VCC = 5.0V) | استفاده توصیه شده |
00 | 1K (1024) CK(1) | 4 میلی ثانیه | افزایش سریع قدرت یا BOD فعال است |
01 | 1K (1024) CK(1) | 64 میلی ثانیه | به آرامی در حال افزایش قدرت است |
10 | 32K (32768) CK | 64 میلی ثانیه | فرکانس پایدار در هنگام راه اندازی |
11 | رزرو شده است |
توجه: این گزینه ها باید فقط در صورتی استفاده شوند که ثبات فرکانس در راه اندازی مهم نباشد.
اسیلاتور کریستال با فرکانس پایین یک ظرفیت بار داخلی را فراهم می کند ، نگاه کنید به جدول 6-11 در هر پین TOSC.
جدول 6-11. ظرفیت نوسان ساز کریستالی فرکانس پایین
دستگاه | 32 کیلوهرتز اسکار نوع | کلاه (Xtal1 / Tosc1) | کلاه (Xtal2 / Tosc2) |
ATtiny25 / 45/85 | سیستم اسک | 16 pF | 6 pF |
اسیلاتور کریستال / تشدید کننده سرامیک
XTAL1 و XTAL2 به ترتیب ورودی و خروجی معکوس هستند amplifier که می توان آن را برای استفاده به عنوان نوسان ساز روی تراشه پیکربندی کرد ، همانطور که در تصویر نشان داده شده است شکل 6-5. ممکن است از بلور کوارتز یا تشدید کننده سرامیک استفاده شود.
C1 و C2 همیشه باید برای هر دو کریستال و رزوناتور برابر باشند. مقدار بهینه خازن ها به کریستال یا رزوناتور در حال استفاده، مقدار خازن سرگردان و نویز الکترومغناطیسی محیط بستگی دارد. برخی از دستورالعمل های اولیه برای انتخاب خازن ها برای استفاده با کریستال ها ارائه شده است جدول 6-12 در زیر برای تشدید کننده های سرامیکی ، باید از مقادیر خازن داده شده توسط سازنده استفاده شود.
جدول 6-12. حالت های عملیاتی نوسانگر کریستالی
CKSEL [3:1] | محدوده فرکانس (مگاهرتز) | محدوده پیشنهادی برای خازنهای C1 و C2 برای استفاده با بلورها (pF) |
100(1) | 0.4 - 0.9 | – |
101 | 0.9 - 3.0 | 12 - 22 |
110 | 3.0 - 8.0 | 12 - 22 |
111 | 8.0 – | 12 - 22 |
نکات: این گزینه نباید با کریستال ها استفاده شود، فقط با تشدید کننده های سرامیکی.
اسیلاتور می تواند در سه حالت مختلف کار کند ، هر یک برای یک محدوده فرکانس خاص بهینه شده است. همانطور که در شکل نشان داده شده است ، حالت کار توسط فیوزهای CKSEL [3: 1] انتخاب می شود جدول 6-12.
فیوز CKSEL0 همراه با فیوزهای SUT [1: 0] زمان شروع را همانطور که در تصویر نشان داده شده است انتخاب می کند جدول 6-13.
جدول 6-13. زمان راه اندازی برای انتخاب ساعت نوسان ساز کریستالی
CKSEL0 | SUT [1:0] | زمان راه اندازی از خاموش کردن | تأخیر اضافی از تنظیم مجدد | استفاده توصیه شده |
0 | 00 | 258 CK(1) | 14CK + 4 میلی ثانیه | تشدید کننده سرامیک ، قدرت در حال افزایش سریع |
0 | 01 | 258 CK(1) | 14CK + 64 میلی ثانیه | تشدید کننده سرامیک ، قدرت به آرامی در حال افزایش است |
0 | 10 | 1K (1024) CK(2) | 14CK | تشدید کننده سرامیک ، BOD فعال است |
0 | 11 | 1K (1024) CK(2) | 14CK + 4 میلی ثانیه | تشدید کننده سرامیک ، قدرت در حال افزایش سریع |
1 | 00 | 1K (1024) CK(2) | 14CK + 64 میلی ثانیه | تشدید کننده سرامیک ، قدرت به آرامی در حال افزایش است |
1 | 01 | 16K (16384) CK | 14CK | اسیلاتور کریستال ، BOD فعال است |
1 | 10 | 16K (16384) CK | 14CK + 4 میلی ثانیه | اسیلاتور کریستال ، قدرت در حال افزایش سریع |
1 | 11 | 16K (16384) CK | 14CK + 64 میلی ثانیه | اسیلاتور کریستال ، به آرامی در حال افزایش قدرت است |
یادداشت ها
این گزینه ها فقط باید در مواقعی که نزدیک به حداکثر فرکانس دستگاه کار نمی کنند ، استفاده شوند و فقط درصورتی که ثبات فرکانس هنگام راه اندازی برای برنامه مهم نباشد. این گزینه ها برای بلورها مناسب نیستند.
این گزینه ها برای استفاده با تشدید کننده های سرامیکی در نظر گرفته شده و ثبات فرکانس را در هنگام راه اندازی تضمین می کنند. هنگامی که نزدیک به حداکثر فرکانس دستگاه کار نمی کنند ، می توان از آنها با کریستال استفاده کرد و اگر ثبات فرکانس هنگام راه اندازی برای برنامه مهم نیست.
منبع ساعت پیش فرض
دستگاه با CKSEL = "0010" ، SUT = "10" و CKDIV8 برنامه ریزی شده ارسال می شود. بنابراین تنظیم پیش فرض منبع ساعت ، نوسان ساز داخلی RC با فرکانس 8 مگاهرتز با طولانی ترین زمان راه اندازی و تنظیم اولیه ساعت سیستم 8 ، و در نتیجه کلاک سیستم 1.0 مگاهرتز است. این تنظیم پیش فرض تضمین می کند که همه کاربران می توانند تنظیمات منبع ساعت مورد نظر خود را با استفاده از In-System یا High-vol انجام دهندtagبرنامه نویس e.
پیش فروش کننده ساعت سیستم
با تنظیم ساعت می توان ساعت سیستم ATtiny25 / 45/85 را تقسیم کرد ”CLKPR - ثبت نام مقیاس ساعت” در صفحه 32. از این ویژگی می توان برای کاهش مصرف برق در مواقعی که نیاز به توان پردازشی کم است استفاده کرد. این را می توان با همه گزینه های منبع ساعت استفاده کرد و بر فرکانس ساعت CPU و تمام تجهیزات جانبی همزمان تأثیر می گذارد. clkI/O، clkADC، clkCPU و clkFLASH بر اساس یک ضریب تقسیم می شوند که در شکل نشان داده شده است. جدول 6-15 در صفحه 33.
زمان تعویض
هنگام جابجایی بین تنظیمات پیش فروش ، System Clock Prescaler اطمینان حاصل می کند که هیچ خطایی در سیستم ساعت رخ نمی دهد و هیچ فرکانس میانی بالاتر از فرکانس ساعت مربوط به تنظیم قبلی و یا فرکانس ساعت مربوط به تنظیم جدید نیست.
شمارنده موجی که پیش فروش را اجرا می کند با فرکانس ساعت تقسیم نشده کار می کند ، که ممکن است سریعتر از فرکانس ساعت پردازنده باشد. از این رو ، تعیین وضعیت نسخه پیشگیری امکان پذیر نیست - حتی اگر قابل خواندن باشد ، و نمی توان دقیقاً مدت زمان لازم برای تغییر از یک تقسیم ساعت به بخش دیگر را پیش بینی کرد.
از زمان نوشتن مقادیر CLKPS ، قبل از اینکه فرکانس ساعت جدید فعال شود ، بین T1 + T2 و T1 + 2 * T2 طول می کشد. در این فاصله ، 2 لبه ساعت فعال تولید می شود. در اینجا ، T1 دوره ساعت قبلی است و T2 دوره مربوط به تنظیم جدید پیش فروش است.
بافر خروجی ساعت
دستگاه می تواند ساعت سیستم را روی پین CLKO (در صورت عدم استفاده به عنوان پین XTAL2) خروجی دهد. برای فعال کردن خروجی ، فیوز CKOUT باید برنامه ریزی شود. این حالت زمانی مناسب است که از ساعت تراشه برای هدایت مدارهای دیگر روی سیستم استفاده شود. توجه داشته باشید که هنگام تنظیم مجدد ساعت خروجی نخواهد داشت و هنگام برنامه ریزی فیوز عملکرد عادی پین ورودی / خروجی لغو می شود. نوسانگر داخلی RC ، نوسانگر WDT ، PLL و ساعت خارجی (CLKI) را می توان هنگام خروج ساعت روی CLKO انتخاب کرد. از اسیلاتورهای کریستالی (XTAL1، XTAL2) نمی توان برای خروجی ساعت در CLKO استفاده کرد. اگر از System Clock Prescaler استفاده شود ، ساعت تقسیم شده سیستم است که خارج می شود.
ثبت نام
OSCCAL - ثبت نام کالیبراسیون اسیلاتور
بیت | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x31 | CAL7 | CAL6 | CAL5 | CAL4 | CAL3 | CAL2 | CAL1 | CAL0 | OSCCAL |
بخوان / بنویس | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
بیت 7: 0 - CAL [7: 0]: مقدار کالیبراسیون نوسان ساز
رجیستر کالیبراسیون اوسیلاتور برای برش نوسان ساز RC داخلی کالیبره شده جهت حذف تغییرات فرایند از فرکانس نوسان ساز استفاده می شود. در هنگام تنظیم مجدد تراشه ، یک مقدار کالیبراسیون از پیش برنامه ریزی شده به طور خودکار در این رجیستر نوشته می شود ، و به فرکانس کالیبره شده Factory همانطور که در جدول 21-2 در صفحه 164. نرم افزار کاربردی می تواند با ثبت این رجیستر فرکانس نوسان ساز را تغییر دهد. اسیلاتور را می توان با فرکانس های مشخص شده در کالیبره کرد جدول 21-2 در صفحه 164. کالیبراسیون خارج از آن محدوده تضمین شده نیست.
توجه داشته باشید که این اسیلاتور برای تعیین زمان دسترسی EEPROM و Flash به کار می رود ، و بر این زمان نوشتن تأثیر می گذارد. اگر EEPROM یا Flash نوشته شده است ، بیش از 8.8 مگاهرتز کالیبره نکنید. در غیر این صورت ، نوشتن EEPROM یا Flash ممکن است خراب شود.
بیت CAL7 دامنه عملکرد اسیلاتور را تعیین می کند. تنظیم این بیت روی 0 کمترین دامنه فرکانس را می دهد ، تنظیم این بیت روی 1 بالاترین دامنه فرکانس را می دهد. دو دامنه فرکانس با هم همپوشانی دارند ، به عبارت دیگر یک تنظیم از OSCCAL = 0x7F فرکانس بالاتر از OSCCAL = 0x80 را می دهد.
بیت های CAL [6: 0] برای تنظیم فرکانس در محدوده انتخاب شده استفاده می شوند. تنظیم 0x00 کمترین فرکانس را در آن محدوده و تنظیم 0x7F بالاترین فرکانس را در محدوده ارائه می دهد.
برای اطمینان از عملکرد پایدار MCU ، مقدار کالیبراسیون باید به مقدار جزئی تغییر کند. تغییر فرکانس بیش از 2٪ از یک چرخه به چرخه دیگر می تواند منجر به یک رفتار غیرقابل پیش بینی شود. تغییرات در OSCCAL برای هر کالیبراسیون نباید بیش از 0x20 باشد. لازم است اطمینان حاصل شود که MCU در هنگام تغییر چنین فرکانس ساعت در Reset نگه داشته می شود
جدول 6-14. محدوده فرکانس نوسان ساز داخلی RC
مقدار OSCCAL | کمترین فرکانس معمولی با توجه به فرکانس اسمی | بالاترین فرکانس معمولی با توجه به فرکانس اسمی |
0x00 | 50% | 100% |
0x3F | 75% | 150% |
0x7F | 100% | 200% |
CLKPR - ثبت نام ساعت پیش فروش
بیت | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x26 | CLKPCE | – | – | – | CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | CLKPR |
بخوان / بنویس | R/W | R | R | R | R/W | R/W | R/W | R/W |
مقدار اولیه 0 0 0 0 مشاهده توضیحات بیت
بیت 7 - CLKPCE: تغییر پیش فروش ساعت فعال است
بیت CLKPCE باید در منطق یک نوشته شود تا بتواند بیت های CLKPS را تغییر دهد. بیت CLKPCE فقط وقتی به روز می شود که بیت های دیگر در CLKPR بصورت ساده صفر نوشته شوند. CLKPCE پس از نوشتن یا نوشتن بیت های CLKPS توسط چهار چرخه پاک می شود. بازنویسی بیت CLKPCE در این بازه زمانی نه باعث طولانی شدن زمان می شود و نه بیت CLKPCE پاک نمی شود.
بیت 6: 4 - رز: بیت های اختصاصی
این بیت ها بیت های رزرو شده در ATtiny25 / 45/85 هستند و همیشه صفر خواهند بود.
بیت های 3: 0 - CLKPS [3: 0]: دستگاه پیش فروش ساعت بیت های 3 - 0 را انتخاب کنید
این بیت ها عامل تقسیم بین منبع ساعت انتخاب شده و ساعت داخلی سیستم را تعریف می کنند. این بیت ها را می توان زمان اجرا نوشت تا فرکانس ساعت را متناسب با نیازهای برنامه تغییر دهد. همانطور که تقسیم کننده ورودی ساعت اصلی را به MCU تقسیم می کند ، هنگام استفاده از یک عامل تقسیم ، سرعت تمام لوازم جانبی همزمان کاهش می یابد. عوامل تقسیم در جدول 6-15.
برای جلوگیری از تغییرات غیر عمدی فرکانس ساعت ، برای تغییر بیت های CLKPS باید یک روش نوشتن خاص را دنبال کنید:
بیت Clock Prescaler Change Enable (CLKPCE) را روی یک و بیت های دیگر را در CLKPR صفر بنویسید.
در چهار چرخه ، مقدار مورد نظر را برای CLKPS بنویسید در حالی که یک صفر را روی CLKPCE می نویسید.
هنگام اطمینان از قطع نشدن روش نوشتن ، وقفه ها باید غیرفعال شوند.
فیوز CKDIV8 مقدار اولیه بیت های CLKPS را تعیین می کند. اگر CKDIV8 برنامه ریزی نشده باشد، بیت های CLKPS به "0000" بازنشانی می شوند. اگر CKDIV8 برنامهریزی شده باشد، بیتهای CLKPS به "0011" بازنشانی میشوند که ضریب تقسیم هشت را در هنگام راهاندازی میدهد. اگر منبع ساعت انتخابی فرکانس بالاتری از حداکثر فرکانس دستگاه در شرایط فعلی داشته باشد، باید از این ویژگی استفاده کرد. توجه داشته باشید که بدون توجه به تنظیم فیوز CKDIV8 می توان هر مقداری را روی بیت های CLKPS نوشت. نرم افزار برنامه باید اطمینان حاصل کند که ضریب تقسیم کافی است
انتخاب می شود اگر منبع ساعت انتخاب شده دارای فرکانس بالاتر از حداکثر فرکانس دستگاه در شرایط فعلی کار باشد. این دستگاه با فیوز CKDIV8 برنامه ریزی شده حمل می شود.
جدول 6-15. انتخاب پیش مقیاس کننده ساعت
CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | عامل تقسیم ساعت |
0 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 1 | 2 |
0 | 0 | 1 | 0 | 4 |
0 | 0 | 1 | 1 | 8 |
0 | 1 | 0 | 0 | 16 |
0 | 1 | 0 | 1 | 32 |
0 | 1 | 1 | 0 | 64 |
0 | 1 | 1 | 1 | 128 |
1 | 0 | 0 | 0 | 256 |
1 | 0 | 0 | 1 | رزرو شده است |
1 | 0 | 1 | 0 | رزرو شده است |
1 | 0 | 1 | 1 | رزرو شده است |
1 | 1 | 0 | 0 | رزرو شده است |
1 | 1 | 0 | 1 | رزرو شده است |
1 | 1 | 1 | 0 | رزرو شده است |
1 | 1 | 1 | 1 | رزرو شده است |
توجه: پیش مقیاس کننده در حالت سازگاری ATtiny15 غیرفعال است و نه نوشتن در CLKPR و نه برنامه ریزی فیوز CKDIV8 هیچ تأثیری بر ساعت سیستم (که همیشه 1.6 مگاهرتز خواهد بود) ندارد.
مدیریت انرژی و حالت خواب
عملکرد بالا و کارآیی کد پیشرو در صنعت ، میکروکنترلرهای AVR را به گزینه ای ایده آل برای کاربردهای کم مصرف تبدیل می کند. علاوه بر این ، حالت های خواب برنامه را قادر می سازد تا ماژولهای استفاده نشده را در MCU خاموش کند و در نتیجه در مصرف انرژی صرفه جویی می کند. AVR حالت های مختلف خواب را فراهم می کند که به کاربر امکان می دهد مصرف برق را متناسب با نیازهای برنامه تنظیم کند.
حالت های خواب
شکل 6-1 در صفحه 23 سیستم های مختلف ساعت و توزیع آنها را در ATtiny25 / 45/85 ارائه می دهد. این رقم در انتخاب حالت خواب مناسب مفید است. جدول 7-1 حالت های مختلف خواب و منابع بیداری آنها را نشان می دهد.
جدول 7-1. دامنههای ساعت فعال و منابع بیداری در حالتهای مختلف خواب
دامنه های ساعت فعال | اسیلاتورها | منابع بیداری | ||||||||||
حالت خواب | clkCPU | clkFLASH | clkIO | clkADC | clkPCK | منبع اصلی ساعت فعال است | INT0 و تغییر پین | SPM / EEPROM
آماده است |
شرایط شروع USI |
ADC | ورودی/خروجی دیگر | سگ نگهبان قطع کنید |
بیکار | X | X | X | X | X | X | X | X | X | X | ||
کاهش صدای ADC | X | X | X(1) | X | X | X | X | |||||
خاموش شدن برق | X(1) | X | X |
توجه: برای INT0، فقط وقفه سطح.
برای ورود به هر یک از سه حالت خواب ، باید بیت SE در MCUCR در منطق یک نوشته شود و دستورالعمل SLEEP اجرا شود. بیت های SM [1: 0] در MCUCR Register کدام حالت خواب (Idle ، ADC Noise Reduction یا Power-down) را با دستورالعمل SLEEP فعال می کند. دیدن جدول 7-2 برای خلاصه
اگر وقفه ای فعال در حالی رخ دهد که MCU در حالت خواب باشد ، MCU بیدار می شود. MCU سپس برای چهار چرخه علاوه بر زمان راه اندازی متوقف می شود ، روال وقفه را اجرا می کند و اجرای دستورالعمل های SLEEP را از سر می گیرد. مطالب ثبت نام File و SRAM وقتی دستگاه از خواب بیدار می شود تغییر نمی کند. اگر در حالت خواب تنظیم مجدد انجام شود ، MCU بیدار می شود و از Reset Vector اجرا می شود.
توجه: اگر یک وقفه راهاندازی سطح برای بیدار کردن استفاده شود، سطح تغییر یافته باید برای مدتی نگه داشته شود تا MCU بیدار شود (و برای اینکه MCU وارد روال سرویس وقفه شود). دیدن "وقفه های خارجی" در صفحه 49 برای جزئیات
حالت آماده به کار
هنگامی که بیتهای SM[1:0] روی 00 نوشته میشوند، دستورالعمل SLEEP باعث میشود که MCU وارد حالت Idle شود، CPU متوقف میشود اما به Analog Comparator، ADC، USI، Timer/Counter، Watchdog و سیستم وقفه اجازه میدهد به کار ادامه دهند. خوردن این حالت خواب اساساً clkCPU و clkFLASH را متوقف میکند، در حالی که به ساعتهای دیگر اجازه میدهد کار کنند.
حالت آماده به کار MCU را قادر می سازد تا از وقفه های ایجاد شده خارجی و همچنین وقفه های داخلی مانند Timer Overflow بیدار شود. اگر بیدار شدن از وقفه Analog Comparator لازم نباشد ، با تنظیم بیت ACD در می توانید Analog Comparator را روشن کنید ”ACSR - کنترل مقایسه و مقایسه وضعیت آنالوگ” در صفحه 120. این باعث کاهش مصرف برق در حالت آماده به کار می شود. اگر ADC فعال باشد ، با وارد شدن این حالت ، تبدیل به طور خودکار شروع می شود.
حالت کاهش صدا ADC
وقتی بیتهای SM[1:0] روی 01 نوشته میشوند، دستورالعمل SLEEP باعث میشود که MCU وارد حالت کاهش نویز ADC شود، CPU را متوقف میکند اما به ADC، وقفههای خارجی و Watchdog اجازه میدهد به کار خود ادامه دهند (در صورت فعال بودن). این حالت خواب، clkI/O، clkCPU و clkFLASH را متوقف میکند، در حالی که به ساعتهای دیگر اجازه میدهد کار کنند.
این امر باعث بهبود محیط نویز برای ADC می شود و امکان اندازه گیری با وضوح بالاتر را دارد. اگر ADC فعال باشد ، با وارد شدن این حالت ، تبدیل به طور خودکار شروع می شود. به غیر از وقفه ADC Conversion Complete ، فقط یک تنظیم مجدد خارجی ، تنظیم مجدد دیده بان ، تنظیم مجدد قهوه ای ، وقفه آماده SPM / EEPROM ، وقفه سطح خارجی در INT0 یا وقفه تغییر پین می تواند MCU را از ADC Noise Reduction کاهش دهد حالت
حالت خاموش کردن
وقتی بیت های SM [1: 0] روی 10 نوشته می شوند ، دستورالعمل SLEEP باعث می شود MCU وارد حالت خاموش شود. در این حالت ، اسیلاتور متوقف می شود ، در حالی که وقفه های خارجی قطع می شود ، USI شروع به شناسایی شرایط می کند و Watchdog به کار خود ادامه می دهد (در صورت فعال بودن). فقط یک تنظیم مجدد خارجی ، یک تنظیم مجدد دیده بان ، یک تنظیم مجدد قهوه ای ، وقفه شروع USI ، وقفه سطح خارجی در INT0 یا وقفه تغییر پین می تواند MCU را بیدار کند. این حالت خواب تمام ساعتهای تولید شده را متوقف می کند ، و فقط اجازه کار ماژول های ناهمزمان را می دهد.
نرم افزار BOD را غیرفعال کنید
هنگامی که ردیاب قهوه ای (BOD) توسط فیوزهای BODLEVEL فعال می شود (مراجعه کنید جدول 20-4 در صفحه 148، BOD به طور فعال بر حجم عرضه نظارت می کندtage در طول دوره خواب در برخی از دستگاهها می توان با غیرفعال کردن BOD توسط نرم افزار در حالت خواب Power-Down ، در مصرف برق صرفه جویی کرد. مصرف انرژی حالت خواب در همان سطح زمانی است که BOD به طور کلی توسط فیوزها غیرفعال می شود.
اگر BOD توسط نرم افزار غیرفعال شود، عملکرد BOD بلافاصله پس از وارد شدن به حالت خواب خاموش می شود. پس از بیدار شدن از خواب، BOD دوباره به طور خودکار فعال می شود. در صورتی که سطح VCC در طول دوره خواب کاهش یافته باشد، عملکرد ایمن را تضمین می کند.
وقتی BOD غیرفعال شد ، زمان بیدار شدن از حالت خواب همان زمان بیدار شدن از حالت RESET خواهد بود. کاربر باید بصورت دستی زمان بیدار شدن را طوری پیکربندی کند که مرجع bandgap زمان شروع داشته باشد و BOD قبل از ادامه اجرای کد MCU به درستی کار کند. فیوزهای SUT [1: 0] و CKSEL [3: 0] را در جدول مشاهده کنید "Fuse Low Byte" در صفحه 149
BOD غیرفعال توسط کمی BODS (BOD Sleep) کنترل MCU کنترل می شود ، نگاه کنید به "MCUCR - کنترل MCU ثبت نام کنید »در صفحه 37. نوشتن این بیت برای یکی باعث خاموش شدن BOD در Power-Down می شود ، در حالی که نوشتن صفر BOD را فعال نگه می دارد. تنظیمات پیش فرض صفر است ، یعنی BOD فعال است.
نوشتن در بیت BODS توسط یک توالی زمانبندی شده و یک بیت فعال کنترل می شود ، ببینید "MCUCR - ثبت کنترل MCU- ter ”در صفحه 37.
محدودیت ها
قابلیت غیر فعال کردن BOD فقط در دستگاه های زیر اجرا شده است:
ATtiny25 ، نسخه E ، و جدیدتر
ATtiny45 ، نسخه D ، و جدیدتر
ATtiny85 ، نسخه C ، و نسخه جدیدتر
ویرایش ها روی بسته دستگاه علامت گذاری شده اند و می توانند به صورت زیر قرار بگیرند:
پایین قسمت بسته های 8P3 و 8S2
سمت بالای بسته 20M1
ثبت نام کاهش برق
ثبت نام کاهش برق (PRR) ، مراجعه کنید ”PRR - ثبت نام کاهش برق” در صفحه 38، روشی را برای کاهش مصرف برق با متوقف کردن ساعت به سایر لوازم جانبی ارائه می دهد. وضعیت فعلی محیط یخ زده است و ثبت کننده های ورودی / خروجی قابل خواندن یا نوشتن نیستند. منابعی که در هنگام متوقف کردن ساعت توسط دستگاه جانبی استفاده می شود ، همچنان اشغال خواهد شد ، بنابراین در بیشتر موارد قبل از توقف ساعت ، دستگاه جانبی باید غیرفعال شود. بیدار کردن یک ماژول ، که با پاک کردن بیت در PRR انجام می شود ، ماژول را در همان حالت قبل از خاموش شدن قرار می دهد.
خاموش کردن ماژول را می توان در حالت آماده به کار و حالت فعال استفاده کرد تا مصرف کلی انرژی به طور قابل توجهی کاهش یابد. در سایر حالت های خواب ، ساعت از قبل متوقف شده است. دیدن "منبع تغذیه ماژول های ورودی / خروجی" در صفحه 177 برای سابقamples
به حداقل رساندن مصرف برق
هنگام تلاش برای به حداقل رساندن مصرف برق در یک سیستم کنترل شده AVR ، چندین مسئله باید در نظر گرفته شود. به طور کلی ، باید از حالت خواب تا حد ممکن استفاده شود و حالت خواب نیز باید طوری انتخاب شود که تا حد ممکن عملکرد دستگاه کار کند. تمام عملکردهایی که نیازی نیست باید غیرفعال شوند. به طور خاص ، ممکن است ماژول های زیر هنگام دستیابی به کمترین میزان مصرف انرژی احتمالی مورد توجه قرار گیرند.
مبدل آنالوگ به دیجیتال
در صورت فعال بودن ، ADC در همه حالت های خواب فعال می شود. برای صرفه جویی در مصرف انرژی ، قبل از ورود به هر حالت خواب ، باید ADC غیرفعال شود. هنگامی که ADC خاموش و دوباره روشن شود ، تبدیل بعدی یک تبدیل طولانی است. رجوع شود به ”مبدل آنالوگ به دیجیتال” در صفحه 122 برای جزئیات بیشتر در مورد عملکرد ADC.
مقایسه کننده آنالوگ
هنگام ورود به حالت آماده به کار ، اگر از Analog Comparator استفاده نمی شود باید غیرفعال شود. هنگام ورود به حالت کاهش نویز ADC ، مقایسه کننده آنالوگ باید غیرفعال باشد. در حالت های دیگر خواب ، مقایسه کننده آنالوگ به طور خودکار غیرفعال می شود. اما اگر Analog Comparator برای استفاده از Volume داخلی تنظیم شده باشدtage مرجع به عنوان ورودی، مقایسه کننده آنالوگ باید در همه حالت های خواب غیرفعال شود. در غیر این صورت، جلد داخلیtage مستقل از حالت خواب فعال می شود. رجوع شود به ”مقایسه کننده آنالوگ” در صفحه 119 برای جزئیات بیشتر در مورد نحوه پیکربندی مقایسه کننده آنالوگ.
ردیاب قهوه ای
اگر در برنامه نیازی به ردیاب قهوه ای نیست ، این ماژول باید خاموش باشد. اگر ردیاب قهوه ای توسط فیوزهای BODLEVEL فعال باشد ، در همه حالت های خواب فعال خواهد بود و از این رو ، همیشه برق مصرف می شود. در حالت خواب عمیق تر ، این امر به طور قابل توجهی به کل مصرف فعلی کمک می کند. دیدن "Brown-out Detec- tion ”در صفحه 41 و "غیر فعال کردن نرم افزار BOD" در صفحه 35 برای جزئیات بیشتر در مورد نحوه پیکربندی ردیاب Brown-out.
جلد داخلیtage مرجع
جلد داخلیtagE مرجع در صورت نیاز توسط Brown-out Detection، مقایسه کننده آنالوگ یا ADC فعال می شود. اگر این ماژول ها همانطور که در قسمت های بالا توضیح داده شده است غیرفعال شوند ، حجم داخلیtagمرجع e غیرفعال می شود و مصرف برق نخواهد داشت. وقتی دوباره روشن شد ، کاربر باید اجازه دهد که مرجع قبل از استفاده از خروجی شروع به کار کند. اگر مرجع در حالت خواب روشن باشد ، خروجی می تواند بلافاصله استفاده شود. رجوع شود به "جلد داخلیtage Reference »در صفحه 42 برای جزئیات بیشتر در مورد زمان راه اندازی.
تایمر نگهبان
اگر در برنامه نیازی به تایمر Watchdog نیست ، این ماژول باید خاموش باشد. اگر Watchdog Timer فعال باشد ، در همه حالت خواب فعال است و از این رو ، همیشه برق مصرف می شود. در حالت خواب عمیق تر ، این امر به طور قابل توجهی به کل مصرف فعلی کمک می کند. رجوع شود به "تایمر نگهبان" در صفحه 42 برای جزئیات بیشتر در مورد نحوه پیکربندی Watchdog Timer.
پین پورت
هنگام وارد شدن به حالت خواب، تمام پین های پورت باید طوری پیکربندی شوند که از حداقل توان استفاده کنند. مهمترین چیز این است که اطمینان حاصل شود که هیچ پینی بارهای مقاومتی را هدایت نمی کند. در حالتهای خواب که هم ساعت I/O (clkI/O) و هم ساعت ADC (clkADC) متوقف میشوند، بافرهای ورودی دستگاه غیرفعال میشوند. این تضمین می کند که هیچ برقی مصرف نمی شود
توسط منطق ورودی در صورت عدم نیاز در برخی موارد ، منطق ورودی برای تشخیص شرایط بیدار شدن مورد نیاز است و
سپس فعال خواهد شد. رجوع به بخش شود “حالت ورودی فعال و خواب دیجیتال” در صفحه 57 برای جزئیات فعال شدن پین ها. اگر بافر ورودی فعال باشد و سیگنال ورودی شناور بماند یا دارای سطح سیگنال آنالوگ نزدیک به VCC/2 باشد، بافر ورودی از توان بیش از حد استفاده خواهد کرد.
برای پین های ورودی آنالوگ، بافر ورودی دیجیتال باید همیشه غیرفعال باشد. یک سطح سیگنال آنالوگ نزدیک به VCC/2 در یک پایه ورودی می تواند جریان قابل توجهی را حتی در حالت فعال ایجاد کند. بافرهای ورودی دیجیتال را می توان با نوشتن در Digital Input Disable Register (DIDR0) غیرفعال کرد. رجوع شود به "DIDR0 - ورودی دیجیتال غیر فعال کردن ثبت نام 0" در صفحه 121 برای جزئیات
ثبت نام
MCUCR - ثبت نام کنترل MCU
MCU Control Register شامل بیت های کنترل برای مدیریت نیرو است.
بیت | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | هیئت مدیره | ISC01 | ISC00 | MCUCR |
بخوان / بنویس | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
ارزش اولیه | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
بیت 7 - تابلوها: BOD Sleep
قابلیت غیر فعال کردن BOD فقط در برخی از دستگاه ها موجود است. دیدن "محدودیت ها" در صفحه 36.
به منظور غیرفعال کردن BOD در هنگام خواب (نگاه کنید به جدول 7-1 در صفحه 34) بیت BODS باید با منطق یک نوشته شود. این توسط یک توالی زمانبندی شده و بیت فعال ، BODSE در MCUCR کنترل می شود. اول ، هر دو BODS و BODSE باید روی یک تنظیم شوند. دوم ، در چهار چرخه ساعت ، BODS باید روی یک و BODSE روی صفر تنظیم شود. بیت BODS پس از تنظیم سه دور ساعت فعال است. برای خاموش کردن BOD برای حالت خواب واقعی ، باید یک دستورالعمل خواب در زمان فعال بودن BODS اجرا شود. بیت BODS پس از سه چرخش ساعت به طور خودکار پاک می شود.
در دستگاههایی که Sleeping BOD اجرا نشده است ، این بیت استفاده نشده و همیشه صفر است.
بیت 5 - SE: خواب فعال است
بیت SE باید در منطق یک نوشته شود تا وقتی دستور SLEEP اجرا می شود MCU وارد حالت خواب شود. برای جلوگیری از ورود MCU به حالت خواب مگر اینکه هدف برنامه نویس باشد، توصیه می شود بیت Sleep Enable (SE) را درست قبل از اجرای دستور SLEEP روی یک بنویسید و بلافاصله پس از بیدار شدن آن را پاک کنید.
بیت 4: 3 - SM [1: 0]: حالت خواب بیت های 1 و 0 را انتخاب کنید
این بیت ها بین سه حالت خواب موجود انتخاب می شوند همانطور که در تصویر نشان داده شده است جدول 7-2.
جدول 7-2. حالت خواب را انتخاب کنید
SM1 | SM0 | حالت خواب |
0 | 0 | بیکار |
0 | 1 | کاهش صدای ADC |
1 | 0 | خاموش شدن برق |
1 | 1 | رزرو شده است |
بیت 2 - BODSE: BOD خواب را فعال می کند
قابلیت غیر فعال کردن BOD فقط در برخی از دستگاه ها موجود است. دیدن "محدودیت ها" در صفحه 36.
همانطور که در توضیحات بیت BODS توضیح داده شده است ، بیت BODSE تنظیم بیت کنترل BODS را امکان پذیر می کند. BOD غیرفعال توسط یک توالی زمان بندی کنترل می شود.
این بیت در دستگاههایی که نرم افزار BOD غیرفعال نشده است استفاده نشده است و در آن دستگاهها صفر خوانده می شود.
PRR - ثبت نام در کاهش قدرت
ثبت کاهش قدرت روشی را برای کاهش مصرف برق با اجازه دادن به غیرفعال کردن سیگنالهای ساعت محیطی ارائه می دهد.
بیت | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x20 | – | – | – | – | PRTIM1 | PRTIM0 | PRUSI | PRADC | PRR |
بخوان / بنویس | R | R | R | R | R/W | R/W | R/W | R/W | |
ارزش اولیه | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
بیت 7: 4 - رز: بیت های اختصاصی
این بیت ها بیت های رزرو شده در ATtiny25 / 45/85 هستند و همیشه صفر خواهند بود.
بیت 3 - PRTIM1: تایمر / شمارنده کاهش نیرو
نوشتن یک منطق در این بیت ، ماژول Timer / Counter1 را خاموش می کند. وقتی Timer / Counter1 فعال باشد ، عملکرد مانند قبل از خاموش شدن ادامه خواهد یافت.
بیت 2 - PRTIM0: تایمر / شمارنده کاهش نیرو
نوشتن یک منطق در این بیت ، ماژول Timer / Counter0 را خاموش می کند. وقتی Timer / Counter0 فعال باشد ، عملکرد مانند قبل از خاموش شدن ادامه خواهد یافت.
بیت 1 - PRUSI: کاهش قدرت USI
نوشتن یک منطق در این بیت با متوقف کردن ساعت روی ماژول ، USI را خاموش می کند. هنگام بیدار کردن مجدد USI ، باید USI برای اطمینان از عملکرد مناسب دوباره تنظیم شود.
بیت 0 - PRADC: کاهش قدرت ADC
نوشتن یک منطق در این بیت ، ADC را خاموش می کند. ADC قبل از خاموش شدن باید غیرفعال شود. توجه داشته باشید که ساعت ADC توسط برخی از قسمت های مقایسه کننده آنالوگ نیز استفاده می شود ، به این معنی که در هنگام بالا بودن این بیت نمی توان از مقایسهگر آنالوگ استفاده کرد.
کنترل و بازنشانی سیستم
بازنشانی AVR
در هنگام بازنشانی ، همه ثبت نام های ورودی / خروجی روی مقادیر اولیه خود تنظیم می شوند و برنامه از Vector تنظیم مجدد شروع به اجرا می کند. دستورالعمل قرار داده شده در تنظیم مجدد بردار باید یک دستورالعمل RJMP - نسبی پرش - به روال کار با تنظیم مجدد باشد. اگر برنامه هرگز منبع وقفه را فعال نكند ، از بردارهای وقفه استفاده نمی شود و می توان كد برنامه منظم را در این نقاط قرار داد. نمودار مدار در شکل 8-1 منطق تنظیم مجدد را نشان می دهد. پارامترهای الکتریکی مدارهای تنظیم مجدد داده می شوند "ویژگی های سیستم و بازنشانی" در صفحه 165.
شکل 8-1 بازنشانی منطق
با فعال شدن منبع بازنشانی ، پورت های ورودی و خروجی AVR بلافاصله به حالت اولیه خود باز می گردند. برای اجرای این امر نیازی به منبع ساعت نیست.
پس از غیرفعال شدن تمام منابع تنظیم مجدد ، یک شمارنده تأخیر فراخوانی می شود و تنظیم مجدد داخلی را افزایش می دهد. این اجازه می دهد تا قدرت قبل از شروع کار عادی به یک سطح ثابت برسد. مدت زمان تاخیر شمارنده تاخیر توسط کاربر از طریق فیوزهای SUT و CKSEL تعریف می شود. گزینه های مختلف برای دوره تأخیر در ارائه شده است "ساعت منابع »در صفحه 25.
تنظیم مجدد منابع
ATtiny25 / 45/85 دارای چهار منبع تنظیم مجدد است:
راه اندازی مجدد دستگاه MCU وقتی حجم منبع تغذیه می شود تنظیم مجدد می شودtage زیر آستانه بازنشانی روشن/روشن (VPOT) است.
تنظیم مجدد خارجی MCU مجدداً تنظیم می شود که سطح پائینی بیش از حداقل طول پالس در پین RESET وجود داشته باشد.
تنظیم مجدد دیده بان با پایان یافتن دوره Watchdog Timer و فعال شدن Watchdog ، MCU مجدداً تنظیم می شود.
بازنشانی Brown-out هنگامی که حجم عرضه می شود، MCU بازنشانی می شودtage VCC زیر آستانه بازنشانی قهوهای (VBOT) است و آشکارساز خروجی قهوهای فعال است.
تنظیم مجدد روشن
یک پالس تنظیم مجدد روشن (POR) توسط یک مدار تشخیص تراشه تولید می شود. سطح تشخیص در "Sys- ویژگی های tem و Reset »در صفحه 165. POR هر زمان که VCC کمتر از سطح تشخیص باشد فعال می شود. مدار POR را میتوان برای راهاندازی تنظیم مجدد راهاندازی و همچنین تشخیص خرابی در حجم منبع استفاده کرد.tage.
یک مدار تنظیم مجدد (POR) اطمینان از تنظیم مجدد دستگاه از هنگام روشن شدن دستگاه را تضمین می کند. رسیدن به آستانه تنظیم مجدد Power-on voltage شمارشگر تاخیر را فراخوانی می کند، که تعیین می کند تا چه مدت دستگاه پس از افزایش VCC در حالت RESET نگه داشته شود. هنگامی که VCC به زیر سطح تشخیص کاهش می یابد، سیگنال RESET دوباره بدون هیچ تأخیری فعال می شود.
شکل 8-2. راه اندازی MCU، تنظیم مجدد به VCC متصل است
ریست داخلی
شکل 8-3. راهاندازی MCU، بازنشانی به صورت خارجی تمدید شد
تنظیم مجدد خارجی
در صورت فعال بودن ، تنظیم مجدد خارجی با سطح پایین پین RESET ایجاد می شود. تنظیم مجدد پالس ها بیشتر از حداقل عرض پالس (نگاه کنید به "ویژگی های سیستم و بازنشانی" در صفحه 165) تنظیم مجدد را ایجاد می کند ، حتی اگر ساعت در حال اجرا نباشد. پالس های کوتاه تر باعث ایجاد تنظیم مجدد نمی شوند. هنگامی که سیگنال اعمال شده به Reset Threshold Vol می رسدtage – VRST – در لبه مثبت خود، شمارنده تاخیر MCU را پس از اتمام دوره Time-out شروع می کند.
شکل 8-4. تنظیم مجدد خارجی در حین کار
تشخیص قهوه ای بودن
ATtiny25/45/85 دارای مدار تشخیص خروجی قهوه ای روی تراشه (BOD) برای نظارت بر سطح VCC در حین کار با مقایسه آن با سطح ماشه ثابت است. سطح ماشه برای BOD را می توان توسط فیوزهای BODLEVEL انتخاب کرد. سطح ماشه دارای پسماند است تا از تشخیص قهوه ای بدون سنبله اطمینان حاصل کند. هیسترزیس در سطح تشخیص باید به صورت VBOT+ = VBOT + VHYST/2 و VBOT- = VBOT – VHYST/2 تفسیر شود.
هنگامی که BOD فعال است، و VCC به مقداری کمتر از سطح ماشه کاهش می یابد (VBOT-in شکل 8-5، تنظیم مجدد قهوه ای بلافاصله فعال می شود. هنگامی که VCC بالاتر از سطح ماشه افزایش می یابد (VBOT+ in شکل 8-5، شمارشگر تاخیر MCU را پس از اتمام دوره Time-out tTOUT شروع می کند.
مدار BOD تنها در صورتی افت VCC را تشخیص می دهد که voltage برای مدت بیشتری از tBOD داده شده زیر سطح ماشه باقی می ماند "ویژگی های سیستم و بازنشانی" در صفحه 165.
تنظیم مجدد دیده بان
هنگامی که زمان Watchdog تمام می شود، یک پالس تنظیم مجدد کوتاه مدت یک سیکل CK ایجاد می کند. در لبه سقوط این پالس، تایمر تأخیر شروع به شمارش دوره Time-out tTOUT می کند. رجوع شود به "تایمر نگهبان" در صفحه 42 برای جزئیات بیشتر در مورد عملکرد Watcher Doger.
جلدtage Reference فعال کردن سیگنال ها و زمان راه اندازی
جلدtagمرجع زمان راه اندازی دارد که ممکن است نحوه استفاده از آن را تحت تأثیر قرار دهد. زمان راه اندازی اعلام شده است "ویژگی های سیستم و بازنشانی" در صفحه 165. برای صرفه جویی در مصرف برق ، مرجع همیشه روشن نیست. مراجعه در شرایط زیر روشن است:
هنگامی که BOD فعال است (با برنامه نویسی فیوزهای BODLEVEL [2: 0]).
وقتی مرجع bandgap به Analog Comparator متصل شود (با تنظیم بیت ACBG در ACSR).
وقتی ADC فعال است.
بنابراین ، هنگامی که BOD فعال نیست ، پس از تنظیم بیت ACBG یا فعال کردن ADC ، کاربر همیشه باید اجازه دهد مرجع قبل از استفاده از خروجی از Analog Comparator یا ADC شروع به کار کند. برای کاهش مصرف برق در حالت خاموش کردن ، کاربر می تواند از سه شرط بالا جلوگیری کند تا اطمینان حاصل کند که مرجع قبل از ورود به حالت خاموش کردن خاموش است.
تایمر نگهبان
Watchdog Timer از یک Oscillator On-chip بهره می برد که با سرعت 128 کیلوهرتز کار می کند. با کنترل پیش فروش Watchdog Timer ، می توان بازنشانی Watchdog Reset را همانطور که در تصویر نشان داده شده تنظیم کرد جدول 8-3 در صفحه 46. دستورالعمل WDR - Watchdog Reset - تایمر Watchdog را بازنشانی می کند. تایمر Watchdog همچنین هنگامی که غیرفعال است و هنگام تنظیم مجدد تراشه رخ می دهد ، مجدداً تنظیم می شود. برای تعیین دوره تنظیم مجدد ، می توان ده دوره مختلف چرخه ساعت را انتخاب کرد. اگر دوره تنظیم مجدد بدون Watchdog Reset دیگر منقضی شود ، ATtiny25 / 45/85 مجدداً تنظیم مجدد می شود و از Reset Vector اجرا می شود. برای جزئیات زمانبندی تنظیم مجدد دیده بان ، به مراجعه کنید جدول 8-3 در صفحه 46.
Watchdog Timer همچنین می تواند به جای تنظیم مجدد ، وقفه ایجاد کند. این می تواند هنگام استفاده از Watchdog برای بیدار شدن از حالت Power-down بسیار مفید باشد.
برای جلوگیری از غیرفعال شدن ناخواسته Watchdog یا تغییر ناخواسته دوره زمانی ، دو سطح ایمنی مختلف توسط فیوز WDTON انتخاب می شود ، همانطور که در تصویر نشان داده شده است جدول 8-1 رجوع شود به "توالی های به موقع برای تغییر figura of the Watchdog Timer ”در صفحه 43 برای جزئیات
جدول 8-1. پیکربندی WDT به عنوان تابعی از تنظیمات فیوز WDTON
WDTON | سطح ایمنی | حالت اولیه WDT | چگونه WDT را غیرفعال کنیم | چگونه می توان تایم ات را تغییر داد |
برنامه ریزی نشده | 1 | از کار افتاده است | توالی به موقع | بدون محدودیت |
برنامه ریزی شده | 2 | فعال شد | همیشه فعال | توالی به موقع |
شکل 8-7. تایمر نگهبان
توالی های به موقع برای تغییر پیکربندی تایمر نگهبان
توالی تغییر پیکربندی بین دو سطح ایمنی کمی متفاوت است. روشهای جداگانه برای هر سطح شرح داده شده است.
سطح ایمنی 1: در این حالت، تایمر Watchdog در ابتدا غیرفعال است، اما می توان آن را با نوشتن بیت WDE به یک بدون هیچ محدودیتی فعال کرد. هنگام غیرفعال کردن تایمر Watchdog فعال، یک توالی زمانبندی شده لازم است. برای غیرفعال کردن تایمر Watchdog فعال، باید مراحل زیر را دنبال کنید:
در همان عملیات ، یک منطق را برای WDCE و WDE بنویسید. یک منطق باید با توجه به مقدار قبلی بیت WDE برای WDE نوشته شود.
در چهار چرخه ساعت بعدی ، در همان عملیات ، بیت های WDE و WDP را به دلخواه بنویسید ، اما بیت WDCE پاک شده است.
سطح ایمنی 2: در این حالت، تایمر Watchdog همیشه فعال است و بیت WDE همیشه به عنوان یک خوانده می شود. یک توالی زمانبندیشده در هنگام تغییر دوره بازنگری Watchdog مورد نیاز است. برای تغییر بازه زمانی Watchdog، باید مراحل زیر را دنبال کنید:
در همان عملیات ، یک منطقی برای WDCE و WDE بنویسید. حتی اگر WDE همیشه تنظیم شده باشد ، برای شروع توالی زمان بندی شده باید WDE را برای یکی نوشت.
در چهار چرخه ساعت بعدی ، در همان عملیات ، بیت های WDP را به دلخواه بنویسید ، اما با بیت WDCE پاک شده. مقدار نوشته شده در بیت WDE بی ربط است.
کد سابقample
کد زیر به عنوان مثالample یک مجموعه و یک تابع C برای خاموش کردن WDT نشان می دهد. سابقample فرض می کند که وقفه ها کنترل می شوند (به عنوان مثال ، با غیرفعال کردن وقفه ها در سطح جهانی) ، به طوری که هیچ وقفه ای در حین اجرای این توابع رخ نمی دهد.
کد مونتاژ سابقample(1) |
WDT_off:
wdr ؛ پاک کردن WDRF در MCUSR ldi r16، (0< خروجی MCUSR، r16 ؛ برای WDCE و WDE یکی منطقی بنویسید ؛ برای جلوگیری از بازنشانی ناخواسته Watchdog ، تنظیمات پیش نسخه قبلی را حفظ کنید در r16، WDTCR ori r16، (1< خارج از WDTCR، r16 ؛ WDT را خاموش کنید ldi r16، (0< خارج از WDTCR، r16 ret |
C کد سابقample(1) |
void WDT_off (باطل)
{ _WDR ()؛ /* WDRF را در MCUSR پاک کنید */ MCUSR = 0x00 /* یک منطقی را در WDCE و WDE بنویسید */ WDTCR |= (1< / * خاموش کردن WDT * / WDTCR = 0x00 ؛ } |
توجه: 1. رجوع شود "کد سابقamples ”در صفحه 6.
ثبت نام
MCUSR - ثبت نام وضعیت MCU
MCU Status Register اطلاعاتی را در مورد منبع بازنشانی ایجاد مجدد MCU ارائه می دهد.
بیت | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x34 | – | – | – | – | WDRF | BORF | EXTRF | PORF | MCUSR |
بخوان / بنویس | R | R | R | R | R/W | R/W | R/W | R/W |
مقدار اولیه 0 0 0 0 مشاهده توضیحات بیت
بیت 7: 4 - رز: بیت های اختصاصی
این بیت ها بیت های رزرو شده در ATtiny25 / 45/85 هستند و همیشه صفر خواهند بود.
بیت 3 - WDRF: پرچم تنظیم مجدد دیده بان
این بیت در صورت ایجاد Watchdog Reset تنظیم می شود. بیت توسط یک تنظیم مجدد Power-on یا با نوشتن یک منطق صفر روی پرچم تنظیم می شود.
بیت 2 - BORF: پرچم تنظیم مجدد قهوه ای
این بیت در صورت رخ دادن تنظیم مجدد Brown-out تنظیم می شود. بیت با تنظیم مجدد Power-on یا نوشتن یک منطق صفر روی پرچم تنظیم می شود.
بیت 1 - EXTRF: پرچم تنظیم مجدد خارجی
در صورت بروز مجدد تنظیم مجدد خارجی ، این بیت تنظیم می شود. بیت با تنظیم مجدد Power-on یا نوشتن یک منطق صفر روی پرچم تنظیم می شود.
بیت 0 - PORF: پرچم تنظیم مجدد روشن
در صورت بروز مجدد تنظیم مجدد روشن ، این بیت تنظیم می شود. بیت فقط با نوشتن منطق صفر روی پرچم تنظیم می شود.
برای استفاده از Reset Flags برای شناسایی شرایط بازنشانی ، کاربر باید MCUSR را در اسرع وقت برنامه بخواند و سپس آن را تنظیم کند. اگر قبل از وقوع تنظیم مجدد ، ثبت نام پاک شود ، می توان با بازنشانی پرچم ها ، منبع تنظیم مجدد را پیدا کرد.
WDTCR - ثبت نام كنترل كننده تايمر
بیت | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x21 | WDIF | WDIE | WDP3 | WDCE | WDE | WDP2 | WDP1 | WDP0 | WDTCR |
بخوان / بنویس | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
ارزش اولیه | 0 | 0 | 0 | 0 | X | 0 | 0 | 0 |
بیت 7 - WDIF: پرچم وقفه Watchdog Timeout
این بیت هنگام وقفه زمانی در Watchdog Timer تنظیم شده و Watchdog Timer برای وقفه پیکربندی می شود. هنگام اجرای بردار کنترل وقفه مربوطه ، WDIF توسط سخت افزار پاک می شود. متناوباً ، WDIF با نوشتن منطقی برای پرچم پاک می شود. هنگامی که I-bit در SREG و WDIE تنظیم می شود ، وقفه Watchdog Time-out اجرا می شود.
بیت 6 - WDIE: وقفه وقفه دیده بان فعال می شود
وقتی این بیت روی یک نوشته شود ، WDE پاک می شود و I-bit موجود در وضعیت ثبت تنظیم می شود ، وقفه Watchdog Time-out فعال می شود. در این حالت در صورت وقفه زمانی در Watchdog Timer وقفه مربوطه به جای تنظیم مجدد اجرا می شود.
در صورت تنظیم WDE ، WDIE با اتمام زمان به طور خودکار توسط سخت افزار پاک می شود. این برای حفظ امنیت Watchdog Reset هنگام استفاده از وقفه مفید است. پس از پاک شدن بیت WDIE ، وقفه بعدی منجر به تنظیم مجدد می شود. برای جلوگیری از بازنشانی Watchdog ، پس از هر وقفه باید WDIE تنظیم شود.
جدول 8-2. پیکربندی تایمر Watchdog
WDE | WDIE | دولت نگهبان تایمر | اقدام در تایم اتم |
0 | 0 | متوقف شد | هیچ کدام |
0 | 1 | در حال دویدن | قطع کنید |
1 | 0 | در حال دویدن | بازنشانی کنید |
1 | 1 | در حال دویدن | قطع کنید |
بیت 4 - WDCE: Watchdog Change Change را فعال کنید
این بیت باید زمانی تنظیم شود که بیت WDE روی منطق صفر نوشته شود. در غیر این صورت ، Watchdog غیرفعال نخواهد شد. پس از نوشتن روی یک ، سخت افزار پس از چهار چرخش ساعت این بیت را پاک می کند. برای روش غیر فعال کردن Watchdog به شرح بیت WDE مراجعه کنید. این بیت همچنین باید هنگام تغییر بیت های پیش فروش تنظیم شود. دیدن "توالی های به موقع برای تغییر تنظیمات تایمر نگهبان »در صفحه 43.
بیت 3 - WDE: دیده بان فعال است
وقتی WDE در منطق یک نوشته می شود ، Watchdog Timer فعال است و اگر WDE در منطق صفر نوشته شود ، عملکرد Watchdog Timer غیرفعال می شود. WDE تنها درصورتی پاک می شود که بیت WDCE منطق یک داشته باشد. برای غیرفعال کردن Watcher Watcher فعال ، روش زیر را باید دنبال کنید:
در همان عملیات ، یک منطق را برای WDCE و WDE بنویسید. یک منطقی باید روی WDE نوشته شود حتی اگر قبل از شروع عملیات غیرفعال روی یک تنظیم شده باشد.
در چهار چرخه ساعت بعدی ، یک منطق 0 را برای WDE بنویسید. این Watchdog را غیرفعال می کند.
در سطح ایمنی 2 ، غیر فعال کردن Watchdog Timer ، حتی با الگوریتم توضیح داده شده در بالا ، امکان پذیر نیست. دیدن "توالی های بهنگام برای تغییر پیکربندی تایمر نگهبان" در صفحه 43.
در سطح ایمنی 1 ، WDE در MCUSR توسط WDRF لغو می شود. دیدن "MCUSR - ثبت نام وضعیت MCU" در صفحه 44 برای توصیف WDRF. این به این معنی است که WDE همیشه هنگام تنظیم WDRF تنظیم می شود. برای پاک کردن WDE ، WDRF باید قبل از غیرفعال کردن Watchdog با روش شرح داده شده در بالا پاک شود. این ویژگی بازنشانی های متعدد در شرایط ایجاد کننده خرابی و راه اندازی ایمن پس از خرابی را تضمین می کند.
توجه: اگر قرار نیست تایمر Watchdog در برنامه مورد استفاده قرار گیرد، مهم است که یک روش غیرفعال کردن Watchdog را در مقداردهی اولیه دستگاه طی کنید. اگر Watchdog به طور تصادفی فعال شود، برای مثالampبا استفاده از یک اشاره گر فراری یا وضعیت قهوه ای ، دستگاه بازنشانی می شود ، که به نوبه خود منجر به بازنشانی جدید نگهبان می شود. برای جلوگیری از این وضعیت ، نرم افزار برنامه همیشه باید پرچم WDRF و بیت کنترل WDE را در روال راه اندازی اولیه پاک کند.
بیت 5 ، 2: 0 - WDP [3: 0]: Watchdog Timer Prescaler 3 ، 2 ، 1 و 0
بیت های WDP [3: 0] هنگام فعال کردن Watchdog Timer ، مقادیر مقدماتی Watchdog Timer را تعیین می کنند. مقادیر مختلف پیش اندازه گیری و دوره های متناوب مربوط به آنها در نشان داده شده است جدول 8-3.
جدول 8-3. انتخاب پیش مقیاس تایمر Watchdog
WDP3 | WDP2 | WDP1 | WDP0 | تعداد چرخه های نوسانگر WDT | تایم اوت معمولی در VCC = 5.0 ولت |
0 | 0 | 0 | 0 | چرخه 2K (2048) | 16 میلی ثانیه |
0 | 0 | 0 | 1 | چرخه 4K (4096) | 32 میلی ثانیه |
0 | 0 | 1 | 0 | چرخه 8K (8192) | 64 میلی ثانیه |
0 | 0 | 1 | 1 | چرخه 16K (16384) | 0.125 ثانیه |
0 | 1 | 0 | 0 | چرخه 32K (32764) | 0.25 ثانیه |
0 | 1 | 0 | 1 | چرخه 64K (65536) | 0.5 ثانیه |
0 | 1 | 1 | 0 | چرخه 128K (131072) | 1.0 ثانیه |
0 | 1 | 1 | 1 | چرخه 256K (262144) | 2.0 ثانیه |
1 | 0 | 0 | 0 | چرخه 512K (524288) | 4.0 ثانیه |
1 | 0 | 0 | 1 | چرخه 1024K (1048576) | 8.0 ثانیه |
جدول 8-3. انتخاب پیش مقیاس تایمر Watchdog (ادامه)
WDP3 | WDP2 | WDP1 | WDP0 | تعداد چرخه های نوسانگر WDT | تایم اوت معمولی در VCC = 5.0 ولت |
1 | 0 | 1 | 0 | رزرو شده است(1) | |
1 | 0 | 1 | 1 | ||
1 | 1 | 0 | 0 | ||
1 | 1 | 0 | 1 | ||
1 | 1 | 1 | 0 | ||
1 | 1 | 1 | 1 |
توجه: 1. در صورت انتخاب، یکی از تنظیمات معتبر زیر 0b1010 استفاده خواهد شد.
قطع می کند
این بخش مشخصات مدیریت وقفه را همانطور که در ATtiny25 / 45/85 انجام شده است ، توصیف می کند. برای توضیحات کلی در مورد کار با وقفه AVR ، مراجعه کنید "تنظیم مجدد و قطع عملکرد" در صفحه 12.
وکتورها را در ATtiny25 / 45/85 قطع کنید
بردارهای وقفه ATtiny25 / 45/85 در شرح داده شده است جدول 9-1زیر
جدول 9-1. بازنشانی و قطع بردارها
شماره بردار | آدرس برنامه | منبع | تعریف را قطع کنید |
1 | 0x0000 | تنظیم مجدد | پین خارجی ، تنظیم مجدد روشن ، تنظیم مجدد قهوه ای ، تنظیم مجدد دیده بان |
2 | 0x0001 | INT0 | درخواست وقفه خارجی 0 |
3 | 0x0002 | PCINT0 | درخواست وقفه تغییر پین 0 |
4 | 0x0003 | TIMER1_COMPA | تایمر / شمارنده 1 مقایسه مسابقه A |
5 | 0x0004 | TIMER1_OVF | تایمر / شمارنده 1 سرریز |
6 | 0x0005 | TIMER0_OVF | تایمر / شمارنده 0 سرریز |
7 | 0x0006 | EE_RDY | EEPROM آماده است |
8 | 0x0007 | ANA_COMP | مقایسه کننده آنالوگ |
9 | 0x0008 | ADC | تبدیل ADC کامل است |
10 | 0x0009 | TIMER1_COMPB | تایمر / شمارنده 1 مقایسه مسابقه B |
11 | 0x000A | TIMER0_COMPA | تایمر / شمارنده 0 مقایسه مسابقه A |
12 | 0x000B | TIMER0_COMPB | تایمر / شمارنده 0 مقایسه مسابقه B |
13 | 0x000C | WDT | تایم اوت دیده بان |
14 | 0x000D | USI_START | شروع USI |
15 | 0x000E | USI_OVF | سرریز USI |
اگر برنامه هرگز منبع وقفه را فعال نكند ، از بردارهای وقفه استفاده نمی شود و می توان كد برنامه منظم را در این نقاط قرار داد.
یک تنظیم معمولی و کلی برای آدرس های بردار وقفه در ATtiny25/45/85 در برنامه قبلی نشان داده شده استampدر زیر
کد مونتاژ سابقample | ||
.org 0x0000 | ؛ آدرس بعدی را تنظیم کنید | بیانیه |
بازنشانی rjmp | ؛ آدرس 0x0000 | |
rjmp INT0_ISR | ؛ آدرس 0x0001 | |
rjmp PCINT0_ISR | ؛ آدرس 0x0002 | |
rjmp TIM1_COMPA_ISR | ؛ آدرس 0x0003 | |
rjmp TIM1_OVF_ISR | ؛ آدرس 0x0004 | |
rjmp TIM0_OVF_ISR | ؛ آدرس 0x0005 | |
rjmp EE_RDY_ISR | ؛ آدرس 0x0006 | |
rjmp ANA_COMP_ISR | ؛ آدرس 0x0007 | |
rjmp ADC_ISR | ؛ آدرس 0x0008 | |
rjmp TIM1_COMPB_ISR | ؛ آدرس 0x0009 | |
rjmp TIM0_COMPA_ISR | ؛ آدرس 0x000A | |
rjmp TIM0_COMPB_ISR | ؛ آدرس 0x000B | |
rjmp WDT_ISR | ؛ آدرس 0x000C | |
rjmp USI_START_ISR | ؛ آدرس 0x000D | |
rjmp USI_OVF_ISR | ؛ آدرس 0x000E | |
بازنشانی: | ؛ شروع برنامه اصلی | |
؛ آدرس 0x000F | ||
… |
توجه: ببینید "کد سابقamples ”در صفحه 6.
وقفه های خارجی
وقفه های خارجی توسط پین INT0 یا هر پایه PCINT [5: 0] ایجاد می شوند. مشاهده کنید که ، در صورت فعال بودن ، حتی اگر پین های INT0 یا PCINT [5: 0] به عنوان خروجی پیکربندی شوند ، وقفه ها ایجاد می شوند. این ویژگی راهی برای ایجاد وقفه نرم افزاری فراهم می کند. در صورت تغییر تعویض پین ، PCI باعث قطع وقفه می شود. PCMSK Register ثبت نام می کند که کدام پین ها در وقفه های تغییر پین نقش دارند. وقفه های تغییر پین در PCINT [5: 0] به طور غیر همزمان انجام می شود. این بدان معنی است که می توان از این وقفه ها برای بیدار کردن قطعه از حالت های خواب غیر از حالت بیکار نیز استفاده کرد.
وقفه های INT0 می تواند در اثر سقوط یا بالا آمدن لبه یا سطح پایین ایجاد شود. این همانطور که در مشخصات ثبت نام کنترل MCU - MCUCR نشان داده شده است ، تنظیم شده است. وقتی وقفه INT0 فعال باشد و به عنوان سطح فعال پیکربندی شود ، تا زمانی که پین پایین نگه داشته شود ، وقفه ایجاد می شود. توجه داشته باشید که تشخیص وقفه های افتادن یا بالا آمدن لبه در INT0 نیاز به وجود ساعت I / O دارد که در آن توضیح داده شده است "سیستم های ساعت و توزیع آنها" روشن است صفحه 23.
سطح پایین وقفه
وقفه در سطح پایین در INT0 به صورت غیرهمزمان تشخیص داده می شود. این بدان معنی است که می توان از این وقفه برای بیدار کردن قطعه از حالت های خواب غیر از حالت بیکار نیز استفاده کرد. ساعت I / O در همه حالت های خواب به جز حالت بیکار متوقف شده است.
توجه داشته باشید که اگر از یک وقفه راهاندازی سطح برای بیدار کردن از Power-down استفاده شود، سطح مورد نیاز باید به اندازه کافی نگه داشته شود تا MCU بتواند بیدار شدن را کامل کند تا وقفه سطح را راهاندازی کند. اگر سطح قبل از پایان زمان راه اندازی ناپدید شود، MCU همچنان بیدار می شود، اما هیچ وقفه ای ایجاد نمی شود. زمان راه اندازی توسط فیوزهای SUT و CKSEL همانطور که در توضیح داده شده است، تعریف می شود "گزینه های ساعت و ساعت سیستم" در صفحه 23.
اگر قبل از بیدار شدن دستگاه سطح پایین پین وقفه برداشته شود ، اجرای برنامه به روال سرویس قطع نمی شود اما از دستورالعمل زیر دستور SLEEP استفاده می شود.
زمان تغییر وقفه را تغییر دهید
یک سابقample از زمان وقفه تغییر پین در نشان داده شده است شکل 9-1.
ثبت نام
MCUCR - ثبت نام کنترل MCU
رجیستر کنترل وقفه خارجی A شامل بیت های کنترل برای کنترل حس وقفه است.
بیت | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | هیئت مدیره | ISC01 | ISC00 | MCUCR |
بخوان / بنویس | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
ارزش اولیه | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
بیت 1: 0 - ISC0 [1: 0]: کنترل حس 0 بیت 1 و بیت 0 را قطع کنید
اگر پرچم SREG I و ماسک مربوط به وقفه تنظیم شوند ، اینترسترنال 0 با پین خارجی INT0 فعال می شود. سطح و لبه های پین INT0 خارجی که وقفه را فعال می کنند در تعریف شده اند جدول 9-2به مقدار روی پین INT0 s استampled قبل از تشخیص لبه ها اگر لبه یا ضامن وقفه انتخاب شود ، پالس هایی که بیش از یک دوره ساعت دوام داشته باشند ، وقفه ایجاد می کنند. پالس های کوتاه تر باعث ایجاد وقفه نمی شوند. اگر وقفه سطح پایین انتخاب شود ، سطح پایین باید تا زمان تکمیل دستورالعمل در حال اجرا برای ایجاد وقفه حفظ شود.
جدول 9-2. وقفه 0 کنترل حس
ISC01 | ISC00 | توضیحات |
0 | 0 | سطح پایین INT0 درخواست وقفه ایجاد می کند. |
0 | 1 | هرگونه تغییر منطقی در INT0 ، یک درخواست وقفه ایجاد می کند. |
1 | 0 | افت لبه INT0 یک درخواست وقفه ایجاد می کند. |
1 | 1 | افزایش لبه INT0 درخواست وقفه ایجاد می کند. |
GIMSK - ثبت نام ماسک وقفه عمومی
بیت | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3B | – | INT0 | PCIe | – | – | – | – | – | GIMSK |
بخوان / بنویس | R | R/W | R/W | R | R | R | R | R | |
ارزش اولیه | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
بیت 7 ، 4: 0 - رز: بیت های اختصاصی
این بیت ها بیت های رزرو شده در ATtiny25 / 45/85 هستند و همیشه صفر خواهند بود.
بیت 6 - INT0: درخواست وقفه خارجی 0 فعال است
هنگامی که بیت INT0 (یک) و I-bit در وضعیت ثبت (SREG) تنظیم می شود (یک) ، قطع پین خارجی فعال می شود. Interrupt Sense Control0 bits 1/0 (ISC01 and ISC00) in the MCU Control Register (MCUCR) تعریف می کند که آیا وقفه خارجی با افزایش و یا سقوط لبه پین INT0 یا سطح حس شده فعال می شود یا خیر. فعالیت روی پین باعث درخواست قطع می شود حتی اگر INT0 به عنوان یک خروجی پیکربندی شود. وقفه متناظر با Exterinal Interrupt Request 0 از بردار وقفه INT0 اجرا می شود.
بیت 5 - PCIE: پین تغییر وقفه را فعال می کند
هنگامی که بیت PCIE (یک) و I-bit در وضعیت ثبت (SREG) تنظیم شود (یک) ، وقفه تغییر پین فعال می شود. هرگونه تغییر در هر پین PCINT فعال [5: 0] باعث ایجاد وقفه می شود. وقفه مربوط به درخواست وقفه تغییر پین از PCI وقفه بردار اجرا می شود. پین های PCINT [5: 0] توسط PCMSK0 Register به صورت جداگانه فعال می شوند.
GIFR - ثبت وقایع عمومی در وقفه عمومی
بیت | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3A | – | INTF0 | PCIF | – | – | – | – | – | GIFR |
بخوان / بنویس | R | R/W | R/W | R | R | R | R | R | |
ارزش اولیه | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
بیت 7 ، 4: 0 - رز: بیت های اختصاصی
این بیت ها بیت های رزرو شده در ATtiny25 / 45/85 هستند و همیشه صفر خواهند بود.
بیت 6 - INTF0: پرچم وقفه خارجی 0
وقتی یک تغییر لبه یا منطق روی پین INT0 درخواست وقفه را ایجاد می کند ، INTF0 تنظیم می شود (یک). اگر بیت I در SREG و بیت INT0 در GIMSK تنظیم شود (یک) ، MCU به وکتور مربوط به وقفه مربوطه می پرد. با اجرای روال وقفه ، پرچم پاک می شود. متناوباً ، می توان با نوشتن یک پرچم منطقی روی آن ، پرچم را پاک کرد. این پرچم همیشه پاک می شود زمانی که INT0 به عنوان وقفه سطح پیکربندی شده است.
بیت 5 - PCIF: پرچم قطع وقفه
هنگامی که یک منطق در هر پین PCINT [5: 0] تغییر می کند ، یک درخواست قطع ایجاد می کند ، PCIF تنظیم می شود (یک). اگر بیت I در SREG و بیت PCIE در GIMSK تنظیم شوند (یک) ، MCU به وکتور مربوط به وقفه مربوطه می پرد. با اجرای روال وقفه ، پرچم پاک می شود. متناوباً ، می توان با نوشتن یک پرچم منطقی روی آن ، پرچم را پاک کرد.
PCMSK - ثبت تغییر ماسک پین
بیت | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x15 | – | – | PCINT5 | PCINT4 | PCINT3 | PCINT2 | PCINT1 | PCINT0 | PCMSK |
بخوان / بنویس | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
ارزش اولیه | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
بیت 7: 6 - رز: بیت های اختصاصی
این بیت ها بیت های رزرو شده در ATtiny25 / 45/85 هستند و همیشه صفر خواهند بود.
بیت 5: 0 - PCINT [5: 0]: Pin Change Enable Mask 5: 0
هر بیت PCINT [5: 0] انتخاب می کند که آیا وقفه تغییر پین در پین ورودی / خروجی مربوطه فعال باشد یا خیر. اگر PCINT [5: 0] تنظیم شود و بیت PCIE در GIMSK تنظیم شود ، وقفه تغییر پین در پین ورودی / خروجی مربوطه فعال می شود. اگر PCINT [5: 0] پاک شود ، وقفه تغییر پین در پین ورودی / خروجی مربوطه غیرفعال است.
پورت های ورودی/خروجی
مقدمه
همه پورت های AVR وقتی به عنوان پورت های دیجیتال I/O عمومی مورد استفاده قرار می گیرند ، دارای قابلیت Read-Modify-Write واقعی هستند. این بدان معناست که جهت یک پین پورت را می توان بدون تغییر ناخواسته جهت هر پین دیگر با دستورالعمل های SBI و CBI تغییر داد. همین امر هنگام تغییر مقدار درایو (در صورت پیکربندی خروجی) یا فعال/غیرفعال کردن مقاومت های کششی (در صورت پیکربندی به عنوان ورودی) نیز صدق می کند. هر بافر خروجی دارای ویژگی درایو متقارن با سینک بالا و قابلیت منبع است. درایور پین به اندازه کافی قوی است که به طور مستقیم صفحه نمایش LED را هدایت می کند. همه پین های پورت دارای مقاومت های کششی جداگانه قابل انتخاب با منبع تغذیه هستندtagمقاومت ثابت تمام پینهای ورودی/خروجی دارای دیودهای حفاظتی برای VCC و زمین هستند که در زیر نشان داده شده است شکل 10-1. رجوع شود به "خصوصیات الکتریکی" در صفحه 161 برای لیست کامل پارامترها
شکل 10-1. شماتیک معادل پین I/O
تمام رجیسترها و مراجع بیتی در این بخش به صورت کلی نوشته شده اند. حروف کوچک "x" نشان دهنده شماره شماره گذاری درگاه و حروف کوچک "n" نشان دهنده شماره بیت است. با این حال ، هنگام استفاده از ثبات یا تعریف بیت در یک برنامه ، باید از فرم دقیق استفاده شود. برای سابقample ، PORTB3 برای بیت شماره. 3 در بندر B ، در اینجا به طور کلی به عنوان PORTxn مستند شده است. رجیسترهای ورودی/خروجی فیزیکی و مکان های بیت در آن ذکر شده است "ثبت نام" روشن است صفحه 64.
برای هر پورت سه مکان آدرس ورودی I / O اختصاص داده شده است ، هر یک برای ثبت اطلاعات - PORTx ، ثبت جهت داده - DDRx و پین های ورودی پورت - PINx. مکان ورودی / خروجی پورت ورودی فقط خواندنی است ، در حالی که ثبت نام داده و ثبت جهت داده خواندن / نوشتن است. با این حال ، نوشتن یک منطق یک به یک در رجیستر PINx ، منجر به ضامن بیت مربوطه در Data Register می شود. علاوه بر این ، بیت Pull-up Disable - PUD در MCUCR عملکرد کشیدن را برای همه پین ها در همه پورت ها هنگام تنظیم غیرفعال می کند.
استفاده از پورت I / O به عنوان I / O General Digital در شرح داده شده است "بنادر به عنوان ورودی و خروجی دیجیتال عمومی" در صفحه 53. بیشتر پین های پورت با عملکردهای جایگزین برای ویژگی های جانبی دستگاه چندگانه می شوند. چگونگی تداخل هر عملکرد متناوب با پین درگاه در شرح داده شده است "عملکردهای پورت جایگزین" در صفحه 57. برای شرح کامل توابع جایگزین به بخشهای ماژول جداگانه مراجعه کنید.
توجه داشته باشید که فعال کردن عملکرد جایگزین برخی از پین های پورت در استفاده از سایر پین های پورت به عنوان ورودی و خروجی دیجیتال عمومی تأثیری ندارد.
بنادر بصورت I / O General Digital
پورت ها پورت های ورودی / خروجی دو جهته با کشش داخلی اختیاری هستند. شکل 10-2 توصیف عملکردی از یک پایه I / O-port را نشان می دهد که در اینجا به طور کلی Pxn نامیده می شود.
شکل 10-2. ورودی/خروجی دیجیتال عمومی(1)
پیکربندی پین
هر پایه پورت از سه بیت رجیستری تشکیل شده است: DDxn ، PORTxn و PINxn. همانطور که در نشان داده شده است "ثبت نام" روشن است صفحه 64، بیت های DDxn در آدرس ورودی / خروجی DDRx ، بیت های PORTxn در آدرس ورودی / خروجی PORTx و بیت های PINxn در آدرس ورودی / خروجی PINx قابل دسترسی هستند.
بیت DDxn در ثبت DDRx جهت این پین را انتخاب می کند. اگر DDxn منطقی یک نوشته شود ، Pxn به عنوان پین خروجی پیکربندی می شود. اگر DDxn منطق صفر نوشته شود ، Pxn به عنوان پین ورودی پیکربندی می شود.
اگر هنگام تنظیم پی به عنوان پین ورودی ، PORTxn منطقی یک نوشته شود ، مقاومت کششی فعال می شود. برای خاموش کردن مقاومت کششی ، PORTxn باید منطق صفر نوشته شود یا پین باید به عنوان پین خروجی پیکربندی شود. پین های پورت هنگام فعال شدن حالت تنظیم مجدد ، سه بار مشخص می شوند ، حتی اگر هیچ ساعتی کار نکند.
اگر هنگام تنظیم پی به عنوان پین خروجی ، PORTxn منطقی یک نوشته شود ، پین پورت بالا رانده می شود (یک). اگر هنگام پیکربندی پین به عنوان پین خروجی ، PORTxn منطق صفر نوشته شود ، پین پورت کم (صفر) رانده می شود.
تغییر پین
نوشتن یک منطق برای PINxn ، مقدار PORTxn را مستقل از مقدار DDRxn تغییر می دهد. توجه داشته باشید که از دستورالعمل SBI می توان برای تغییر وضعیت یک بیت واحد در یک پورت استفاده کرد.
سوئیچینگ بین ورودی و خروجی
هنگام جابجایی بین حالت سهگانه ({DDxn, PORTxn} = 0b00) و خروجی بالا ({DDxn, PORTxn} = 0b11)، یک حالت میانی با فعال کردن pull-up {DDxn, PORTxn} = 0b01) یا خروجی کم ({DDxn، PORTxn} = 0b10) باید رخ دهد. به طور معمول، حالت فعال کردن pull-up کاملاً قابل قبول است، زیرا یک محیط با امپدانت بالا تفاوت بین یک درایور بالا قوی و یک pull-up را متوجه نخواهد شد. اگر اینطور نیست، بیت PUD موجود در رجیستر MCUCR را می توان طوری تنظیم کرد که تمام کشش ها را در همه پورت ها غیرفعال کند.
جابجایی بین ورودی با کم و پایین خروجی همین مشکل را ایجاد می کند. کاربر باید از حالت سه گانه ({DDxn، PORTxn} = 0b00) یا از حالت بالا خروجی ({DDxn، PORTxn} = 0b10) به عنوان یک مرحله میانی استفاده کند.
جدول 10-1 سیگنال های کنترل را برای مقدار پین خلاصه می کند.
جدول 10-1. تنظیمات پین پورت
DDxn | PORTxn | PUD
(در MCUCR) |
I/O | کشش | نظر دهید |
0 | 0 | X | ورودی | خیر | حالت سه گانه (Hi-Z) |
0 | 1 | 0 | ورودی | بله | Pxn در صورت وجود منبع داخلی ، جریان را تأمین می کند. کم کشیده شده |
0 | 1 | 1 | ورودی | خیر | حالت سه گانه (Hi-Z) |
1 | 0 | X | خروجی | خیر | خروجی کم (سینک ظرفشویی) |
1 | 1 | X | خروجی | خیر | خروجی زیاد (منبع) |
خواندن مقدار Pin
مستقل از تنظیم بیت جهت داده DDxn ، پین پورت را می توان از طریق بیت ثبت PINxn خواند. همانطور که در نشان داده شده است شکل 10-2، بیت PINxn Register و قفل قبلی یک هماهنگ ساز را تشکیل می دهند. اگر پین فیزیکی نزدیک لبه ساعت داخلی را تغییر دهد ، این مورد برای جلوگیری از قابلیت پذیری لازم است ، اما تأخیر را نیز ایجاد می کند. شکل 10-3 هنگام خواندن یک مقدار پین اعمال شده خارجی، یک نمودار زمان بندی از همگام سازی را نشان می دهد. حداکثر و حداقل تاخیر انتشار به ترتیب tpd، max و tpd،min نشان داده می شود.
مدت زمان شروع را در نظر بگیرید که کمی بعد از اولین لبه افتاده ساعت سیستم شروع می شود. وقتی که ساعت کم است ، قفل بسته می شود و وقتی که ساعت زیاد است ، شفاف می شود ، همانطور که توسط منطقه سایه دار سیگنال "SYNC LATCH" نشان داده می شود. مقدار سیگنال با کم شدن ساعت سیستم قفل می شود. در PINxn Register در لبه ساعت مثبت مثبت کلاک می شود. همانطور که توسط دو فلش tpd ، max و tpd ، min نشان داده شده است ، یک انتقال سیگنال روی پین بسته به زمان ادعا بین between و 1½ دوره ساعت سیستم به تأخیر می افتد.
هنگام خواندن یک نرم افزار که مقدار پین اختصاص داده شده است ، دستورالعمل nop باید همانطور که در آن نشان داده شده است ، وارد شود شکل 10-4. دستورالعمل out سیگنال "SYNC LATCH" را در لبه مثبت ساعت تنظیم می کند. در این حالت ، تاخیر tpd از طریق همگام ساز یک دوره ساعت سیستم است.
کد زیر به عنوان مثالample نشان میدهد که چگونه میتوان پایههای پورت B 0 و 1 را بالا، 2 و 3 پایین، و پایههای پورت را از 4 تا 5 به عنوان ورودی با یک pull-up اختصاص داده شده به پایه پورت 4 تعریف کرد. مقادیر پین حاصل دوباره خوانده میشوند، اما همانطور که قبلاً بحث شد، یک دستورالعمل nop گنجانده شده است تا بتوان مقداری را که اخیراً به برخی از پین ها اختصاص داده شده است بازخوانی کند.
کد مونتاژ سابقample(1) |
…
; کشش را تعریف کنید و خروجی ها را بالا تنظیم کنید ; جهت پین های پورت را تعریف کنید ldi r16,(1<<PB4)|(1<<PB1)|(1<<PB0) ldi r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0) خروجی PORTB,r16 DDRB,r17 را خارج کنید ; برای همگام سازی nop را وارد کنید نه ; پین های پورت را بخوانید در r16، PINB … |
نکته: برای برنامه اسمبلی، از دو رجیستر موقت برای به حداقل رساندن زمان از pull-up ها در پایه های 0، 1 و 4 استفاده می شود، تا زمانی که بیت های جهت به درستی تنظیم شوند، بیت 2 و 3 را کم و بیت های 0 را دوباره تعریف می کنند. 1 به عنوان رانندگان قوی بالا.
C کد سابقample |
بدون امضا char i;
… /* کشش ها را تعریف کنید و خروجی ها را بالا تنظیم کنید */ /* جهت پین های پورت را تعریف کنید */ PORTB = (1< DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0); /* درج nop برای همگام سازی*/ _NOP ()؛ /* خواندن پین های پورت */ i = PINB; … |
حالت ورودی فعال و ورودی دیجیتال
همانطور که در نشان داده شده است شکل 10-2، سیگنال ورودی دیجیتال می تواند cl باشدamped به زمین در ورودی schmitt-trigger. سیگنالی که در شکل SLEEP نشان داده شده است، توسط کنترلکننده خواب MCU در حالت خاموش کردن تنظیم میشود تا در صورت شناور ماندن برخی سیگنالهای ورودی یا داشتن سطح سیگنال آنالوگ نزدیک به VCC/2، از مصرف انرژی بالا جلوگیری شود.
SLEEP برای پین های پورت که به عنوان پین های وقفه خارجی فعال هستند ، لغو می شود. اگر درخواست وقفه خارجی فعال نباشد ، SLEEP برای این پایه ها نیز فعال است. SLEEP همچنین توسط سایر توابع جایگزین دیگر که در توضیح داده شده است ، نادیده گرفته می شود "عملکردهای پورت جایگزین" در صفحه 57.
اگر یک سطح منطقی بالا ("یک") روی پین وقفه خارجی ناهمزمان که به صورت "وقفه در لبه بالارونده، لبه سقوط یا هر تغییر منطقی در پین" پیکربندی شده باشد در حالی که وقفه خارجی فعال نیست وجود داشته باشد، پرچم وقفه خارجی مربوطه خواهد بود. هنگام از سرگیری از حالت خواب ذکر شده در بالا، به عنوان clampقرار گرفتن در این حالت خواب باعث ایجاد تغییر منطقی درخواستی می شود.
سنجاق های بدون اتصال
در صورت استفاده نکردن برخی از پین ها ، توصیه می شود اطمینان حاصل کنید که این پین ها از سطح مشخصی برخوردار هستند. حتی اگر بیشتر ورودی های دیجیتال در حالت خواب عمیق همانطور که در بالا توضیح داده شد غیرفعال هستند ، برای کاهش مصرف جریان در سایر حالت های ورودی های دیجیتال (تنظیم مجدد ، حالت فعال و حالت بیکار) ، باید از ورودی های شناور خودداری شود.
ساده ترین روش برای اطمینان از سطح مشخصی از پین استفاده نشده، فعال کردن کشش داخلی است. در این حالت، هنگام تنظیم مجدد، کشش غیرفعال می شود. اگر مصرف کم انرژی در حین تنظیم مجدد مهم است، توصیه می شود از کشش یا کشش خارجی استفاده کنید. اتصال پین های استفاده نشده به طور مستقیم به VCC یا GND توصیه نمی شود، زیرا اگر پین به طور تصادفی به عنوان یک خروجی پیکربندی شود، ممکن است باعث ایجاد جریان بیش از حد شود.
توابع جایگزین بندر
اکثر پین های پورت علاوه بر اینکه به طور کلی ورودی و خروجی دیجیتال هستند ، عملکردهای متناوب دارند. شکل 10-5 نشان می دهد که چگونه سیگنال کنترل پین از ساده شده است شکل 10-2 توسط توابع جایگزین قابل لغو است. ممکن است سیگنال های اصلی در همه پین های پورت وجود نداشته باشد ، اما این شکل به عنوان یک توصیف عمومی قابل استفاده برای همه پین های پورت در خانواده میکروکنترلر AVR عمل می کند.
جدول 10-2. شرح عمومی سیگنال های غلبه کننده برای توابع جایگزین
نام سیگنال | نام کامل | توضیحات |
PUOE | فعال کردن را لغو کنید | در صورت تنظیم این سیگنال ، قابلیت کشش توسط سیگنال PUOV کنترل می شود. اگر این سیگنال پاک شود ، زمان کشیدن فعال می شود
{DDxn ، PORTxn ، PUD} = 0b010. |
PUOV | جمع کردن مقدار لغو | اگر PUOE تنظیم شده باشد ، هنگام تنظیم / پاک شدن PUOV ، بدون در نظر گرفتن تنظیمات بیت های ثبت DDxn ، PORTxn و PUD ، کشش فعال / غیرفعال می شود. |
DDOE | لغو جهت داده را فعال کنید | در صورت تنظیم این سیگنال ، Output Driver Enable توسط سیگنال DDOV کنترل می شود. اگر این سیگنال پاک شود ، درایور خروجی توسط بیت DDxn Register فعال می شود. |
DDOV | مقدار لغو جهت داده | اگر DDOE تنظیم شده باشد ، هنگام تنظیم / پاک شدن DDOV ، صرف نظر از تنظیم بیت ثبت DDxn ، درایور خروجی فعال / غیرفعال می شود. |
PVOE | پورت ارزش اضافی را فعال کنید | اگر این سیگنال تنظیم شود و Output Driver فعال باشد ، مقدار پورت توسط سیگنال PVOV کنترل می شود. اگر PVOE پاک شود و درایور Output فعال باشد ، مقدار پورت توسط بیت PORTxn Register کنترل می شود. |
PVOV | مقدار Port ارزش اضافی را لغو می کند | اگر PVOE تنظیم شده باشد ، بدون توجه به تنظیم بیت ثبت PORTxn ، مقدار پورت روی PVOV تنظیم می شود. |
PTOE | پورت تغییر وضعیت لغو فعال کردن | اگر PTOE تنظیم شده باشد ، بیت PORTxn Register معکوس می شود. |
DIEOE | ورودی دیجیتال فعال کردن لغو فعال کردن | در صورت تنظیم این بیت ، دیجیتال ورودی فعال توسط سیگنال DIEOV کنترل می شود. اگر این سیگنال پاک شود ، ورودی ورودی دیجیتال با حالت MCU (حالت عادی ، حالت خواب) تعیین می شود. |
DIOV | ورودی دیجیتال مقدار لغو را فعال می کند | اگر DIEOE تنظیم شده باشد ، هنگام تنظیم / پاک شدن DIEOV ، ورودی دیجیتال فعال / غیرفعال می شود ، صرف نظر از حالت MCU (حالت عادی ، حالت خواب). |
DI | ورودی دیجیتال | این ورودی دیجیتال برای جایگزینی توابع است. در شکل ، سیگنال به خروجی شیمیت ماشه متصل است اما قبل از همگام سازی. مگر اینکه ورودی دیجیتال به عنوان منبع ساعت استفاده شود ، ماژول دارای عملکرد جایگزین از همگام ساز خود استفاده می کند. |
AIO | ورودی / خروجی آنالوگ | این ورودی / خروجی آنالوگ به توابع جایگزین است. سیگنال مستقیماً به پد متصل است و می تواند به صورت دو طرفه استفاده شود. |
بخشهای زیر به زودی توابع جایگزین برای هر پورت را توصیف می کند و سیگنالهای اصلی را به عملکرد جایگزین مربوط می کند. برای جزئیات بیشتر به شرح عملکرد جایگزین مراجعه کنید.
توابع جایگزین بندر B
پین های بندر B با عملکرد متناوب در نشان داده شده اند جدول 10-3.
جدول 10-3. پورت B عملکردهای جایگزین را پین می کند
پین پورت | تابع جایگزین |
PB5 | ![]() بازنشانی: تنظیم مجدد پین dW: اشکال زدایی WIRE I / O ADC0: ADC کانال ورودی 0 PCINT5: وقفه تغییر پین ، منبع 5 |
PB4 | XTAL2: Crystal Oscillator Output CLKO: سیستم ساعت خروجی ADC2: ADC ورودی کانال 2
OC1B: Timer / Counter1 مقایسه Match B Output PCINT4: Pin Change وقفه 0 ، منبع 4 |
PB3 | XTAL1: ورودی نوسان ساز کریستال CLKI: ورودی ساعت خارجی ADC3: کانال ورودی ADC 3
OC1B: مکمل تایمر / شمارنده 1 مقایسه Match B Output PCINT3: Pin Change وقفه 0 ، منبع 3 |
PB2 | SCK: سریال ورودی ساعت ADC1: کانال ورودی ADC 1
T0: تایمر / شمارنده 0 منبع ساعت USCK: ساعت USI (حالت سه سیم) SCL: ساعت USI (حالت دو سیمه) INT0: وقفه خارجی 0 ورودی PCINT2: وقفه تغییر پین 0 ، منبع 2 |
PB1 | MISO: SPI Master Data Input / Slave Data Output AIN1: مقایسه کننده آنالوگ ، ورودی منفی OC0B: Timer / Counter0 مقایسه Match B Output OC1A: Timer / Counter1 مقایسه Match A Output DO: USI Data Output (سه حالت سیم) PCINT1: تغییر پین وقفه 0 ، منبع 1 |
PB0 | MOSI :: SPI Master Data Output / Slave Data Input AIN0: مقایسه کننده آنالوگ ، ورودی مثبت
OC0A: خروجی تایمر/کنتر0 مقایسه Match A OC1A: تایمر مکمل / شمارنده 1 مقایسه یک خروجی DI: ورودی داده USI (حالت سه سیم) SDA: ورودی داده USI (حالت دو سیمه) AREF: مرجع آنالوگ خارجی PCINT0: وقفه تغییر پین 0 ، منبع 0 |
پورت B ، بیت 5 - RESET / dW / ADC0 / PCINT5
RESET: ورودی تنظیم مجدد خارجی کم فعال است و با عدم برنامه ریزی ("1") فیوز RSTDISBL فعال می شود. هنگام استفاده از پین به عنوان پین RESET ، Pullup فعال شده و درایور خروجی و ورودی دیجیتال غیرفعال می شوند.
dW: هنگامی که فیوز debugWIRE Enable (DWEN) برنامه ریزی می شود و بیت های Lock برنامه ریزی نمی شوند ، سیستم debugWIRE در دستگاه مورد نظر فعال می شود. پین پورت RESET به صورت پین ورودی و خروجی دو جهته سیم و AND (تخلیه باز) با قابلیت کشش تنظیم شده و به دروازه ارتباطی بین هدف و شبیه ساز تبدیل می شود.
ADC0: مبدل آنالوگ به دیجیتال، کانال 0.
PCINT5: منبع تغییر پین تغییر 5.
پورت B ، بیت 4 - XTAL2 / CLKO / ADC2 / OC1B / PCINT4
XTAL2: پین نوسان دهنده ساعت Chip Clock 2. به عنوان پین ساعت برای همه منابع ساعت تراشه بجز نوسانگر RC قابل کالیبراسیون داخلی و ساعت خارجی استفاده می شود. هنگامی که به عنوان پین ساعت استفاده می شود ، پین نمی تواند به عنوان پین ورودی / خروجی استفاده شود. هنگام استفاده از نوسانگر RC یا ساعت خارجی قابل کالیبراسیون داخلی به عنوان منابع ساعت Chip ، PB4 به عنوان یک پین ورودی / خروجی معمولی عمل می کند.
CLKO: ساعت کج شده سیستم را می توان روی پین PB4 تولید کرد. در صورت برنامه نویسی CKOUT Fuse ، بدون توجه به تنظیمات PORTB4 و DDB4 ، ساعت تقسیم شده سیستم خارج می شود. هنگام تنظیم مجدد نیز از آن خارج می شود.
ADC2: مبدل آنالوگ به دیجیتال، کانال 2.
OC1B: خروجی مقایسه خروجی تطبیق: پین PB4 می تواند به عنوان یک خروجی خارجی برای تایمر / شمارنده 1 مقایسه Match B هنگام پیکربندی به عنوان یک خروجی (مجموعه DDB4). پین OC1B نیز پین خروجی برای عملکرد تایمر حالت PWM است.
PCINT4: منبع تغییر پین تغییر 4.
پورت B ، بیت 3 - XTAL1 / CLKI / ADC3 / OC1B / PCINT3
XTAL1: پین نوسان ساز ساعت Chip Clock 1. برای همه منابع ساعت تراشه به جز اسیلاتور RC قابل کالیبراسیون داخلی استفاده می شود. هنگامی که به عنوان پین ساعت استفاده می شود ، پین نمی تواند به عنوان پین ورودی / خروجی استفاده شود.
CLKI: ورودی ساعت از یک منبع ساعت خارجی ، ببینید "ساعت خارجی" در صفحه 26.
ADC3: مبدل آنالوگ به دیجیتال، کانال 3.
OC1B: خروجی معکوس مقایسه خروجی مطابقت: پین PB3 می تواند به عنوان یک خروجی خارجی برای Timer / Counter1 مقایسه Match B هنگام پیکربندی به عنوان یک خروجی (مجموعه DDB3) باشد. پین OC1B نیز پین خروجی معکوس برای عملکرد تایمر حالت PWM است.
PCINT3: منبع تغییر پین تغییر 3.
پورت B ، بیت 2 - SCK / ADC1 / T0 / USCK / SCL / INT0 / PCINT2
SCK: خروجی Master Clock ، پین ورودی Slave Clock برای کانال SPI. وقتی SPI به عنوان Slave فعال باشد ، این پین بدون در نظر گرفتن تنظیمات DDB2 به عنوان ورودی پیکربندی می شود. وقتی SPI به عنوان Master فعال شود ، جهت داده این پین توسط DDPB2 کنترل می شود. هنگامی که پین توسط SPI مجبور به ورودی شود ، بازهم می توان با بیت PORTB2 کنترل کرد.
ADC1: مبدل آنالوگ به دیجیتال، کانال 1.
T0: منبع شمارنده تایمر / شمارنده 0.
USCK: ساعت رابط سریال جهانی حالت سه سیمه.
SCL: ساعت سریال حالت دو سیمه برای حالت دو سیمه USI.
INT0: منبع وقفه خارجی 0.
PCINT2: منبع تغییر پین تغییر 2.
پورت B ، بیت 1 - MISO / AIN1 / OC0B / OC1A / DO / PCINT1
MISO: ورودی داده اصلی ، پین خروجی Slave Data برای کانال SPI. هنگامی که SPI به عنوان Master فعال می شود ، این پین بدون در نظر گرفتن تنظیمات DDB1 به عنوان ورودی پیکربندی می شود. وقتی SPI به عنوان Slave فعال شود ، جهت داده این پین توسط DDB1 کنترل می شود. هنگامی که پین توسط SPI مجبور به ورودی شود ، بازهم می توان با بیت PORTB1 کنترل کرد.
AIN1: ورودی منفی مقایسه کننده آنالوگ. برای جلوگیری از تداخل عملکرد درگاه دیجیتال در عملکرد مقایسه کننده آنال ، پین پورت را به عنوان ورودی با کشش داخلی خاموش تنظیم کنید.
OC0B: خروجی مقایسه خروجی مطابقت. پین PB1 می تواند به عنوان یک خروجی خارجی برای Timer / Counter0 مقایسه شود. پین PB1 باید به عنوان یک خروجی پیکربندی شود (مجموعه DDB1 (یک)) برای ارائه این عملکرد. پین OC0B نیز پین خروجی برای عملکرد تایمر حالت PWM است.
OC1A: خروجی مقایسه خروجی مطابقت: پین PB1 می تواند به عنوان یک خروجی خارجی برای Timer / Counter1 مقایسه Match B هنگام پیکربندی به عنوان یک خروجی (مجموعه DDB1). پین OC1A نیز پین خروجی برای عملکرد تایمر حالت PWM است.
DO: خروجی داده های رابط سریال جهانی حالت سه سیمه. حالت سه سیم خروجی داده مقدار PORTB1 را نادیده می گیرد و وقتی بیت جهت داده DDB1 تنظیم می شود ، آن را به پورت هدایت می کنیم. اگر جهت ورودی باشد و PORTB1 تنظیم شود (یک) PORTB1 همچنان کشش را امکان پذیر می کند.
PCINT1: منبع تغییر پین تغییر 1.
پورت B ، بیت 0 - MOSI / AIN0 / OC0A / OC1A / DI / SDA / AREF / PCINT0
MOSI: خروجی داده SPI Master ، ورودی داده Slave برای کانال SPI. هنگامی که SPI به عنوان Slave فعال باشد ، این پین بدون در نظر گرفتن تنظیمات DDB0 به عنوان ورودی پیکربندی می شود. وقتی SPI به عنوان Master فعال شود ، جهت داده این پین توسط DDB0 کنترل می شود. هنگامی که پین توسط SPI مجبور به ورودی شود ، بازهم می توان با بیت PORTB0 کنترل کرد.
AIN0: ورودی مثبت مقایسه کننده آنالوگ. برای جلوگیری از تداخل عملکرد پورت دیجیتال با عملکرد Analog Comparator ، پین پورت را به عنوان ورودی پیکربندی کنید
OC0A: خروجی مقایسه خروجی مطابقت. پین PB0 می تواند به عنوان یک خروجی خارجی برای Timer / Counter0 مقایسه شود وقتی که به عنوان یک خروجی پیکربندی می شود (مجموعه DDB0 (یک)). پین OC0A نیز پین خروجی برای عملکرد تایمر حالت PWM است.
OC1A: خروجی معکوس مقایسه خروجی مطابقت: پین PB0 می تواند به عنوان یک خروجی خارجی برای Timer / Counter1 مقایسه Match B هنگام پیکربندی به عنوان یک خروجی (مجموعه DDB0). پین OC1A نیز پین خروجی معکوس برای عملکرد تایمر حالت PWM است.
SDA: داده های رابط سریال حالت دو سیمه.
AREF: مرجع آنالوگ خارجی برای ADC. هنگامی که پین به عنوان مرجع خارجی یا حجم داخلی استفاده می شود، درایور کشش و خروجی در PB0 غیرفعال می شود.tage مرجع با خازن خارجی در پین AREF.
DI: ورودی داده در حالت سه سیمه USI. حالت سه سیم USI عملکردهای پورت طبیعی را لغو نمی کند ، بنابراین پین باید به عنوان ورودی برای عملکرد DI پیکربندی شود.
PCINT0: منبع تغییر پین تغییر 0.
جدول 10-4 و جدول 10-5 توابع جایگزین بندر B را به سیگنالهای اصلی نشان داده شده در تصویر مرتبط کنید شکل 10-5 در صفحه 58.
جدول 10-4. سیگنالهای بازدارنده برای عملکردهای جایگزین در PB [5:3]
نام سیگنال | PB5 / RESET / ADC0 / PCINT5 | PB4/ADC2/XTAL2/ OC1B/PCINT4 | PB3/ADC3/XTAL1/ OC1B/PCINT3 |
PUOE | ![]() |
0 | 0 |
PUOV | 1 | 0 | 0 |
DDOE | RSTDISBL(1) • DWEN(1) | 0 | 0 |
DDOV | اشکال زدایی سیم انتقال | 0 | 0 |
PVOE | 0 | فعال کردن OC1B | ![]() فعال کردن OC1B |
PVOV | 0 | OC1B | OC1B |
PTOE | 0 | 0 | 0 |
DIEOE | ![]() RSTDISBL(1) + (PCINT5 • PCIE + ADC0D) |
PCINT4 • PCIE + ADC2D | PCINT3 • PCIE + ADC3D |
DIOV | ADC0D | ADC2D | ADC3D |
DI | ورودی PCINT5 | ورودی PCINT4 | ورودی PCINT3 |
AIO | ورودی RESET ، ورودی ADC0 | ورودی ADC2 | ورودی ADC3 |
توجه: هنگامی که فیوز "0" است (برنامه ریزی شده).
جدول 10-5. سیگنالهای بازدارنده برای عملکردهای جایگزین در PB [2:0]
نام سیگنال | PB2/SCK/ADC1/T0/ USCK/SCL/INT0/PCINT2 | PB1/MISO/DO/AIN1/ OC1A/OC0B/PCINT1 | PB0/MOSI/DI/SDA/AIN0/AR EF/OC1A/OC0A/
PCINT0 |
PUOE | USI_TWO_WIRE | 0 | USI_TWO_WIRE |
PUOV | 0 | 0 | 0 |
DDOE | USI_TWO_WIRE | 0 | USI_TWO_WIRE |
DDOV | (USI_SCL_HOLD + PORTB2) • DDB2 | 0 | ![]() ![]() (SDA + PORTB0) • DDB0 |
PVOE | USI_TWO_WIRE • DDB2 | فعال کردن OC0B + فعال کردن OC1A + USI_THREE_WIRE | ![]() OC0A فعال کردن + OC1A فعال کردن + (USI_TWO_WIRE DDB0) |
PVOV | 0 | OC0B + OC1A + DO | ![]() OC0A + OC1A |
PTOE | USITC | 0 | 0 |
DIEOE | PCINT2 • PCIE + ADC1D + USISIE | PCINT1 • PCIE + AIN1D | PCINT0 • PCIE + AIN0D + USISIE |
DIOV | ADC1D | AIN1D | AIN0D |
DI | T0 / USCK / SCL / INT0 /
ورودی PCINT2 |
ورودی PCINT1 | ورودی DI / SDA / PCINT0 |
AIO | ورودی ADC1 | ورودی منفی مقایسه کننده آنالوگ | ورودی مثبت مقایسه کننده آنالوگ |
ثبت نام
MCUCR - ثبت نام کنترل MCU
بیت | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | هیئت مدیره | ISC01 | ISC00 | MCUCR |
بخوان / بنویس | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
ارزش اولیه | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
بیت 6 - PUD: کشیدن غیرفعال است
وقتی این بیت روی یک نوشته شود ، کشش در پورت های ورودی / خروجی غیرفعال می شود حتی اگر ثبت های DDxn و PORTxn برای فعال کردن کشش ها پیکربندی شده باشد ({DDxn، PORTxn} = 0b01) دیدن "پیکربندی پین" در صفحه 54 برای جزئیات بیشتر در مورد این ویژگی
PORTB - ثبت اطلاعات پورت B
بیت | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x18 | – | – | PORTB5 | PORTB4 | PORTB3 | PORTB2 | PORTB1 | PORTB0 | PORTB |
بخوان / بنویس | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
ارزش اولیه | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
DDRB - پورت B ثبت جهت داده ها
بیت | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x17 | – | – | DDB5 | DDB4 | DDB3 | DDB2 | DDB1 | DDB0 | DDRB |
بخوان / بنویس | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
ارزش اولیه | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
PINB - آدرس پین ورودی Port B
بیت | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x16 | – | – | PINB5 | PINB4 | PINB3 | PINB2 | PINB1 | PINB0 | PINB |
بخوان / بنویس | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
ارزش اولیه | 0 | 0 | N/A | N/A | N/A | N/A | N/A | N/A |
تایمر / شمارنده 8 بیتی با PWM
ویژگی ها
دو واحد خروجی مستقل مقایسه کنید
خروجی دو بافر مقایسه ثبت ها
پاک کردن تایمر در مقایسه بازی (بارگیری مجدد خودکار)
تعدیل کننده عرض پالس صحیح بدون اشکال ، فاز (PWM)
دوره PWM متغیر
ژنراتور فرکانس
سه منبع وقفه مستقل (TOV0 ، OCF0A و OCF0B)
تمام شدview
Timer / Counter0 یک ماژول 8 بیتی Timer / Counter عمومی است ، دارای دو واحد مقایسه خروجی مستقل و با پشتیبانی PWM. این اجازه می دهد تا زمان دقیق اجرای برنامه (مدیریت رویداد) و تولید موج.
نمودار بلوکی ساده تایمر / شمارنده 8 بیتی در نشان داده شده است شکل 11-1. برای قرار دادن واقعی پایه های ورودی / خروجی ، به مراجعه کنید "Pinout ATtiny25 / 45/85" در صفحه 2. رجیسترهای ورودی / خروجی قابل دسترسی به پردازنده ، از جمله بیت های ورودی / خروجی و پین های ورودی / خروجی ، با درشت نشان داده می شوند. ثبت ورود و خروج مختص دستگاه و مکانهای بیت در فهرست ذکر شده است "ثبت توضیحات" در صفحه 77.
تایمر/ شمارنده (TCNT0) و ثبت های مقایسه خروجی (OCR0A و OCR0B) رجیسترهای 8 بیتی هستند. سیگنال های درخواست وقفه (به اختصار Int.Req. در شکل) همه در ثبت پرچم وقفه تایمر (TIFR) قابل مشاهده هستند. همه وقفه ها به صورت جداگانه با ثبت نقاب وقفه تایمر (TIMSK) پوشانده می شوند. TIFR و TIMSK در شکل نشان داده نشده اند.
تایمر/ شمارنده را می توان به صورت داخلی، از طریق پیش مقیاس کننده، یا توسط یک منبع ساعت خارجی روی پین T0 کلاک کرد. بلوک منطقی Clock Select کنترل می کند که تایمر/شمارگر از کدام منبع ساعت و لبه برای افزایش (یا کاهش) مقدار خود استفاده می کند. زمانی که هیچ منبع ساعتی انتخاب نشده باشد، تایمر/ شمارنده غیرفعال است. خروجی از منطق Clock Select به عنوان ساعت تایمر (clkT0) نامیده می شود.
رجیسترهای مقایسه با خروجی دو بافر (OCR0A و OCR0B) در هر زمان با مقدار تایمر / شمارنده مقایسه می شوند. نتیجه مقایسه را می توان ژنراتور Waveform برای تولید PWM یا فرکانس متغیر خروجی در پین های مقایسه خروجی (OC0A و OC0B) استفاده کرد. به "واحد مقایسه خروجی" در صفحه 69 مراجعه کنید. برای جزئیات رویداد Compare Match همچنین مقایسه Flag (OCF0A یا OCF0B) را تنظیم می کند که می تواند برای ایجاد درخواست وقفه مقایسه خروجی استفاده شود.
تعاریف
بسیاری از منابع ثبت و بیت در این بخش به صورت کلی نوشته شده اند. یک حرف کوچک "n" جایگزین شماره تایمر / شمارنده می شود ، در این حالت 0. یک حرف کوچک "x" جایگزین واحد مقایسه خروجی می شود ، در این حالت مقایسه واحد A یا مقایسه واحد B. با این حال ، هنگام استفاده از ثبت یا بیت ، در یک برنامه ، فرم دقیق باید استفاده شود ، به عنوان مثال ، TCNT0 برای دستیابی به مقادیر Timer / Counter0 و غیره.
تعاریف موجود در جدول 11-1 همچنین در کل سند بسیار مورد استفاده قرار می گیرد.
جدول 11-1. تعاریف
ثابت | توضیحات |
پایین | شمارنده 0x00 می شود به پایین می رسد |
حداکثر | شمارنده با حداکثر رسیدن به 0xFF (عدد 255) |
TOP | شمارنده وقتی با بالاترین مقدار در توالی شمارش برابر شود به TOP می رسد. مقدار TOP را می توان به مقدار ثابت 0xFF (MAX) یا مقداری که در ثبت نام OCR0A ذخیره شده اختصاص داد. انتساب به روش کار بستگی دارد |
منابع تایمر / پیشخوان و شمارنده ساعت
تایمر / شمارنده را می توان توسط یک منبع ساعت داخلی یا داخلی کلاک کرد. منبع ساعت با منطق Clock Select انتخاب می شود که توسط بیتهای Clock Select (c) واقع در Timer / Counter0 Control Register (TCCR0B) کنترل می شود.
منبع ساعت داخلی با Prescaler
Timer/Counter0 را می توان مستقیماً توسط ساعت سیستم (با تنظیم CS0[2:0] = 1) کلاک کرد. این سریع ترین عملکرد را با حداکثر فرکانس ساعت تایمر/شمارگر برابر با فرکانس ساعت سیستم (fCLK_I/O) ارائه می دهد. از طرف دیگر، یکی از چهار ضربه از پیش مقیاسکننده میتواند به عنوان منبع ساعت استفاده شود. ساعت از پیش مقیاس شده دارای فرکانس هر کدام است
تنظیم مجدد پیش فروش
پیش فروش پیش فروش رایگان است ، یعنی مستقل از منطق Clock Select Timer/Counter0 عمل می کند. از آنجایی که پیش تعیین کننده پیش نویس پیش نویس تحت تأثیر ساعت سنج تایمر/شمارنده قرار نمی گیرد ، وضعیت پیش شمارشکننده پیامدهایی برای موقعیت هایی که از ساعت پیش مقیاس استفاده می شود ، خواهد داشت. یکی سابقample از یک مصنوع پیش رساندن زمانی است که زمان سنج/شمارنده فعال شده و توسط پیش شمارش کننده زمان بندی می شود (6> CS0 [2: 0]> 1). تعداد چرخه های ساعت سیستم از زمانی که تایمر فعال است تا اولین شمارش اتفاق می افتد می تواند از 1 تا چرخه ساعت سیستم N+1 باشد ، که در آن N مساوی تقسیم کننده پیش مقیاس (8 ، 64 ، 256 یا 1024) است.
برای همگام سازی تایمر / شمارنده برای اجرای برنامه می توانید از Prescaler Reset استفاده کنید.
منبع ساعت خارجی
یک منبع ساعت خارجی اعمال شده روی پین T0 می تواند به عنوان ساعت تایمر/ شمارنده (clkT0) استفاده شود. پین T0 s استampیک بار در هر چرخه ساعت سیستم با منطق همگام سازی پین هدایت می شود. همزمان (sampسپس) سیگنال منتقل می شود
از طریق ردیاب لبه. شکل 11-2 یک نمودار بلوک معادل عملکردی از همگام سازی T0 و منطق آشکارساز لبه را نشان می دهد. ثبات ها در لبه مثبت ساعت سیستم داخلی (clkI/O) کلاک می شوند. چفت در پریود بالای ساعت سیستم داخلی شفاف است.
آشکارساز لبه برای هر یال مثبت (CS0[0:2] = 0) یا منفی (CS7[0:2] = 0) که تشخیص میدهد، یک پالس clkT6 تولید میکند.
رجیسترهای OCR0x هنگام استفاده از هر یک از حالت های مدولاسیون عرض پالس (PWM) دو بافر می شوند. برای حالت های عادی و پاک کردن تایمر در مقایسه (CTC) ، بافر بافر غیرفعال شده است. بافر دو برابر به روزرسانی OCR0x مقایسه ثبت ها به بالا یا پایین دنباله شمارش همزمان می شود. همگام سازی از وقوع پالس های PWM با طول فرد و غیر متقارن جلوگیری می کند ، در نتیجه خروجی بدون اشکال ایجاد می شود.
دسترسی OCR0x Register ممکن است پیچیده به نظر برسد ، اما این مورد وجود ندارد. هنگامی که بافر بافر فعال است ، CPU به OCR0x Buffer Register دسترسی دارد و در صورت غیرفعال کردن بافر دوگانه ، CPU مستقیماً به OCR0x دسترسی پیدا می کند.
مقایسه نیروی خروجی
در حالت های تولید شکل موج غیر PWM ، می توان با نوشتن یک در بیت مقایسه نیروی خروجی (FOC0x) ، خروجی مطابقت مقایسه کننده را مجبور کرد. اجبار Compare Match علامت OCF0x را تنظیم نمی کند یا تایمر را بارگیری مجدد می کند / پاک نمی کند ، اما پین OC0x به روز می شود مثل اینکه یک مقایسه مقایسه واقعی رخ داده باشد (تنظیمات بیت COM0x [1: 0] تعیین می کند که پین OC0x تنظیم شده باشد ، پاک شود یا ضامن)
مقایسه مسدود کردن مسابقه توسط TCNT0 نوشتن
تمام عملیات نوشتن پردازنده در TCNT0 Register ، هرگونه مقایسه مقایسه ای را که در چرخه ساعت تایمر بعدی رخ می دهد ، حتی هنگام توقف تایمر مسدود می کند. این ویژگی اجازه می دهد تا OCR0x با همان مقدار TCNT0 مقدار دهی اولیه شود بدون ایجاد وقفه در هنگام فعال بودن ساعت تایمر / شمارنده.
با استفاده از واحد مقایسه خروجی
از آنجا که نوشتن TCNT0 در هر حالت عملیاتی ، تمام مقایسه های مربوط به یک چرخه ساعت تایمر را مسدود می کند ، هنگام تغییر TCNT0 هنگام استفاده از واحد مقایسه خروجی ، مستقل از اینکه Timer / Counter در حال اجرا است یا خیر ، خطراتی وجود دارد. اگر مقدار نوشته شده در TCNT0 برابر با مقدار OCR0x باشد ، مقایسه Compare از دست می رود و در نتیجه تولید شکل موج نادرست است. به همین ترتیب ، هنگامی که شمارنده کم شمارش می کند ، مقدار TCNT0 برابر با BOTTOM را ننویسید.
تنظیم OC0x باید قبل از تنظیم Data Direction Register برای پین خروجی برای خروجی انجام شود. ساده ترین راه برای تنظیم مقدار OC0x استفاده از بیت های بارق مقایسه نیروی خروجی (FOC0x) در حالت عادی است. ثبت های OC0x حتی در هنگام تغییر بین حالت های Waveform Generation نیز مقادیر خود را حفظ می کنند.
توجه داشته باشید که بیت های COM0x [1: 0] همراه با مقدار مقایسه دو برابر بافر نمی شوند. تغییر بیت های COM0x [1: 0] بلافاصله اعمال می شود.
مقایسه واحد خروجی Match
بیت های حالت مقایسه محصول (COM0x [1: 0]) بیت ها دارای دو عملکرد هستند. Waveform Generator از بیت های COM0x [1: 0] برای تعریف حالت مقایسه خروجی (OC0x) در مقایسه بعدی بازی استفاده می کند. همچنین ، بیت های COM0x [1: 0] منبع خروجی پین OC0x را کنترل می کنند. شکل 11-6 شماتیک ساده منطق تحت تأثیر تنظیمات بیت COM0x [1: 0] را نشان می دهد. رجیسترهای I / O ، بیت های I / O و پین های I / O در شکل با حروف بزرگ نشان داده شده است. فقط قسمتهایی از ثبتهای کنترل ورودی پورت ورودی / خروجی (DDR و PORT) که تحت تأثیر بیتهای COM0x [1: 0] قرار دارند ، نشان داده می شوند. هنگام مراجعه به حالت OC0x ، مرجع برای ثبت داخلی OC0x است ، نه پین OC0x. اگر تنظیم مجدد سیستم رخ دهد ، ثبت نام OC0x به "0" بازنشانی می شود.
هنگامی که OC0A / OC0B به پایه ورودی / خروجی متصل می شود ، عملکرد بیت های COM0A [1: 0] / COM0B [1: 0] به تنظیم بیت WGM0 [2: 0] بستگی دارد. جدول 11-2 وقتی بیت های WGM0 [1: 0] روی حالت طبیعی یا CTC (غیر PWM) تنظیم می شوند ، عملکرد بیت COM0x [2: 0] را نشان می دهد.
جدول 11-2. مقایسه حالت خروجی، حالت غیر PWM
COM0A1 COM0B1 | COM0A0 COM0B0 | توضیحات |
0 | 0 | عملکرد پورت عادی ، OC0A / OC0B قطع شده است. |
0 | 1 | OC0A / OC0B را در مقایسه مقایسه تغییر دهید |
1 | 0 | OC0A / OC0B را در مقایسه مقایسه پاک کنید |
1 | 1 | OC0A / OC0B را روی Compare Match تنظیم کنید |
جدول 11-3 وقتی بیت های WGM0 [1: 0] روی حالت PWM سریع تنظیم می شوند ، عملکرد بیت COM0x [2: 0] را نشان می دهد.
جدول 11-3. مقایسه حالت خروجی، حالت سریع PWM(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | توضیحات |
0 | 0 | عملکرد پورت عادی ، OC0A / OC0B قطع شده است. |
0 | 1 | رزرو شده است |
1 | 0 | پاک کردن OC0A / OC0B در مقایسه مسابقه ، تنظیم OC0A / OC0B در پایین (حالت غیر معکوس) |
1 | 1 | تنظیم OC0A / OC0B در مقایسه مقایسه ، پاک کردن OC0A / OC0B در پایین (حالت معکوس) |
نکته: یک مورد خاص زمانی رخ می دهد که OCR0A یا OCR0B برابر با TOP باشد و COM0A1/COM0B1 تنظیم شود. در این مورد، تطابق مقایسه نادیده گرفته میشود، اما تنظیم یا پاک کردن در BOTTOM انجام میشود. دیدن "حالت سریع PWM" در صفحه 73 برای جزئیات بیشتر
جدول 11-4 وقتی بیت های WGM0 [1: 0] روی حالت PWM صحیح تنظیم می شوند ، عملکرد بیت COM0x [2: 0] را نشان می دهد.
جدول 11-4. حالت خروجی، حالت PWM فاز صحیح را مقایسه کنید(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | توضیحات |
0 | 0 | عملکرد پورت عادی ، OC0A / OC0B قطع شده است. |
0 | 1 | رزرو شده است |
1 | 0 | OC0A / OC0B را در هنگام مقایسه شمارش در هنگام مقایسه پاک کنید. OC0A / OC0B را بر روی Compare Match هنگام شمارش کم تنظیم کنید. |
1 | 1 | OC0A / OC0B را بر روی Compare Match هنگام شمارش مجدد تنظیم کنید. OC0A / OC0B را در هنگام مقایسه شمارش در مقایسه مقایسه کنید. |
نکته: 1. یک مورد خاص زمانی رخ می دهد که OCR0A یا OCR0B برابر TOP باشد و COM0A1/COM0B1 تنظیم شود. در این مورد، Compare Match نادیده گرفته می شود، اما تنظیم یا پاک کردن در TOP انجام می شود. دیدن ”Phase Corporate PWM Mode” در صفحه 74 برای جزئیات بیشتر
بیت 3: 2 - رز: بیت های اختصاصی
این بیت ها بیت های رزرو شده در ATtiny25 / 45/85 هستند و همیشه صفر خواهند بود.
بیت 1: 0 - WGM0 [1: 0]: حالت تولید شکل موج
همراه با بیت WGM02 موجود در TCCR0B Register ، این بیت ها توالی شمارش شمارنده ، منبع مقدار حداکثر (TOP) و نوع تولید شکل موج را کنترل می کنند ، ببینید جدول 11-5. حالت های عملیاتی پشتیبانی شده توسط واحد تایمر / شمارنده عبارتند از: حالت عادی (شمارنده) ، پاک کردن تایمر در حالت مقایسه کردن (CTC) و دو نوع حالت تعدیل عرض پالس (PWM) (نگاه کنید به "حالت های عملکرد" در صفحه 71).
جدول 11-5. شرح بیت حالت تولید شکل موج
حالت | WGM 02 | WGM 01 | WGM 00 | تایمر / شمارنده حالت عملکرد | TOP | به روزرسانی OCRx در | تنظیم پرچم TOV روشن است |
0 | 0 | 0 | 0 | عادی | 0xFF | فوری | حداکثر(1) |
1 | 0 | 0 | 1 | PWM ، مرحله درست است | 0xFF | TOP | پایین(2) |
2 | 0 | 1 | 0 | CTC | OCRA | فوری | حداکثر(1) |
3 | 0 | 1 | 1 | PWM سریع | 0xFF | پایین(2) | حداکثر(1) |
4 | 1 | 0 | 0 | رزرو شده است | – | – | – |
5 | 1 | 0 | 1 | PWM ، مرحله درست است | OCRA | TOP | پایین(2) |
6 | 1 | 1 | 0 | رزرو شده است | – | – | – |
7 | 1 | 1 | 1 | PWM سریع | OCRA | پایین(2) | TOP |
بیت 7 - FOC0A: خروجی نیرو مقایسه کنید A
بیت FOC0A فقط زمانی فعال است که بیت های WGM حالت غیر PWM را مشخص کنند.
با این حال ، برای اطمینان از سازگاری با دستگاه های آینده ، هنگام نوشتن TCCR0B هنگام کار در حالت PWM ، این بیت باید صفر شود. هنگام نوشتن یک منطق در بیت FOC0A ، یک مقایسه سریع فورا به واحد تولید شکل موج مجبور می شود. خروجی OC0A با توجه به تنظیم بیت های COM0A [1: 0] تغییر می کند. توجه داشته باشید که بیت FOC0A به عنوان بارق اجرا می شود. بنابراین این مقدار موجود در بیت های COM0A [1: 0] است که تأثیر مقایسه اجباری را تعیین می کند.
بارق FOC0A هیچ گونه وقفه ای ایجاد نمی کند و همچنین تایمر را در حالت CTC با استفاده از OCR0A به عنوان TOP پاک نمی کند. بیت FOC0A همیشه صفر خوانده می شود.
بیت 6 - FOC0B: مقایسه خروجی نیرو
بیت FOC0B فقط زمانی فعال است که بیت های WGM حالت غیر PWM را مشخص کنند.
با این حال ، برای اطمینان از سازگاری با دستگاه های آینده ، هنگام نوشتن TCCR0B هنگام کار در حالت PWM ، این بیت باید صفر شود. هنگام نوشتن یک منطق در بیت FOC0B ، مقایسه سریع فورا به واحد Waveform Generation مجبور می شود. خروجی OC0B با توجه به تنظیم بیت های COM0B [1: 0] تغییر می کند. توجه داشته باشید که بیت FOC0B به عنوان بارق اجرا می شود. بنابراین این مقدار موجود در بیت های COM0B [1: 0] است که تأثیر مقایسه اجباری را تعیین می کند.
بارق FOC0B هیچ گونه وقفه ای ایجاد نمی کند و همچنین تایمر را در حالت CTC با استفاده از OCR0B به عنوان TOP پاک نمی کند.
بیت FOC0B همیشه صفر خوانده می شود.
بیت 5: 4 - رز: بیت های اختصاصی
این بیت ها بیت های رزرو شده در ATtiny25 / 45/85 هستند و همیشه صفر خواهند بود.
بیت 3 - WGM02: حالت تولید شکل موج
به توضیحات مراجعه کنید ”TCCR0A - Timer / Counter Control Register A” در صفحه 77.
بیت 2: 0 - CS0 [2: 0]: ساعت را انتخاب کنید
سه بیت Clock Select منبع ساعت را برای استفاده توسط Timer / Counter انتخاب می کنند.
جدول 11-6. انتخاب ساعت توضیحات بیت
CS02 | CS01 | CS00 | توضیحات |
0 | 0 | 0 | بدون منبع ساعت (تایمر / شمارنده متوقف شده است) |
0 | 0 | 1 | clkI/O/(بدون پیش مقیاس) |
0 | 1 | 0 | clkI/O/8 (از prescaler) |
0 | 1 | 1 | clkI/O/64 (از prescaler) |
1 | 0 | 0 | clkI/O/256 (از prescaler) |
1 | 0 | 1 | clkI/O/1024 (از prescaler) |
1 | 1 | 0 | منبع ساعت خارجی روی پین T0. ساعت در حال سقوط است. |
1 | 1 | 1 | منبع ساعت خارجی روی پین T0. ساعت در لبه بالا آمدن. |
اگر از حالت های پین خارجی برای Timer / Counter0 استفاده شود ، انتقال روی پین T0 باعث می شود شمارنده شمارنده شود حتی اگر پین به عنوان یک خروجی تنظیم شود. این ویژگی امکان کنترل شمارش توسط نرم افزار را فراهم می کند.
شمارنده و مقایسه کنید
عملکرد کلی Timer / Counter1 در حالت ناهمزمان توصیف می شود و عملیات در حالت همزمان تنها در صورت اختلاف بین این دو حالت ذکر می شود. شکل 12-2 نمودار بلوک ثبت هماهنگ سازی Timer / Counter 1 و تأخیرهای همگام سازی بین ثبت ها را نشان می دهد. توجه داشته باشید که تمام جزئیات جمع آوری ساعت در شکل نشان داده نشده است. مقادیر ثبات Timer / Counter1 قبل از تأثیر بر عملکرد شمارنده ، از طریق ثبات های داخلی هماهنگ سازی که باعث تاخیر همزمان سازی ورودی می شوند ، می روند. ثبت های TCCR1 ، GTCCR ، OCR1A ، OCR1B و OCR1C را می توان بلافاصله پس از نوشتن ثبت ، دوباره خواند. مقادیر برگشت خوانده شده به دلیل همگام سازی ورودی و خروجی ، برای ثبت نام و پرچم های Timer / Counter1 (TCNT1) به تأخیر می افتد (OCF1A ، OCF1B و TOV1).
Timer / Counter1 دارای وضوح بالا و استفاده از دقت بالا با فرصت های پیش فروش کمتر است. همچنین می تواند از دو مدولاتور پالس عرض 8 بیتی دقیق ، با سرعت بالا و با استفاده از سرعت ساعت تا 64 مگاهرتز (یا 32 مگاهرتز در حالت سرعت پایین) پشتیبانی کند. در این حالت ، تایمر / شمارنده 1 و ثبات های مقایسه خروجی به عنوان PWM های دوگانه مستقل با خروجی های غیر معکوس و معکوس غیر همپوشانی عمل می کنند. رجوع شود به صفحه 86 برای توضیحات دقیق در مورد این عملکرد. به همین ترتیب ، فرصت های پیش تنظیم بالا باعث می شود که این واحد برای عملکردهای با سرعت پایین تر یا توابع زمان دقیق با اقدامات غیر تکرار شونده مفید باشد.
شکل 12-2. تایمر / شمارنده 1 همگام سازی ثبت بلوک نمودار.
تایمر / شمارنده 1 و پیش فروش کننده اجازه می دهند تا CPU را از هر منبع ساعت در حالی که دستگاه نگهدارنده در ساعت PCK سریع 64 مگاهرتز (یا 32 مگاهرتز در حالت سرعت پایین) PCK در حالت ناهمزمان کار می کند ، اجرا کنید.
توجه داشته باشید که فرکانس ساعت سیستم باید کمتر از یک سوم فرکانس PCK باشد. مکانیسم همگام سازی تایمر / شمارنده ناهمزمان 1 هنگامی که ساعت سیستم بالا است حداقل به دو لبه PCK نیاز دارد. اگر فرکانس ساعت سیستم خیلی زیاد باشد ، خطر از دست رفتن داده ها یا مقادیر کنترل وجود دارد.
موارد زیر شکل 12-3 نمودار بلوکی را برای Timer / Counter1 نشان می دهد.
جدول 12-1. حالت مقایسه را در حالت PWM انتخاب کنید
COM1x1 | COM1x0 | تأثیر در خروجی مقایسه پین ها |
0 | 0 | OC1x متصل نیست. OC1x متصل نیست. |
0 | 1 | OC1x در مقایسه مسابقه پاک شد. تنظیم کنید whenTCNT1 = 00 دلار. OC1x در مقایسه مقایسه تنظیم شده است. TCNT1 = 00 دلار پاک می شود |
1 | 0 | OC1x در مقایسه مسابقه پاک شد. وقتی TCNT1 = 00 دلار تنظیم شود. OC1x متصل نیست. |
1 | 1 | OC1x تنظیم مقایسه بازی. TCNT1 = 00 دلار پاک می شود OC1x متصل نیست. |
مشخصات ADC
جدول 21-8. ویژگی های ADC، کانال های تک پایان. TA = -40 درجه سانتیگراد تا +85 درجه سانتیگراد
نماد | پارامتر | وضعیت | حداقل | تایپ کنید | حداکثر | واحدها |
قطعنامه | 10 | بیت ها | ||||
دقت مطلق (از جمله INL ، DNL ، و اندازه گیری ، خطاهای Gain و Offset) | VREF = 4V، VCC = 4V،
ساعت ADC = 200 کیلوهرتز |
2 | LSB | |||
VREF = 4V، VCC = 4V،
ساعت ADC = 1 مگاهرتز |
3 | LSB | ||||
VREF = 4V، VCC = 4V،
ساعت ADC = 200 کیلوهرتز حالت کاهش نویز |
1.5 | LSB | ||||
VREF = 4V، VCC = 4V،
ساعت ADC = 1 مگاهرتز حالت کاهش نویز |
2.5 | LSB | ||||
غیر خطی یکپارچه (INL) (دقت پس از جبران و کالیبراسیون به دست آوردن) | VREF = 4V، VCC = 4V،
ساعت ADC = 200 کیلوهرتز |
1 | LSB | |||
افتراقی غیر خطی (DNL) | VREF = 4V، VCC = 4V،
ساعت ADC = 200 کیلوهرتز |
0.5 | LSB | |||
به دست آوردن خطا | VREF = 4V، VCC = 4V،
ساعت ADC = 200 کیلوهرتز |
2.5 | LSB | |||
خطای جبران | VREF = 4V، VCC = 4V،
ساعت ADC = 200 کیلوهرتز |
1.5 | LSB | |||
زمان تبدیل | تبدیل رایگان در حال اجرا | 14 | 280 | μs | ||
فرکانس ساعت | 50 | 1000 | کیلوهرتز | |||
VIN | حجم ورودیtage | GND | VREF | V | ||
پهنای باند ورودی | 38.4 | کیلوهرتز | ||||
AREF | مرجع خارجی جلدtage | 2.0 | VCC | V | ||
VINT | جلد داخلیtage مرجع | 1.0 | 1.1 | 1.2 | V | |
مرجع داخلی 2.56 ولت (1) | VCC > 3.0 ولت | 2.3 | 2.56 | 2.8 | V | |
RREF | 32 | kΩ | ||||
باران | مقاومت ورودی آنالوگ | 100 | MΩ | |||
خروجی ADC | 0 | 1023 | LSB |
توجه: 1. ارزش ها فقط دستورالعمل هستند.
جدول 21-9. ویژگی های ADC، کانال های دیفرانسیل (حالت تک قطبی). TA = -40 درجه سانتیگراد تا +85 درجه سانتیگراد
نماد | پارامتر | وضعیت | حداقل | تایپ کنید | حداکثر | واحدها |
قطعنامه | به دست آوردن = 1 برابر | 10 | بیت ها | |||
به دست آوردن = 20 برابر | 10 | بیت ها | ||||
دقت مطلق (شامل INL ، DNL و
اندازه گیری ، خطاهای Gain و Offset) |
به دست آوردن = 1 برابر
VREF = 4 ولت، VCC = 5 ولت ساعت ADC = 50 - 200 کیلوهرتز |
10.0 | LSB | |||
به دست آوردن = 20 برابر
VREF = 4 ولت، VCC = 5 ولت ساعت ADC = 50 - 200 کیلوهرتز |
20.0 | LSB | ||||
یک خطی غیر خطی یکپارچه (INL) (دقت بعد از جابجایی و کالیبراسیون به دست آوردن) | به دست آوردن = 1 برابر
VREF = 4 ولت، VCC = 5 ولت ساعت ADC = 50 - 200 کیلوهرتز |
4.0 | LSB | |||
به دست آوردن = 20 برابر
VREF = 4 ولت، VCC = 5 ولت ساعت ADC = 50 - 200 کیلوهرتز |
10.0 | LSB | ||||
به دست آوردن خطا | به دست آوردن = 1 برابر | 10.0 | LSB | |||
به دست آوردن = 20 برابر | 15.0 | LSB | ||||
خطای جبران | به دست آوردن = 1 برابر
VREF = 4 ولت، VCC = 5 ولت ساعت ADC = 50 - 200 کیلوهرتز |
3.0 | LSB | |||
به دست آوردن = 20 برابر
VREF = 4 ولت، VCC = 5 ولت ساعت ADC = 50 - 200 کیلوهرتز |
4.0 | LSB | ||||
زمان تبدیل | تبدیل رایگان در حال اجرا | 70 | 280 | μs | ||
فرکانس ساعت | 50 | 200 | کیلوهرتز | |||
VIN | حجم ورودیtage | GND | VCC | V | ||
VDIFF | حجم دیفرانسیل ورودیtage | VREF/Gain | V | |||
پهنای باند ورودی | 4 | کیلوهرتز | ||||
AREF | مرجع خارجی جلدtage | 2.0 | VCC - 1.0 | V | ||
VINT | جلد داخلیtage مرجع | 1.0 | 1.1 | 1.2 | V | |
مرجع داخلی 2.56 ولت (1) | VCC > 3.0 ولت | 2.3 | 2.56 | 2.8 | V | |
RREF | مقاومت ورودی مرجع | 32 | kΩ | |||
باران | مقاومت ورودی آنالوگ | 100 | MΩ | |||
خروجی تبدیل ADC | 0 | 1023 | LSB |
توجه: ارزش ها فقط دستورالعمل هستند.
جدول 21-10. ویژگی های ADC، کانال های دیفرانسیل (حالت دوقطبی). TA = -40 درجه سانتیگراد تا +85 درجه سانتیگراد
نماد | پارامتر | وضعیت | حداقل | تایپ کنید | حداکثر | واحدها |
قطعنامه | به دست آوردن = 1 برابر | 10 | بیت ها | |||
به دست آوردن = 20 برابر | 10 | بیت ها | ||||
دقت مطلق (شامل INL ، DNL و
اندازه گیری ، خطاهای Gain و Offset) |
به دست آوردن = 1 برابر
VREF = 4 ولت، VCC = 5 ولت ساعت ADC = 50 - 200 کیلوهرتز |
8.0 | LSB | |||
به دست آوردن = 20 برابر
VREF = 4 ولت، VCC = 5 ولت ساعت ADC = 50 - 200 کیلوهرتز |
8.0 | LSB | ||||
یک خطی غیر خطی یکپارچه (INL) (دقت بعد از جابجایی و کالیبراسیون به دست آوردن) | به دست آوردن = 1 برابر
VREF = 4 ولت، VCC = 5 ولت ساعت ADC = 50 - 200 کیلوهرتز |
4.0 | LSB | |||
به دست آوردن = 20 برابر
VREF = 4 ولت، VCC = 5 ولت ساعت ADC = 50 - 200 کیلوهرتز |
5.0 | LSB | ||||
به دست آوردن خطا | به دست آوردن = 1 برابر | 4.0 | LSB | |||
به دست آوردن = 20 برابر | 5.0 | LSB | ||||
خطای جبران | به دست آوردن = 1 برابر
VREF = 4 ولت، VCC = 5 ولت ساعت ADC = 50 - 200 کیلوهرتز |
3.0 | LSB | |||
به دست آوردن = 20 برابر
VREF = 4 ولت، VCC = 5 ولت ساعت ADC = 50 - 200 کیلوهرتز |
4.0 | LSB | ||||
زمان تبدیل | تبدیل رایگان در حال اجرا | 70 | 280 | μs | ||
فرکانس ساعت | 50 | 200 | کیلوهرتز | |||
VIN | حجم ورودیtage | GND | VCC | V | ||
VDIFF | حجم دیفرانسیل ورودیtage | VREF/Gain | V | |||
پهنای باند ورودی | 4 | کیلوهرتز | ||||
AREF | مرجع خارجی جلدtage | 2.0 | VCC - 1.0 | V | ||
VINT | جلد داخلیtage مرجع | 1.0 | 1.1 | 1.2 | V | |
مرجع داخلی 2.56 ولت (1) | VCC > 3.0 ولت | 2.3 | 2.56 | 2.8 | V | |
RREF | مقاومت ورودی مرجع | 32 | kΩ | |||
باران | مقاومت ورودی آنالوگ | 100 | MΩ | |||
خروجی تبدیل ADC | -512 | 511 | LSB |
خلاصه مجموعه دستورالعمل ها
یادگاری | کارگردانها | توضیحات | عملیات | پرچم ها | # ساعت |
دستورالعمل های حساب و منطق | |||||
اضافه کنید | خیابان ، خیابان | دو رجیستر اضافه کنید | Rd ← Rd + Rr | Z ، C ، N ، V ، H | 1 |
ADC | خیابان ، خیابان | اضافه کردن با دو ثبت نام | Rd ← Rd + Rr + C | Z ، C ، N ، V ، H | 1 |
ADIW | Rdl ، K | فوری را به Word اضافه کنید | Rdh:Rdl ← Rdh:Rdl + K | Z ، C ، N ، V ، S | 2 |
زیر | خیابان ، خیابان | دو ثبت را کم کنید | Rd ← Rd – Rr | Z ، C ، N ، V ، H | 1 |
من رفتم بالا | Rd ، K | ثابت را از ثبت کم کنید | Rd ← Rd – K | Z ، C ، N ، V ، H | 1 |
SBC | خیابان ، خیابان | با حمل دو ثبت نام کم کنید | Rd ← Rd – Rr – C | Z ، C ، N ، V ، H | 1 |
SBCI | Rd ، K | با Carry Constant از Reg کم کنید. | Rd ← Rd – K – C | Z ، C ، N ، V ، H | 1 |
SBIW | Rdl ، K | فوری از Word کم کنید | Rdh:Rdl ← Rdh:Rdl – K | Z ، C ، N ، V ، S | 2 |
و | خیابان ، خیابان | ثبت و منطقی | Rd ← Rd ∙ Rr | Z ، N ، V | 1 |
ANDI | Rd ، K | منطقی و ثبت نام و ثابت | Rd ← Rd ∙ K | Z ، N ، V | 1 |
OR | خیابان ، خیابان | ثبت نام منطقی یا | Rd ← Rd v Rr | Z ، N ، V | 1 |
ORI | Rd ، K | منطقی یا ثبت نام و ثابت | Rd ← Rd v K | Z ، N ، V | 1 |
EOR | خیابان ، خیابان | ثبت نام های منحصر به فرد یا | Rd ← Rd ⊕ Rr | Z ، N ، V | 1 |
COM | Rd | مکمل یکی | Rd ← 0xFF − Rd | Z ، C ، N ، V | 1 |
NEG | Rd | مکمل دو | Rd ← 0x00 − Rd | Z ، C ، N ، V ، H | 1 |
SBR | Rd ، K | بیت (ها) را در ثبت نام تنظیم کنید | Rd ← Rd v K | Z ، N ، V | 1 |
CBR | Rd ، K | پاک کردن بیت (ها) در ثبت نام | Rd ← Rd ∙ (0xFF – K) | Z ، N ، V | 1 |
INC | Rd | افزایش | Rd ← Rd + 1 | Z ، N ، V | 1 |
دسامبر | Rd | کاهش | Rd ← Rd − 1 | Z ، N ، V | 1 |
TST | Rd | تست صفر یا منهای | جاده ← جاده ∙ جاده | Z ، N ، V | 1 |
CLR | Rd | پاک کردن ثبت نام | جاده ← جاده ⊕ جاده | Z ، N ، V | 1 |
SER | Rd | ثبت نام را تنظیم کنید | Rd ← 0xFF | هیچ کدام | 1 |
دستورالعمل های واحد | |||||
RJMP | k | پرش نسبی | PC ← PC + k + 1 | هیچ کدام | 2 |
IJMP | پرش غیرمستقیم به (Z) | کامپیوتر ← Z | هیچ کدام | 2 | |
تماس بگیرید | k | تماس فرعی نسبی نسبی | PC ← PC + k + 1 | هیچ کدام | 3 |
تماس بگیرید | تماس غیر مستقیم با (Z) | کامپیوتر ← Z | هیچ کدام | 3 | |
RET | بازگشت زیرروال | PC ← STACK | هیچ کدام | 4 | |
RETI | بازگشت را قطع کنید | PC ← STACK | I | 4 | |
CPSE | خیابان ، خیابان | مقایسه کنید ، اگر برابر هستید رد شوید | اگر (Rd = Rr) PC ← PC + 2 یا 3 | هیچ کدام | 1/2/3 |
CP | خیابان ، خیابان | مقایسه کنید | Rd - Rr | Z ، N ، V ، C ، H | 1 |
CPC | خیابان ، خیابان | مقایسه با Carry | Rd - Rr - C | Z ، N ، V ، C ، H | 1 |
CPI | Rd ، K | ثبت نام را با فوری مقایسه کنید | Rd - K | Z ، N ، V ، C ، H | 1 |
SBRC | Rr ، b | اگر بیت در ثبت نام پاک شد ، رد شوید | اگر (Rr(b)=0) PC ← PC + 2 یا 3 | هیچ کدام | 1/2/3 |
SBRS | Rr ، b | اگر بیت در ثبت نام تنظیم شده است ، رد شوید | اگر (Rr(b)=1) PC ← PC + 2 یا 3 | هیچ کدام | 1/2/3 |
SBIC | پ ، ب | اگر Bit در I / O ثبت نام پاک شد ، رد شوید | اگر (P(b)=0) PC ← PC + 2 یا 3 | هیچ کدام | 1/2/3 |
SBIS | پ ، ب | اگر Bit در I / O Register تنظیم شده است ، رد شوید | اگر (P(b)=1) PC ← PC + 2 یا 3 | هیچ کدام | 1/2/3 |
BRBS | s ، k | اگر وضعیت پرچم تنظیم شده ، شعبه دهید | اگر (SREG(ها) = 1) سپس PC←PC+k + 1 | هیچ کدام | 1/2 |
BRBC | s ، k | در صورت پاک شدن پرچم وضعیت ، شعبه دهید | اگر (SREG(ها) = 0) سپس PC←PC+k + 1 | هیچ کدام | 1/2 |
BREQ | k | شاخه اگر برابر باشد | اگر (Z = 1) سپس PC ← PC + k + 1 | هیچ کدام | 1/2 |
برن | k | شاخه اگر مساوی نباشد | اگر (Z = 0) سپس PC ← PC + k + 1 | هیچ کدام | 1/2 |
BRCS | k | اگر Carry Set تنظیم کنید | اگر (C = 1) سپس PC ← PC + k + 1 | هیچ کدام | 1/2 |
BRCC | k | اگر Carry پاک شد شعبه دهید | اگر (C = 0) سپس PC ← PC + k + 1 | هیچ کدام | 1/2 |
BRSH | k | اگر همان یا بالاتر شعبه باشد | اگر (C = 0) سپس PC ← PC + k + 1 | هیچ کدام | 1/2 |
BRLO | k | اگر پایین تر است | اگر (C = 1) سپس PC ← PC + k + 1 | هیچ کدام | 1/2 |
BRMI | k | شعبه اگر منهای | اگر (N = 1) سپس PC ← PC + k + 1 | هیچ کدام | 1/2 |
BRPL | k | شعبه اگر به علاوه | اگر (N = 0) سپس PC ← PC + k + 1 | هیچ کدام | 1/2 |
BRGE | k | شعبه اگر بزرگتر یا برابر باشد ، امضا شده است | اگر (N ⊕ V= 0) سپس PC ← PC + k + 1 | هیچ کدام | 1/2 |
BRLT | k | شعبه اگر کمتر از صفر باشد ، امضا کنید | اگر (N ⊕ V= 1) سپس PC ← PC + k + 1 | هیچ کدام | 1/2 |
BRHS | k | اگر نیمه پرچم را تنظیم کنید ، شعبه بزنید | اگر (H = 1) سپس PC ← PC + k + 1 | هیچ کدام | 1/2 |
BRHC | k | اگر نیمه پرچم حمل پاک شد ، شعبه بزنید | اگر (H = 0) سپس PC ← PC + k + 1 | هیچ کدام | 1/2 |
BRTS | k | اگر پرچم T تنظیم شود ، شعبه دهید | اگر (T = 1) سپس PC ← PC + k + 1 | هیچ کدام | 1/2 |
BRTC | k | در صورت پاک شدن پرچم T شعبه دهید | اگر (T = 0) سپس PC ← PC + k + 1 | هیچ کدام | 1/2 |
BRVS | k | در صورت تنظیم پرچم سرریز ، شعبه دهید | اگر (V = 1) سپس PC ← PC + k + 1 | هیچ کدام | 1/2 |
BRVC | k | اگر پرچم Overflow پاک شود ، شعبه بزنید | اگر (V = 0) سپس PC ← PC + k + 1 | هیچ کدام | 1/2 |
رشوه دادن | k | اگر وقفه فعال باشد ، شعبه دهید | اگر (I = 1) سپس PC ← PC + k + 1 | هیچ کدام | 1/2 |
عروس | k | اگر وقفه غیرفعال باشد ، شعبه دهید | اگر (I = 0) سپس PC ← PC + k + 1 | هیچ کدام | 1/2 |
دستورالعمل های BIT و BIT-TEST | |||||
SBI | پ ، ب | تنظیم بیت در ثبت نام ورودی / خروجی | I/O(P,b) ← 1 | هیچ کدام | 2 |
CBI | پ ، ب | پاک کردن بیت در ثبت نام ورودی / خروجی | I/O(P,b) ← 0 | هیچ کدام | 2 |
LSL | Rd | تغییر منطقی به چپ | Rd(n+1) ← Rd(n)، Rd(0) ← 0 | Z ، C ، N ، V | 1 |
LSR | Rd | تغییر منطقی به راست | Rd(n) ← Rd(n+1)، Rd(7) ← 0 | Z ، C ، N ، V | 1 |
نقش | Rd | از طریق حمل به چپ بچرخید | Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) | Z ، C ، N ، V | 1 |
ROR | Rd | از طریق حمل درست بچرخید | Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) | Z ، C ، N ، V | 1 |
ASR | Rd | حسابی تغییر راست | Rd(n) ← Rd(n+1)، n=0..6 | Z ، C ، N ، V | 1 |
یادگاری | کارگردانها | توضیحات | عملیات | پرچم ها | # ساعت |
مبادله | Rd | Nibbles را عوض کنید | Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) | هیچ کدام | 1 |
BSET | s | ست پرچم | SREG(های) ← 1 | SREG (ها) | 1 |
BCLR | s | پرچم پاک کردن | SREG(های) ← 0 | SREG (ها) | 1 |
BST | Rr ، b | ذخیره بیت از ثبت نام تا T | T ← Rr(b) | T | 1 |
BLD | Rd ، b | بارگذاری کمی از T برای ثبت نام | Rd(b) ← T | هیچ کدام | 1 |
SEC | حمل را تنظیم کنید | ج ← 1 | C | 1 | |
CLC | پاک کردن حمل | ج ← 0 | C | 1 | |
SEN | تنظیم پرچم منفی | N ← 1 | N | 1 | |
CLN | پرچم منفی را پاک کنید | N ← 0 | N | 1 | |
SEZ | صفر پرچم را تنظیم کنید | Z ← 1 | Z | 1 | |
CLZ | صفر پرچم را پاک کنید | Z ← 0 | Z | 1 | |
SEI | فعال کردن وقفه جهانی | من ← 1 | I | 1 | |
CLI | وقفه جهانی را غیرفعال کنید | من ← 0 | I | 1 | |
SES | پرچم امضا شده را تنظیم کنید | S ← 1 | S | 1 | |
CLS | پرچم آزمون امضا شده را پاک کنید | S ← 0 | S | 1 | |
SEV | تنظیم Twos Complement Overflow. | V ← 1 | V | 1 | |
CLV | پاک کردن سرریز مکمل Twos | V ← 0 | V | 1 | |
تنظیم کنید | T را در SREG تنظیم کنید | T ← 1 | T | 1 | |
CLT | T را در SREG پاک کنید | T ← 0 | T | 1 | |
SEH | Half Carry Flag را در SREG تنظیم کنید | H ← 1 | H | 1 | |
CLH | پرچم نیمه حمل را در SREG پاک کنید | H ← 0 | H | 1 | |
دستورالعمل های انتقال داده | |||||
MOV | خیابان ، خیابان | بین رجیسترها حرکت کنید | Rd ← Rr | هیچ کدام | 1 |
MOVW | خیابان ، خیابان | ثبت کلمه را کپی کنید | Rd+1:Rd ← Rr+1:Rr | هیچ کدام | 1 |
LDI | Rd ، K | بارگذاری فوری | جاده ← K | هیچ کدام | 1 |
LD | Rd ، X | بارگیری غیر مستقیم | Rd ← (X) | هیچ کدام | 2 |
LD | Rd ، X + | بارگذاری غیر مستقیم و Post-Inc. | Rd ← (X)، X ← X + 1 | هیچ کدام | 2 |
LD | Rd ، - X | بارگیری غیر مستقیم و پیش از دسامبر. | X ← X – 1، جاده ← (X) | هیچ کدام | 2 |
LD | Rd ، Y | بارگیری غیر مستقیم | Rd ← (Y) | هیچ کدام | 2 |
LD | Rd ، Y + | بارگذاری غیر مستقیم و Post-Inc. | Rd ← (Y)، Y ← Y + 1 | هیچ کدام | 2 |
LD | جاده ، - Y | بارگیری غیر مستقیم و پیش از دسامبر. | Y ← Y – 1، Rd ← (Y) | هیچ کدام | 2 |
LDD | Rd ، Y + q | بارگذاری غیر مستقیم با جابجایی | Rd ← (Y + q) | هیچ کدام | 2 |
LD | Rd ، Z | بارگیری غیر مستقیم | Rd ← (Z) | هیچ کدام | 2 |
LD | Rd ، Z + | بارگذاری غیر مستقیم و Post-Inc. | Rd ← (Z)، Z ← Z+1 | هیچ کدام | 2 |
LD | Rd ، -Z | بارگیری غیر مستقیم و پیش از دسامبر. | Z ← Z – 1، Rd ← (Z) | هیچ کدام | 2 |
LDD | Rd ، Z + q | بارگذاری غیر مستقیم با جابجایی | Rd ← (Z + q) | هیچ کدام | 2 |
LDS | Rd ، k | بارگیری مستقیم از SRAM | Rd ← (k) | هیچ کدام | 2 |
ST | X ، Rr | ذخیره غیر مستقیم | (X) ← Rr | هیچ کدام | 2 |
ST | X + ، Rr | فروشگاه غیر مستقیم و Post-Inc. | (X) ← Rr، X ← X + 1 | هیچ کدام | 2 |
ST | - X ، Rr | ذخیره غیر مستقیم و قبل از دسامبر. | X ← X – 1، (X) ← Rr | هیچ کدام | 2 |
ST | Y ، Rr | ذخیره غیر مستقیم | (Y) ← Rr | هیچ کدام | 2 |
ST | Y + ، Rr | فروشگاه غیر مستقیم و Post-Inc. | (Y) ← Rr، Y ← Y + 1 | هیچ کدام | 2 |
ST | - Y ، Rr | ذخیره غیر مستقیم و قبل از دسامبر. | Y ← Y – 1, (Y) ← Rr | هیچ کدام | 2 |
STD | Y + q ، Rr | ذخیره غیر مستقیم با جابجایی | (Y + q) ← Rr | هیچ کدام | 2 |
ST | Z ، Rr | ذخیره غیر مستقیم | (Z) ← Rr | هیچ کدام | 2 |
ST | Z + ، Rr | فروشگاه غیر مستقیم و Post-Inc. | (Z) ← Rr، Z ← Z + 1 | هیچ کدام | 2 |
ST | -Z ، Rr | ذخیره غیر مستقیم و قبل از دسامبر. | Z ← Z – 1، (Z) ← Rr | هیچ کدام | 2 |
STD | Z + q ، Rr | ذخیره غیر مستقیم با جابجایی | (Z + q) ← Rr | هیچ کدام | 2 |
STS | k ، Rr | ذخیره مستقیم به SRAM | (ک) ← Rr | هیچ کدام | 2 |
LPM | حافظه برنامه را بارگیری کنید | R0 ← (Z) | هیچ کدام | 3 | |
LPM | Rd ، Z | حافظه برنامه را بارگیری کنید | Rd ← (Z) | هیچ کدام | 3 |
LPM | Rd ، Z + | بارگذاری حافظه برنامه و Post-Inc | Rd ← (Z)، Z ← Z+1 | هیچ کدام | 3 |
SPM | حافظه برنامه را ذخیره کنید | (z) ← R1:R0 | هیچ کدام | ||
IN | Rd ، P | در بندر | جاده ← پ | هیچ کدام | 1 |
خارج | P ، Rr | بندر خارج | P ← Rr | هیچ کدام | 1 |
فشار | Rr | ثبت نام در پشته را فشار دهید | پشته ← Rr | هیچ کدام | 2 |
POP | Rd | پاپ ثبت نام از پشته | Rd ← STACK | هیچ کدام | 2 |
دستورالعمل های کنترل MCU | |||||
نه | بدون عملیات | هیچ کدام | 1 | ||
بخواب | بخواب | (برای عملکرد خواب به توصیف خاص مراجعه کنید) | هیچ کدام | 1 | |
WDR | تنظیم مجدد دیده بان | (به توصیف خاص WDR / تایمر مراجعه کنید) | هیچ کدام | 1 | |
شکستن | شکستن |
سرعت (مگاهرتز) (1) | عرضه جلدtage (V) | محدوده دما | بسته (2) | کد سفارش (3) |
10 | 1.8 - 5.5 | صنعتی
(-40 ° C تا + 85 ° C) (4) |
8P3 | ATtiny45V-10PU |
8S2 | ATtiny45V-10SU ATtiny45V-10SUR ATtiny45V-10SH ATtiny45V-10SHR | |||
8X | ATtiny45V-10XU ATtiny45V-10XUR | |||
20M1 | ATtiny45V-10MU ATtiny45V-10MUR | |||
20 | 2.7 - 5.5 | صنعتی
(-40 ° C تا + 85 ° C) (4) |
8P3 | ATtiny45-20PU |
8S2 | ATtiny45-20SU ATtiny45-20SUR
ATtiny45-20SH ATtiny45-20SHR |
|||
8X | ATtiny45-20XU ATtiny45-20XUR | |||
20M1 | ATtiny45-20MU ATtiny45-20MUR |
یادداشت ها: 1. برای سرعت در مقابل منبع جلدtage ، به بخش مراجعه کنید 21.3 "سرعت" در صفحه 163.
همه بسته ها فاقد سرب ، بدون هالید و کاملاً سبز هستند و با دستورالعمل اروپایی محدودیت مواد خطرناک (RoHS) مطابقت دارند.
نشانگرهای کد
H: پایان سرب NiPdAu
U: قلع مات
R: نوار و حلقه
این دستگاه ها همچنین می توانند به صورت ویفر تهیه شوند. لطفاً برای جزئیات سفارش و حداقل مقدار با دفتر فروش آتمل محلی خود تماس بگیرید.
اراتا
Errata ATtiny25
نامه تجدیدنظر در این بخش به تجدید نظر در دستگاه ATtiny25 اشاره دارد.
Rev D - F
هیچ خللی شناخته نشده است.
Rev B - C
خواندن EEPROM در حجم کم عرضه ممکن است خراب شودtage / فرکانس پایین ساعت
خواندن EEPROM در حجم کم عرضه ممکن است خراب شودtage / فرکانس پایین ساعت
تلاش برای خواندن EEPROM در فرکانس های ساعت کم و/یا منبع تغذیه کمtage ممکن است منجر به داده های نامعتبر شود.
رفع مشکل / راه حل
وقتی فرکانس ساعت زیر 1 مگاهرتز و حجم منبع تغذیه است ، از EEPROM استفاده نکنیدtage زیر 2 ولت است. اگر فرکانس عملکرد را نمی توان از 1 مگاهرتز بالاتر برد ، حجم را تأمین کنیدtage باید بیشتر از 2V باشد. به طور مشابه ، اگر عرضه جلدtage را نمی توان از 2 ولت بالاتر برد ، پس فرکانس کار باید بیش از 1 مگاهرتز باشد.
این ویژگی وابسته به دما شناخته شده است اما مشخص نشده است. فقط برای دمای اتاق دستورالعمل ارائه می شود.
کشیش A
نه sampرهبری.
Errata ATtiny45
نامه تجدیدنظر در این بخش به تجدید نظر در دستگاه ATtiny45 اشاره دارد.
Rev F - G
هیچ گونه اشتباهات شناخته شده ای وجود ندارد
Rev D - E
خواندن EEPROM در حجم کم عرضه ممکن است خراب شودtage / فرکانس پایین ساعت
خواندن EEPROM در حجم کم عرضه ممکن است خراب شودtage / فرکانس پایین ساعت
تلاش برای خواندن EEPROM در فرکانس های ساعت کم و/یا منبع تغذیه کمtage ممکن است منجر به داده های نامعتبر شود.
رفع مشکل / راه حل
وقتی فرکانس ساعت زیر 1 مگاهرتز و حجم منبع تغذیه است ، از EEPROM استفاده نکنیدtage زیر 2 ولت است. اگر فرکانس عملکرد را نمی توان از 1 مگاهرتز بالاتر برد ، حجم را تأمین کنیدtage باید بیشتر از 2V باشد. به طور مشابه ، اگر عرضه جلدtage را نمی توان از 2 ولت بالاتر برد ، پس فرکانس کار باید بیش از 1 مگاهرتز باشد.
این ویژگی وابسته به دما شناخته شده است اما مشخص نشده است. فقط برای دمای اتاق دستورالعمل ارائه می شود.
Rev B - C
PLL قفل نمی شود
EEPROM خوانده شده از کد برنامه در Lock Bit Mode 3 کار نمی کند
خواندن EEPROM در حجم کم عرضه ممکن است خراب شودtage / فرکانس پایین ساعت
شمارنده تایمر 1 تولید خروجی PWM در OC1B- XOC1B به درستی کار نمی کند
PLL قفل نمی شود
در فرکانس های کمتر از 6.0 مگاهرتز ، PLL قفل نمی شود
رفع مشکل / راه حل
هنگام استفاده از PLL ، با سرعت 6.0 مگاهرتز یا بالاتر کار کنید.
EEPROM خوانده شده از کد برنامه در Lock Bit Mode 3 کار نمی کند
هنگامی که بیت های حافظه قفل LB2 و LB1 در حالت 3 برنامه ریزی می شوند ، خواندن EEPROM از کد برنامه کار نمی کند.
رفع مشکل / کار کردن در اطراف
درصورت نیاز به خواندن کد برنامه از EEPROM ، حالت Lock Bit Protection Mode 3 را تنظیم نکنید.
خواندن EEPROM در حجم کم عرضه ممکن است خراب شودtage / فرکانس پایین ساعت
تلاش برای خواندن EEPROM در فرکانس های ساعت کم و/یا منبع تغذیه کمtage ممکن است منجر به داده های نامعتبر شود.
رفع مشکل / راه حل
وقتی فرکانس ساعت زیر 1 مگاهرتز و حجم منبع تغذیه است ، از EEPROM استفاده نکنیدtage زیر 2 ولت است. اگر فرکانس عملکرد را نمی توان از 1 مگاهرتز بالاتر برد ، حجم را تأمین کنیدtage باید بیشتر از 2V باشد. به طور مشابه ، اگر عرضه جلدtage را نمی توان از 2 ولت بالاتر برد ، پس فرکانس کار باید بیش از 1 مگاهرتز باشد.
این ویژگی وابسته به دما شناخته شده است اما مشخص نشده است. فقط برای دمای اتاق دستورالعمل ارائه می شود.
شمارنده تایمر 1 تولید خروجی PWM در OC1B - XOC1B به درستی کار نمی کند
Timer Counter1 PWM خروجی OC1B-XOC1B به درستی کار نمی کند. فقط در مواردی که بیت های کنترل ، COM1B1 و COM1B0 به ترتیب در COM1A1 و COM1A0 در یک حالت قرار بگیرند ، عملکرد OC1B-XOC1B به درستی کار می کند.
رفع مشکل / کار کردن در اطراف
تنها راه حل استفاده از همان تنظیم کنترل در بیت های کنترل COM1A [1: 0] و COM1B [1: 0] است ، به جدول 14-4 در صفحه داده مراجعه کنید. این مشکل برای Tiny45 rev D برطرف شده است.
کشیش A
مصرف برق بسیار پایین است
هنگام گام برداشتن در وقفه ها ، DebugWIRE ارتباط خود را از دست می دهد
PLL قفل نمی شود
EEPROM خوانده شده از کد برنامه در Lock Bit Mode 3 کار نمی کند
خواندن EEPROM در حجم کم عرضه ممکن است خراب شودtage / فرکانس پایین ساعت
مصرف برق بسیار پایین است
سه وضعیت منجر به کاهش بیش از حد مصرف برق می شود. اینها هستند:
ساعت خارجی توسط فیوزها انتخاب می شود ، اما I / O PORT همچنان به عنوان یک خروجی فعال است.
EEPROM قبل از قطع شدن برق خوانده می شود.
VCC 4.5 ولت یا بالاتر است.
سلب مسئولیت: اطلاعات این سند در رابطه با محصولات Atmel ارائه شده است. هیچ مجوزی، صریح یا ضمنی، از طریق ممانعت یا موارد دیگر، به هیچ گونه حق مالکیت معنوی توسط این سند یا در رابطه با فروش محصولات Atmel اعطا نمی شود. به جز مواردی که در شرایط و ضوابط فروش ATMEL در ATMEL ذکر شده است WEBسایت، ATMEL هیچ مسئولیتی ندارد و هر گونه ضمانت نامه صریح، ضمنی یا قانونی مربوط به محصولات خود از جمله، اما نه محدود به، ضمانت نامه ضمنی، ضمانت نامه ضمانت و ضمانت غیرقانونی، را سلب می کند. ATMEL در هیچ موردی در قبال خسارات مستقیم، غیرمستقیم، تبعی، کیفری، خاص یا اتفاقی (از جمله، بدون محدودیت، ضررهای ناشی از ضرر و زیان و ضرر و زیانهای غیرمستقیم و غیرمستقیم و غیرقانونی آمریکا) مسئول نخواهد بود. این سند، حتی اگر ATMEL در مورد احتمال چنین آسیب هایی توصیه شده باشد.
Atmel هیچگونه اظهارنظر یا ضمانتی در رابطه با صحت یا کامل بودن محتویات این سند نمی دهد و این حق را برای خود محفوظ می دارد که در هر زمان بدون اطلاع قبلی، مشخصات و توضیحات محصولات را تغییر دهد. Atmel هیچ تعهدی برای به روز رسانی اطلاعات موجود در اینجا ندارد. محصولات Atmel برای برنامه های خودروسازی مناسب نیستند و نباید در آنها استفاده شود، مگر اینکه به طور خاص در غیر این صورت ارائه شود. محصولات Atmel برای استفاده به عنوان اجزای سازنده در برنامه هایی که برای پشتیبانی یا حفظ حیات در نظر گرفته شده اند، مجاز یا ضمانت نامه نیستند.