شکل ۱-۲ پایه های atmega32
۴-۵ بلوک دیاگرام ATmega ۳۲ :
شکل۲-۲ مدار داخلی میکرو کنترولر AVR
۴-۶ توصیف پایه ها ATmega 32:
VCC : تغذیه ولتاژ دیجیتال.
GND : زمین.
PORTA ( PA7… PA0 ) : پورت A بعنوان ورودی آنالوگ مبدل A/D عمل می کند. اگر از پورت A بعنوان مبدل A/D استفاده نشود، بعنوان پورت I/O دو طرفه عمل می کند. پین های پورت دارای مقاومت Pull-up داخلی هستند. وقتی که پینهای PA0 تا PA7 بعنوان ورودی استفاده می شوند و بصورت خارجی Pull Down شده باشند، در صورتیکه مقاومتهای Pull-up داخلی فعال شده باشند، آنها بعنوان منابع جریان عمل می کنند.
PORTB ( PB7… PB0 ) : پورت B یک پورت I/O دو طرفه است با مقاومتهای Pull-up داخلی که برای هر پایه اختصاص داده شده است. پینهای پورت B در حالت ورودی وقتی که بصورت خارجی Pull-Down شده باشند، اگر مقاومتهای Pull-up داخلی فعال باشند، بعنوان منابع جریان عمل می کنند . پورت B اعمال متنوع و مخصوص دیگری را هم انجام می دهد که در ادامه توضیح داده می شود.
(( اینجا فقط تکه ای از متن درج شده است. برای خرید متن کامل فایل پایان نامه با فرمت ورد می توانید به سایت feko.ir مراجعه نمایید و کلمه کلیدی مورد نظرتان را جستجو نمایید. ))
PORTC ( PC7… PC0 ) : پورت C یک پورت I/O دو طرفه است با مقاومتهای Pull-up داخلی که برای هر پایه اختصاص داده شده است. پینهای پورت C در حالت ورودی وقتی که بصورت خارجی Pull-Down شده باشند، اگر مقاومتهای Pull-up داخلی فعال باشند، بعنوان منابع جریان عمل می کنند.
پورت C اغلب برای اعمال مخصوص دیگری نیز استفاده می شود که توضیح داده خواهد شد.
PORTD ( PD7… PD0 ) : پورت D یک پورت I/O دوطرفه است با مقاومتهای Pull-up داخلی که برای هر پایه اختصاص داده شده است. پینهای پورت D در حالت ورودی وقتی که بصورت خارجی Pull-Down شده باشند، اگر مقاومتهای Pull-up داخلی فعال باشند، بعنوان منابع جریان عمل می کنند. پورت D هم اعمال مخصوص دیگری انجام می دهد که توضیح داده خواهد شد.
RESET : ورودی Reset ، هرگاه سطح پایینی به مدت حداقل طول یک پالس به این پایه برسد، Reset تولید می شود، حتی اگر کلاک کار نکند. حداقل طول پالس در جدول ۱-۱ داده شده است.
جدول ۱-۱ ولتازآستانه پایه rest
XTAL1 : ورودی معکوس اسیلاتور و ورودی مدارهای ورودی.
XTAL2 : خروجی معکوس اسیلاتور.
AVCC : این پایه منبع ولتاژِ پین برای پورت A و مبدل A/D است. این پایه باید به صورت خارجی به Vcc وصل شود حتی اگر از ADC استفاده نمی شود. اگر از ADC استفاده شود این پایه باید از طریق فیلتر پایین گذر به Vcc وصل شود.
AREF : این پایه مرجع آنالوگ پینها برای مبدل A/D است.
۴-۶ هسته مرکزی ATmega 32 ( CPU ) :
در این بخش درباره معماری هسته مرکزی AVR در حالت کلی بحث می کنیم. وظیفه اصلی CPU اطمینان از اجرای صحیح برنامه است. بنابراین CPU باید قادر باشد تا به حافظه ها دسترسی پیدا کند، محاسبات را انجام دهد، ارتباط با خارج را کنترل کند و وقفه ها را رسیدگی کند.
۴-۷ حافظه های ATmega16 AVR :
در این بخش حافظه های مختلف در ATmega16 را توصیف می کنیم. ساختار AVR دارای دو فضای اصلی حافظه است. فضای حافظه داده و فضای حافظه برنامه. بعلاوه ATmega16 دارای حافظه EEPROM برای ذخیره داده نیز می باشد.
حافظه I/O :
تمام خروجی ها و ارتباطات فرعی ATmega16 در فضای I/O قرار داده شده اند. مکانهای I/O توسط دستورات in و out دسترسی می شوند و انتقال داده بین ۳۲ رجیستر همه منظوره و فضای I/O را انجام می دهند. رجیسترهای I/O مابین آدرسهای ۰۰$ تا ۳F$ قابلیت دسترسی بیتی توسط دستورات SBI و CBI را دارند. همچنین در این رجیسترها یک بیت می تواند توسط دستورات SBIC و SBIS چک شود. وقتی که از دستورات مخصوص I/O ، in و out استفاده می شود باید آدرس های I/O 00$ تا ۳F$ استفاده شود.
بعضی از پرچم های وضعیت توسط نوشتن ۱ در آنها پاک می شوند. توجه کنید که دستورات CBI و SBI بر تمام بیتهای رجیسترهای I/O عمل می کنند و نوشتن ۱ در پرچمی که قبلا ۱ شده است، باعث پاک کردن آن می شود.
شکل ۳-۲
کلاک clkcpu - CPU : کلاک CPU با توجه به عملکرد مختلف هسته مرکزی AVR، به قسمتهای مختلف سیستم هدایت می شود. از جمله قسمتهای: رجیستر فایل همه منظوره، رجیستر وضعیت و حافظه داده نگه دارنده اشاره گر پشته. متوقف کردن کلاک، هسته مرکزی را از انجام کارهای عمومی و محاسباتی باز می دارد.
کلاک clkI/O - I/O : کلاک I/O توسط اکثر واحدهای I/O از جمله تایمر- شمارنده ها، USART استفاده می شود. همچنین کلاک I/O اغلب توسط واحد وقفه خارجی نیز مورد استفاده قرار می گیرد. ولی توجه کنید که بعضی از وقفه های خارجی که توسط مدارهای غیر همزمان آشکار
می شوند، به بعضی از وقفه ها اجازه وقوع می دهند حتی اگر کلاک I/O نیز متوقف باشد.
کلاک clkADC - ADC : ADC با کلاک مشخص کار می کند. این کار باعث می شود تا کلاک های CPU و I/O را بتوان متوقف کرد. تا نویز تولیدی توسط مدارات دیجیتال کاهش یابد. و نتیجه تبدیل دقیتر باشد.
منابع کلاک :
این تراشه دارای منابع کلاک مختلفی است که توسط فیوز بیتهای Flash مطابق جدول ۴-۱ انتخاب می شوند. کلاک خروجی از منبع انتخاب شده به تولید کننده کلاک AVR می رود و سپس به واحدهای مربوط هدایت می شود.
جدول ۲-۱
وقتی که CPU از مدهای Power – Down یا Power – Save خارج می شود، منبع کلاک انتخابی برای محاسبه زمان Start – Up استفاده می شود و اطمینان حاصل می شود که عملکرد اسیلاتور به حالت پایدار رسیده است و سپس شروع به اجرای دستورات می کند. وقتی که CPU از حالت Reset آغاز به کار می کند، زمانی تاخیر اضافه می شود که تغذیه هم به مقدار پایداری برسد.
از آنجایی که ما در ساخت این پروژه از منبع کلاک داخلی یعنی اسیلاتور RC کالیبره شده داخلی و اسیلاتور تایمر- شمارنده استفاده کرده ایم، در اینجا تنها به توضیح این منابع می پردازیم.
مد ADC Noise Reduction :
در این مد CPU متوقف می شود. اما به ADC ، وقفه خارجی، محافظ آدرس رابط سریال دو سیمه، تایمر- شمارنده ۲ و Watchdog اجازه فعالیت می دهد. این مد clkCPU، clkI/O و clkFLASH را متوقف می کند و به دیگر کلاکها اجازه کار می دهد.
اینکار نویز محیط را برای ADC بهبود می بخشد و اندازه گیری با دقت بالاتری را فراهم می کند.اگر ADC فعال باشد، وقتی که این مد وارد می شود، ADC بطور خودکار آغاز به انجام تبدیل می کند. بغیر از وقفه تکمیل تبدیل ADC، Reset خارجی، Reset شدن Watchdog، Reset شدن قطع تغذیه، وقفه تطبیق آدرس رابط سریال دو سیمه، وقفه تایمر- شمارنده ۲، وقفه آماده بودن SPM / EEPROM، وقفه های خارجی در پایه های INT0 و INT1 و یا وقفه خارجی در پایه INT2 می توانند MCU را از این مد Sleep خارج کنند.
حداقل کردن مصرف توان :
هنگامی که شما سعی می کنید تا مصرف توان را در سیستم های AVR کاهش دهید، چندین مسئله را باید رعایت کنید. بطور کلی تا حد امکان از مدهای Sleep باید استفاده کرد. تمام توابعی که مورد نیاز نیستند باید غیر فعال شوند. بویژه واحدهای زیر باید مورد توجه ویژه قرار گیرند که در ادامه توضیح می دهیم.
- مبدل آنالوگ به دیجیتال : اگر این واحد فعال باشد ADC در تمام مدهای Sleep فعال است. برای کاهش مصرف توان، ADC باید قبل از وارد شدن به هر مد Sleep، غیر فعال شود. وقتی که ADC خاموش می شود و سپس روشن می شود، اولین تبدیل، تبدیلی بسط داده شده خواهد بود و زیاد مورد اطمینان نیست. که در این مورد توضیحات بیشتر را در بخش ADC خواهیم گفت.
- مقایسه کننده آنالوگ :
وقتی که وارد مد Idle می شویم، اگر از مقایسه کننده آنالوگ استفاده نمی کنیم، باید آنرا غیر فعال کنیم. وقتی هم که وارد ADC Noise Reduction می شویم باز هم مقایسه کننده آنالوگ باید غیر فعال شود. در دیگر مدهای Sleep مقایسه کننده آنالوگ بطور خودکار غیر فعال می شود.
- مرجع ولتاژ داخلی : مرجع ولتاژ داخلی هرگاه که در آشکار ساز قطع برق و مقایسه کننده آنالوگ و یا ADC مورد نیاز باشد، فعال می شود. اگر واحدهای نام برده شده غیر فعال باشند.
پین پورت می تواند توسط بیت رجیستر PINx خوانده شود، مستقل از اینکه مقدار DDRx چه جهتی را مشخص می کند.
۸-۲ مبدل آنالوگ به دیجیتال (ADC) :
ATmega16 دارای ADC 10 بیتی بصورت تقریبهای متوالی است. ADC به مالتی پلکسر آنالوگ ۸ کاناله متصل است که به ۸ ورودی ولتاژ یک طرفه اجازه می دهد تا از طریق پینهای پورت A متصل شوند. ورودیهای ولتاژ یکطرفه با ۰v مقایسه می شوند.
همچنین وسیله از ترکیب ۱۶ کانال دیفرانسیلی نیز حمایت می کند. دو تا از این ورودیهای دیفرانسیلی ( ADC3,ADC2,ADC1,ADC0)به مرحله گین قابل برنامه ریزی، مجهز هستند. که مرحله تقویت ۰db(x1)، ۲۰db(x10)، ویا ۴۶db (x200) را برای ولتاژ ورودی قبل از ورود به A/D فراهم می کند. ۷ تا از کانالهای ورودیِ دیفرانسیلی، ترمینال منفی مشترکی را (ADC1) استفاده می کنند. و در نتیجه ورودی دیگر ADC می توانند بعنوان ترمینال ورودی مثبت انتخاب شوند. اگر گین x1 یا x10 استفاده شود, رزولوشن ۸ بیتی می تواند مورد انتظار باشد. اگر گین x200 استفاده شود، ۷ بیت رزولوشن می تواند مورد انتظار باشد.
ADC شامل مدار sample and hold است، تا ولتاژ ورودی در طی تبدیل بصورت ثابت نگه داشته شود. بلوک دیاگرام ADC در شکل ۱۶-۱ نشان داده شده است.