معرفی کانال تلگرام وبلاگ
با سلام جهت اطلاع از آخرین مطالب قرار داده شده در وبلاگ کانال تلگرام dastsazemanblogfa@ را دنبال کنید .
- |
با سلام جهت اطلاع از آخرین مطالب قرار داده شده در وبلاگ کانال تلگرام dastsazemanblogfa@ را دنبال کنید .
کتابخانه spi برای میکروهای avr atmega8-16-32-64-128, کنترل حجم نسخه ,امکان تغییر تنظیمات هنگام کار,نرم افزار winavr , زبان c , کمپایلر gcc , آردوینوarduino
اولین پست مطلب :( قسمت اول :معرفی کتابخانه )
پست قبلی : (قسمت دوم :فایلهای کتابخانه )
پست بعدی : (قسمت چهارم : توابع ارسال و دریافت)
با سلام مجدد به تمام خوانندگان .
در قسمت قبل(اینجا ) در مورد فایلهای کتابخانه توضیح دادم و ماکرو های مهمترین فایل که spi_conf.h هست رو معرفی کردم و نقشش رو توضیح دادم .
بعد از اینکه تنظیمات رو در فایل spi_conf.h انجام دادید . دستور spi_init() رو اجرا کنید ( برای راحتی کار و رعایت حروف کوچک و بزرگ پیشنهاد میکنم که نام توابع رو از spi.h کپی پیست کنید ) .
این تایع تنظیمات واحد spi رو انجام میده و پینها رو در وضعیت مناسب قرار میده و در هر دونسخه کم حجم و کامل وجود داره . و فرقی نمیکنه از کدوم حالت حجم نسخه استفاده میکنید ، باید قبل از هر کاری با spi این تابع رو اجرا کنید .
تویحات تکمیلی در مورد spi_init() :
این تابع در واقع یک ماکرو در لایه 5هست که در فایل spi.h ( کلا ماکروها داخل فایل هدر قرار دارند )که اگر به تعریف اون نگاه کنید میبینید که باز یک ماکرو به اسم
_spi_init()
که یک تعداد پارامتر داره و در لایه 4 قرار دارد . این ماکرو یی هست که برای پیکر بندی یک تابع ( این یکی دیگه واقعا تابع هست ) به اسم :
__spi_init( cmd)
تعریف شده و این تابعی هست که spi رو اینیشیال میکنه منتها برای تنظیماتش یک کامند 8 بیتی در نظر گرفتم . و ماکروی _spi_init() که تعدادی پارامتر داره کار سازماندهی کامند رو بر اساس تنظیمات مورد نظر انجام میده .
در نسخه کم حجم از ماکروی
_spi_init()
میتونید برای تغیر تنظیمات spi استفاده کنید . که البته تنظیمات رو که میخواهید اعمال کنید باید در پارامترهای ورودی ماکرو قرار بدید .
تابع spi_deinit() :
این تابع کلا spi رو از کار میندازه و رجیسترها رو به مقدار پیش فرض بر میگردونه . قبل از اینیشیال مجدد میتونید با این تابع spi را به حالت پیشفرض بر گردونید .
خب تا اینجا مرحله راه اندازی spi به پایان رسید .
در قسمت بعدی توابع ارسال و دریافت رو معرفی میکنم .
لطفا بنده رو از نظرات خودتون در مورد این مطلب به صورت کامنت بهره مند سازید .
با تشکر .
پست قبلی : (قسمت دوم :فایلهای کتابخانه )
پست بعدی : (قسمت چهارم : توابع ارسال و دریافت)
حق مالکیت : محفوظ است . انتشار با ذکر منبع بلا مانع است .
با سلام مجدد.
اولین پست مطلب :( قسمت اول :معرفی کتابخانه )
پست قبلی : کتابخانه 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 ( قسمت اول : معرفی)
پست بعدی : ( قسمت سوم : شروع کار با کتابخانه )
حق مالکیت : محفوظ است . انتشار با ذکر منبع بلا مانع است .
کتابخانه spi برای میکروهای avr atmega8-16-32-64-128, کنترل حجم نسخه ,امکان تغییر تنظیمات هنگام کار,نرم افزار winavr , زبان c , کمپایلر gcc , آردوینوarduino
(این کتابخانه در تاریخ 1398/2/1 ساعت 16 به روز شده است .لطفا فایل بروز شده را از آدرس موجود در متن دانلود کنید)
لینک دانلود:از اینجا دانلود کنید
با سلام .
این کتابخانه spi رو برای میکروهای avr با نرم افزار winavr (کمپایلرgcc) وبه زبان C نوشتم . چون کمپایلرش gcc هست روی آردوینو و atmel studio هم کار میکنه .و طوری نوشتم که بشه از تمام قابلیتهای spi میکرو ، با استفاده از توابع استفاده کرد .
این کتابخانه قابلیت این رو داره در حین کار با استفاده از توابع ، تنظیمات واحد spi رو تغییر داد مثلا کلاک ، مد کاری ، حالت master یا slave و همینطور جهت پین SS برای حالت مستر رو تغیر داد . در این کتابخانه قابلیتی گنجاندم که در جای دیگه ای ندیم و اون هم اینه که شما میتونید حجم کتابخانه رو کنترل کنید .
فعلا این رو علی الحساب داشته باشید تا سر فرصت روش استفاده رو توضیح بدم .( البته اگه خودتون کدها رو نگاه کنید متوجه میشید از کدام توابع باید استفاده بشه ...اسمها واضحه ) این هم لینک دانلود فایهای کتابخانه و شماتیک از گیتهاب. از اینجا دانلود کنید . و اگر در حین اجرای برنامه مستر و اسلیو بودن spi رو تغیر میدید به دلیل اینکه جهت پایه عوض میشه پیشنهاد میکنم از شماتیک زیر استفاده کنید . البته فقط پیشنهاده .... اگر دقت کنید که spi ها در یک زمان در حالت master نباشند ، نیازی به استفاده از شماتیک نیست .

مقاومت ها را بین 1.8 تا 2.2 کیلو اهم انتخاب کنید.
این کتابخانه رایگان نیست ولی لطفا همانطور که در قسمت معرفی وبلاگ گفتم عمل کنید .
بنده را از نظراتتان به صورت کامنت بهره مند سازید
با تشکر.
ادامه دارد.........
پست بعدی : راهنمای استفاده از کتابخانه spi میکرو avr (قسمت دوم: فایلهای کتابخانه)
حق مالکیت : محفوظ است . لطفا کپی نکنید لینک بدید.
|
|
BLOGFA.COM |
|