اولین پست مطلب :( قسمت اول :معرفی کتابخانه )
پست قبلی : کتابخانه spi برایavr ( قسمت اول : معرفی)
پست بعدی : ( قسمت سوم : شروع کار با کتابخانه )
همانطور که در پست معرفی کتابخانه spi گفته بودم قصد دارم روش استفاده از کتابخانه رو توضیح بدم .
برای شروع اول در مورد فایلهای کتابخانه توضیح میدم .این کتابخانه شامل فایلهای زیر است .
spi.h spi.c , spi_conf.h ,spi_define_name.h , spi_typedef.h , bit.h
فایل bit.h شامل ماکروهایی برای دستکاری رجیسترها به صورت بیتی هست که در اغلب کدهایی که من مینویسم این فایل دیده میشه .
فایل spi .h که در اون فابلهای لازم پیوست و الگوی توابع تعریف شده است.
فایل spi.c تعریف بدنه توابع هست .
فایل spi_typedef.h مربوط به تعریف انواع داده هایی هست که کتابخانه در حالت نسخه کامل (در ادامه ماجرای نسخه کامل رو توضیح میدم )از اونها استفاده میکنه .
فایل spi_define_name.h که از فایلهای مهم کتابخانه هست و شامل اسامی هست که شما برای پیکر بندی واحد spi به اونها نیاز دارید.
و اما مهمترین فایل برای کاربران کتابخانه که برای تنظیم spi باید اون رو تغیر بدید فایل spi_conf.h
هست ، که پیکربندی spi در اون فایل تعیین میشه . با نگاهی به محتویات این فایل مطالب زیر رو در اون میبینید :
#define SPI_VERSION_VOLUME SPI_full_volume_version
#define SPI_MASTER_SLAVE_SELECT SPI_Master_Mode
#define SPI_INTERRUPT SPI_Enable
#define SPI_DATA_ORDER SPI_Msb_First
#define SPI_MODE SPI_Mode_0 //SPI_Sample_Rising_Setup_Falling
#define SPI_CLOCK SPI_fosc_128// fosc/128
/* this just for master mode */
#define SPI_SS_DIRECTION SPI_Ss_Output
//**************************
#define SPI_SS_PORT PORTB
#define SPI_SS_DDR DDRB
#define SPI_SS_PIN 2U
#define SPI_MOSI_DDR DDRB
#define SPI_MOSI_PIN 3U
#define SPI_MISO_DDR DDRB
#define SPI_MISO_PIN 4U
#define SPI_SCK_DDR DDRB
#define SPI_SCK_PIN 5U
اولین ماکرو SPI_VERSION_VOLUME ماکروی مهمی هست . مقادیری که میتونید برای این ماکرو تعیین کنید در فایل spi_define_name.h تعیین شده و به صورت زیر هست .
//******** version volume names *****
#define SPI_full_volume_version 1U
#define SPI_low_volume_version 0U
مقدارSPI_full_volume_version :
این مقدار کتابخانه در حالت نسخه کامل قرار خواهد داد .
مزیت کتابخانه دراین حالت اینه که میتوان تنظیمات spi( فرکانس پالس کلاک ، مد کاری ، حالت مستر و اسلیو و غیره .) را در حین اجرای برنامه و بعد از تنظیمات اولیه ، بوسیله توابع کتابخانه ای تغییر داد. در این حالت کتابخانه ، تقریبا کاری نیست که شما بخواهید انجام بدید و نتونید .
فقط عیبی که داره اینه که حجم کتابخانه زیادتر خواهد بود .
مقدار SPI_low_volume_version :
در این حالت کتابخانه قابلیت تغییر در تنظیمات رو به طور موردی نداره و برای تغییر تنظیمات باید بوسیله توابع خاصی ، واحد spi از اول به طور کامل راه اندازی بشه که شاید چندان مطلوب نباشه اما مزیتش اینه که حجم کتابخانه تقریبا نصف نسخع کامل هست . اگر در حین اجرای برنامه نیاز به تغییرات تنظیمات spi نیست جهت صرفه جویی در حجم برنامه پیشنهاد میکنم از این حالت استفاده کنید .
ماکروی SPI_MASTER_SLAVE_SELECT که مربوط به انتخاب حالت مستر و اسلیو هست .و شامل انتخابهای زیر است :
//******** SPI_MODE name *****
#define SPI_Master_Mode 1U
#define SPI_Slave_Mode 0U
ماکروی SPI_INTERRUPT مربوط به استفاده از وقفه است .
ماکروی SPI_MODE :
مربوط به مد کار spi هست که تعیین میکنه نمونه گیری در کدام لبه پالس ساعت و تغیر داده در کدام لبه انجام بشه . و 4 حالت داره که من برای برای تشخیص آسون آونها رو به صورت کامنت در قسمت مربوطه در فایل spi_define_name.h قرار دادم که در تشخیص کمک میکنه .
ماکروی SPI_CLOCK :
که مربوط به فرکانس پالس کلاک spi هست , در حالت مستر تاثیر گذار هست .
ماکروی SPI_SS_DIRECTION :
که مربوط به تعیین جهت پایه ss در حالت مستر هست که هر کدام از حالتهای ورودی و خروجی یک قابلیتی داره اما در حالت اسلیو تاثیر گذار نیست ولی برای امنیت سخت افزار اون رو ورودی کنید .( اگر این پایه خروجی باشه و شما spi اسلیو رو خاموش کنید پایه به حالت خروجی در میاد که در صورتی که پایه ss مربوط به spi مستر خروجی باشه و ارزش های متفاوتی داشه باشن به دلیل امپدانس کم پورت در حالت خروجی ممکنه جریان زیادی از پورتها عبور کنه .)
ماکروهای
//**************************
#define SPI_SS_PORT PORTB
#define SPI_SS_DDR DDRB
#define SPI_SS_PIN 2U
#define SPI_MOSI_DDR DDRB
#define SPI_MOSI_PIN 3U
#define SPI_MISO_DDR DDRB
#define SPI_MISO_PIN 4U
#define SPI_SCK_DDR DDRB
#define SPI_SCK_PIN 5U
مربوط به تعیین تعیین پایه های spi هستن ( و تا اونجا که من بررسی کردم برای میکروهای atmega8-16-32 یکسان هست ) فقط توجه داشته باشید که اون ماکروهایی که در اونها عبارت pin هست مربوط به شماره پایه های مربوطه ست .
تا اینجا توضیح در مورد فایلها به پایان رسید .( ادامه دارد )
پست قبلی : کتابخانه spi برایavr ( قسمت اول : معرفی)
پست بعدی : ( قسمت سوم : شروع کار با کتابخانه )
حق مالکیت : محفوظ است . انتشار با ذکر منبع بلا مانع است .
راهنمای استفاده از کتابخانه lcd nokia1661 - قسمت1
spi ,define ,کتابخانه ,هست ,حالت ,ss ,define spi ,spi ss ,ddrb define ,مربوط به ,که در ,port portb define
درباره این سایت