در پروژه های الکترونیک توسط
من یک پروژه رطوبت و دماسنج با سنسور SHT15 دارم که از صفحه کلید درصد رطوبت و دما را بگیرد و یک رلهکخ  به پایه Miso متصل است  را تا زمانیکه دما و رطوبت  از ماکزیمم درصد یا ماکزیمم مقادیر  مربوطه، تجاوز نکند، رله قطعه رطوبت ساز و قطعه ایجاد کننده ی  دما را فعال کند و سنسور SHT15،  دما و رطوبت قطعات مورد نظر را که داخل یک محفظه رطوبت ساز و دما ساز است بسنجد و برروی Lcd نمایش دهد و زمانیکه دما و رطوبت به ماکزیمم درصد خود برسند، رله متوقف شود. در این پروژه  از پایه Sck استفاده نمی شود و تنها از یک میکروکنترلر atmega32  استفاده می شود.در ضمن شبیه سازی محفظه رطوبت ساز و دما ساز و در کل شبیه سازی کل این پروژه در proteuse چگونه است؟
ببندید با توجه به این نکته: جواب جدیدی به این سوال نیومده سوال بسته شد.

1 پاسخ

+1 امتیاز
توسط jahandideh
 
بهترین پاسخ

با سلام و عذر خواهی بابت دیر جواب دادن... مطلب زیر را بخونید. در مورد spi اینو بخونید:

اطلاعات بیشتر در مورد خود پروتکل SPI : ارتباط SPI – معرفی پروتکل ارتباطی سریال SPI

و برای SPI میکروکنترلر AVR ادامه مطب را بخوانید.

این پرتکل پرسرعت ترین ارتباط سریال می باشد که می توان از آن در پیکربندی LCD های موبایل وماژول سنسورها و یا ارتباط با SD کارتها استفاده کرد
که در آینده مثال هایی از این ارتباط را خواهیم زد
با توجه به شکل زیر در این ارتباط برخلاف UART می توان چندین Device , که می تواند میکرو , سنسور ,و... باشد را به صورت مستر/ اسلیو (Maser/Slave) را اندازی کرد
[عکس: melec.jpg]
طبق شکل هر slave توسط یک PIN از Master به صورت جاگانه کنترل می شود
یعنی هر وقت Master بخواهد باهر یک از Slave ها ارتباط برقرار کند باید پایه متناظر باSlave را low کند تا slave در گاه ورودی و خروجی را برای ارتباط با master باز کند
در ارتباط SPI هر Device دارای یک شیفت رجیسترSISO (سریال ورودی و سریال خروجی) 8بیتی می باشد
 

[عکس: melec_Spi.png]

که طبق شکل بالا خروجی شیفت رجیستر Master به ورودی Slave وصل می شود و همچنین خروجی رجیستر Slave به ورودی Master وصل می شود
بنابراین هر بیتی که وارد یکی از شیفت رجیستر ها شود آخرین بیتش از همان شیفت رجیستر خارج شده و به شیفت رجیستر دیگری انتقال می یابد.
جهت انتقال و یا شیفت دادن اطلاعات درون ثبات نیاز به کلاک پالس می باشد بنابراین هر Device داخل خودش یک مولد کلاک دارد ,ولی جهت هم زمانی بین
دو Device فرستنده و گیرنده کلاک اصلی را Master تولید می کند و انشعابی از همان کلاک را به Slave می دهد  پس می توان گفت مولد کلاک slave غیر فعال باقی می ماند


[عکس: m2.JPG]
پس برای تکمیل این بخش :
  ابتدا Maser جهت ارتباط , پایهSSموجود روی Slave را LOw (صفر) می کند.
  سپس دیتا را در رجیستر قرار می دهد , 8 عدد پالس برای شیفت دادن بیت به بیت اطلاعات تولید می کند
  با این کار دیتای master از طریق پایه MOSI وارد شیفت رجیستر slave می شود و در مقابل نیز اطلاعات Slave از طریق پایه MISO به شیفت رجیستر Master    وارد می شود
  مستر کلاک را از طریق پایه SCLK به اسلیو می رساند

کلا 3 تا رجیستر برای برقراری این ارتباط در AVR موجود می باشد

1) SPDR  یک رجیستر 8 بیتی که داده درون آن قرار می گیرد
               در واقع همون رجیستر سریال ورودی و سریال خروجیمون هستش که در پست قبلی توضیح دادم
2) SPCR  برای کنترل این پروتکل می باشد
          
3) SPSR رجیستر وضعیت SPI می باشد

رجیستر SPDR

نیاز به توضیح نداره ,مشخصه, داده رو درونش بریز تموم شد و رفت و همچنین در مد دریافت داده را از توش بخون
 

[عکس: 15.JPG]

رجیستر SPCR
serial peripheral control خب این یکی یه کم نیاز به تشریح داره


SPIE: برای فعال کردن وقفه SPI ( هنگامی که فرایند ارسال یا دریافت کامل می شود این وقفه رخ می دهد به شرطی که وقفه سراسری بیت I در رجیستر SREG فعال باشد)

SPE:یا SPI Enable برای فعال کردن این پروتکل می باشد

DORD: یا Data Order اگر 0 باشد اولین بیت MSB ارسال می شود یعنی اطلاعات از سمت MSB شیفت و خارج می شوند
                                 اگر 1 نوشته شود اولین بیت LSB ارسال می شود
MSTR: اگر 0 باشد مد slave فعال می شود
           اگر 1 باشد مد master فعال می شود

CPOL: اگر 0 باشد اولین لبه کلاک بالا رونده یعنی در مد بی کاری که هیچ اطلاعاتی ارسال دریافت نمی شود پایه SCK در سطح صفر نگه داشته می شود
           اگر 1 باشد اولین لبه کلاک هنگام ارسال پایین رونده می  باشد یعنی در مد بی کاری پایه SCK  در سطح یک نگه داشته می شود

CPHA: این بیت نحوه Setup (شیفت و یا تغییرات دیتا در کلاک) و asmple (نمونه برداری از سیگنال معتبر در کلاک)

          برای قرار دادن اطلاعات در باس داده و همچنین نمونه برداری ازاطلاعات هر کدام را می توان در یک لبه از کلاک قرار داد یعنی وقتی در اولین لبه کلاک دیتا را در باس قرار می دهیم در دومین لبه کلاک مبی توانیم نمونه برداری یا به اصطلاح بخوانیم

          اگر 0 باشد در اولین لبه کلاک sample رخ می دهد یعنی device می تواند از دیتا معتبر نونه برداری کند و در دومین لبه کلاک Setup رخ می دهد یعنی Device می تواند در لبه دیتای خودش را تغییر دهد

          اگر 1 باشد  در اولین لبه Setup و در دومین لبه Sample

SPR1:0  برای تعیین نرخ ارسال یا دریافت با توجه به فرکانس CPU یا Ocilator
[عکس: ftable.gif]
رجیستر SPSR:

SPIF:هر گاه ارسال دریافت کامل شود این بیت 1 می شود که اگر بیت I از رجیستر SREG و بیت SPIE از رجیستر SPCR فعال باشد روتین وقفه مربوط به ارسال دریافت SPI اجرا می شود
       با اجرا شدن روتین وقفه این بیت خود به خود پاک می شود
       در صورتی که وقفه فعال نباشد برای پاک کردن این بیت ابتدا رجیستر SPSR و سپسSPDR خوانده شود مثلا داخل یه متغیر ریخته شوند

WCOL:هنگامی که ارسال اطلاعات کامل نشده یعنی Device در حال ارسال می باشد اگر داده ای درون SPDR نوشته شود این بیت یک می شود برای پاک کردن آن ابتدا رجیستر SPSR و سپسSPDR خوانده می شود

SPI2X: اگر یک نوشته شود نرخ ارسال در MASTER می تواند دو برابر شود البته باید به این نکته توجه داشت که نرخ ارسال در Device ها باید یکی باشد

سایر بیت ها رزرو می باشند


تمام

نکته هر گاه SPDR مقداردهی شود کلاک SCK شروع شده  و ماژول SPI شروع به شیفت اطلاعات می کند بنابراین لازم است قبل از مقدار دهی SPDR برای ارسال داده ,Slave مورد نظر را فعال کنیم (صفر کردن پایه SS)

اطلاعات بیشتر در مورد پروتکل SPI : ارتباط SPI – معرفی پروتکل ارتباطی سریال SPI

...