سلام. چطور می شود 20 تا میکرو مگا8 رو به صورت SPI به هم وصل کرد. فرض می کنیم که یک بایت فرستاده شد حالا می خواهیم اون بایت میکروی اول بگیرد باید چکار کنیم.
برنامه نویسی با bascom avr
ممنون
میشه اینا رو با هم chain کرد یعنی خروجی اولی به ورودی دومی و خروجی دومی به ورودی سومی و الی آخر.
آخری رو به اولی هم میشه وصل کرد. حالا هر میکرو یک شماره داره و اطلاعات برای همه فرستاده میشه ولی فقط اونی که شماره اش در اطلاعات اومده اطلاعات رو پردازش میکنه.
این در سطح TTL اما اگر میتونی درایور بذاری میشه از 75176 مثل شبکه های RS422 استفاده کرد.
دیتاشیت 75176 رو بگیر آخرش یه شماتیک فرضی داره که کمکت میکنه.
میشه اینا رو با هم chain کرد یعنی خروجی اولی به ورودی دومی و خروجی دومی به ورودی سومی و الی آخر.
آخری رو به اولی هم میشه وصل کرد. حالا هر میکرو یک شماره داره و اطلاعات برای همه فرستاده میشه ولی فقط اونی که شماره اش در اطلاعات اومده اطلاعات رو پردازش میکنه.
این روش فقط برای قطار بازی بچه ها جواب میده
میکروی اصلی باید master باشه و بقیه slave یعنی اینکه فقط یه دونه از اونها میتونه رئیس جلسه باشه و کنترل میکنه . هر میکروی فرعی یک پین select داره که اگه صفر باشه فعال و اگر یک باشد غیر فعال است .
اگر از دیکدر چهار به شانزده استفاده کنید میتونید با چهار پین به جز میکروی اصلی شانزده میکروی دیگر رو شبکه کنید . دیکدر باید اینورتینگ باشه یعنی خط فعال L و سایر خطوط خروجی H
پین miso میکروی رئیس به پین mosi سایر میکروها وصل میشه
پین mosi میکروی رئیس به پین miso سایر میکروها وصل میشه
میکروهای فرعی که در اینجا 16 تا هستند به تر تیب از 0 تا 15 پین ss آنها به خروجی 0 تا 15 دیکدر وصل میشه
فرض میکنیم دیکدر ورودیهاش رو از پورت c میگیره
مدار رو بسازین (فیزیکی یا تا شبیه ساز)
spi میکروی اصلی رو با حالت master راه اندازی کنید
spi همه میکروهای دیگه رو با slave راه اندازی کنید
حالا میخواهیم برای میکروی چهاردهم یک بایت بفرستیم
به پورت c مقدار 13 میدهیم (ایندکس از صفر )
حالا با دستور send (بسته به زبان برنامه نویسی) یک بایت روی spi بفرستین
مطمئن باشین فقط میکروی چهاردهم اون رو دریافت میکنه .
دیدگاه