electronic sinhalen

සිංහල භාෂාවෙන් විද්‍යා හා තාක්ෂණ කරුණු ලබාදෙන, SENRO-TECH යුගයේ අපූර්වතම විද්‍යා හා තාක්ෂණ ගෙව්ශණය. SENROTECH is all about connecting you to the Technologies ©Copyrighted

Thursday, February 20, 2020

microcontroller sinhala - මයික්‍රෝකොන්ට්‍රෝලර්ස් (pic microcontroller programming) - 36

PIC microcontroller SPI communication 


SPI සංනිවේදනය හැදින්වීම

ඉලෙක්ට්‍රොණික තාක්ෂණයේදී, ඉලෙක්ට්‍රොණික උපාංග දෙකක් අතර දත්ත සිරියල් ආකාරයට සංනිවේදනය කිරීමට ඇති අනෙක් සංනිවේදන ක්‍රමවේදය (ප්‍රොටෝකෝලය) වන්නේ SPI සංනිවේදන ක්‍රමය වේ. SPI යන්නේ අර්තය වන්නේ Serial Peripheral Interface යන්න කෙටිකර දැක්වීමයි.මෙම සංනිවේදන සංනිවේදන ක්‍රමවේදය ප්‍රථම වතාවට හදුන්වා දෙනු ලැබුවේ Motorola සමාගම විසින් වන අතර අදවන විට ඉලෙක්ට්‍රොණික පරිපථ නිර්මාණයේදී ඉලෙක්ට්‍රොණික උපාංග අතර සංනිවේදනය කිරීමට වැඩි වශයෙන් යොදාගන්නා සංනිවේදන ප්‍රොටෝකෝලය මෙය වේ.

UART සංනිවේදන ක්‍රමවේදය බොහෝවිට යොදාගනු ලබන්නේ ඉලෙක්ට්‍රොණික උපකරන (පරිඝණක, GSM Modem වැනි) අතර සංනිවේදනය සිදු කිරීමට වේ. එහෙත් SPI ප්‍රොටෝකෝලය යොදාගනු ලබන්නේ IC,සංවේදක, එස්ඩී කාඩ්පත්,වෙනත් ඉලෙක්ට්‍රොණික පරිපථ ආදී පර්යන්ත සමග සිරියල් ආකාරයට දත්ත සංනිවේදනය කිරීම සදහා වේ.මෙම ප්‍රොටෝකෝලය යොදාගැනීමේ ඇති අනෙක් වාසිය වන්නේ, UART සංනිවේදන ක්‍රමය මෙන්නොව මෙහිදී පර්යන්ත කිහිපයක් එකට සම්බන්දකර සංනිවේදනය කරගත හැකි වීමයි. එනම් UART  ක්‍රමයේදී RS232 interface එක හරහා සම්බන්ද කිරීමට හැකිවූයේ එක් උපාංගයක් පමණි.එහෙත් SPI interface එක හරහා පහත දක්වා ඇති ආකාරයට  උපාංග කිහිපයක් සම්බන්දකර සංනිවේදනය සිදුකල හැක.

SPI Connections and Control Lines


ඉහත පෙන්වා ඇති ආකාරයට  SPI ප්‍රොටෝකෝලය යොදාගෙන උපාංග දෙකක්  අතර  සංනිවේදනය කිරීම  සඳහා සම්බන්දක හතරක් අවශ්‍ය වේ.එම නිසා  SPI ප්‍රොටෝකෝලය 4-wire bus සංනිවේදනයක් ලෙස හැදින් වේ.

(
SPI ක්‍රමයට උපාංග දෙකක් පමණක් සම්බන්ද කර  සංනිවේදනය කරන විට අවශ්‍ය වන්නේ  සම්බන්දක 3 ක් පමණක් වේ.එනම් SS ලෙස සදහන් කර ඇති සම්බන්දතාවය අවශ්‍ය නොවේ.එනම් මෙම සම්බන්දතාවය යොදාගනු ලබන්නේ සංනිවේදනය කරන උපාංගය හදුනා ගැනීම සදහා වේ.එහෙත් සම්මතයක් ලෙස SPI ක්‍රමයට සංනිවේදනය කිරීමේදී උපාංග  දෙක අතර මෙම සම්බන්දක හතරම යොදාගනු ලබයි.)

RS232 ප්‍රොටෝකෝලය යොදාගෙන සංනිවේදනය කරන විට උපාංග දෙක DTE හා DCE ලෙස හැදින්වූවා සේ SPI ප්‍රොටෝකෝලය යොදාගෙන සංනිවේදනය කරන උපාංග දෙක Master හා Slave ලෙස හදුන්වනු ලබයි.ඒ අනුව සංනිවේදනය හසුරවන උපාංගය Master ලෙසද, සංනිවේදනයට සහබාගීවෙන අනෙක් උපාංග  Slave ලෙස ද වේ.

ඉහත සදහන් කල ආකාරයට SPI ප්‍රොටෝකෝලය යොදාගෙන සංනිවේදනය කිරීම සදහා Master හා Slave උපාංග දෙක අතර සම්බන්දක හතරක් අවශ්‍ය වේ. එනම්

MOSI-Master output Slave Input
MISO- Master Input Slave output
SCLK-Serial Clock
SS-Slave Select

ලෙස සහ IC අතර සංනිවේදනය කරන බොහෝ විට පහත දැක්වෙන ආකාරයට ද නම්කරන අවස්ථා ඇත.

SDI- Serial Data Input
SDO- Serial Data output
SCLK-Serial Clock
CS-chip Select

UART ක්‍රමයේ දී මෙන් මෙහිදී ද දත්ත යැවීමට සහ ලබාගැනීම සදහා වෙන වෙනම මාර්ග දෙකක් (MOSI හා MISO ලෙස ) යොදාගනු ලබන බැවින් මෙහිදීද දත්ත යැවීම සහ ලබා ගැනීම එකවිට සිදු කල හැක.එම නිසා මෙම සංනිවේදන ක්‍රමය ද full duplex සංනිවේදනයක් වේ.

UART ක්‍රමයේ දී Clock signal එකක් යොදාගත් නොමැති නිසා දත්ත සංනිවේදනය ක්‍රමවත්ව සිදු කිරීම සදහා සංනිවේදන උපාංග දෙපසම එකම Baud Rate එකක් පවත්වා ගනිමින් සංනිවේදනය කරනු ලැබීය.එහෙත් මෙම SPI සංනිවේදන ක්‍රමයේදී දත්ත යැවීම සහා ලබාගැනීම අනෙක් උපාංගයට දැනුම් දීම සදහා Clock signal එකක් යොදාගනු ලබන නිසා මෙහිදී Baud Rate සමාන වීම අවශ්‍ය නොවේ.ඒ අනුව Clock signal එකේ කාර්ය වන්නේ MOSI හා MISO හරහා දත්ත සම්ප්‍රේෂණය කරන විට ඒවා යැවීමට   හා දත්ත එවීමට සුදානම් බව දැනුම් දීම ට Clock ස්පන්දයක් නිකුත් කිරීම වේ.

මෙහි ඇති අනෙක් සම්බන්දතාවය වන්නේ SS (Slave Select) වේ.මෙහි ඇති වැදගත්කම වන්නේ උපාංග දෙකක් හෝ කිහිපයක් SPI interface එක සමග සම්බන්ද කර ඇති විට කුමන උපාංගය සමග සංනිවේදනය කිරීම කරනවාද යන්න තොරාගැනීමට වේ.ඒ අනුව Master උපාංගයට සම්බන්ද කර ඇති උපාංග ගණනට මෙම SS සම්බන්දක ඇතිකල යුතුය.මෙහිදී  මෙම සෑම සම්බන්දතාවයක්ම  තාත්වික 1 හි පවත්වා ගනු ලබන අතර යම් උපාංගයක් සමග  සංනිවේදනය  කිරීමට අවශ්‍ය වූ විට එම උපාංගයට සම්බන්ද SS එක තාත්වික 0 ට ගෙන එනු ලබයි.
 

SPI ප්‍රොටෝකෝලය ක්‍රියාත්මක වන ආකාරය


SPI interface එක හරහා උපාංග කිහිපයක් සම්බන්ද කර තිබුනත් , එම උපාංග අතර සන්නිවේදනය වරකට සිදුවන්නේ Master එක සහ එක් Slave අතර පමණි.එම නිසා SPI ප්‍රොටෝකෝලය ක්‍රියාත්මක වන ආකාරය වටහා ගැනීම සදහා උපාංග දෙකක් පමණක් යොදාගෙන සංනිවේදනය කරන ආකාරය විමසා බලමු.

ඉහත දැක්වෙන්නේ SPI ප්‍රොටෝකෝලය යොදාගෙන සංනිවේදනය කිරීමට උපාංගය තුල තිබිය යුතු මූලික කොටස් වේ.ඒ අනුව Slave උපකරණ එකකට වඩා ඇති විට,  Master උපකරනය හා Slave උපකරණයක් අතර සංනිවේදනය ආරම්භ කිරීම සදහා ප්‍රථමයෙන් කල යුතු වන්නේ Master විසින් අදාල Slave උපකරණය තේරීමයි. ඒ සදහා එම Slave උපකරණයට අදාල ss එක තිර්වික 0 ට ගෙන එනු ලබයි.ඉන් පසුව මෙම උපකරන දෙක අතර සංනිවේදනය ආරම්බ කිරීම කල හැක.

SPI සංනිවේදනය කිරීම සදහා මෙම SPI ඒකකයක් තුල ප්‍රධාන රෙජිස්ටර දෙකක් ඇතුලත් වේ, shift register හා buffer register එම රෙජිස්ටර දෙක වේ. MOSI හා MISO සම්බන්ද වන්නේ මෙම shift register එක සමග වේ. shift register එක යොදාගනු ලබන්නේ දත්ත උපකරණ දෙක අතර ගමන් කරවීම සදහා  වන අතර දත්ත සංනිවේදනයේදී දත්ත කියවීම හා ලිවීම සිදුකරනු ලබන්නේ buffer register එකට වේ.

SPI ක්‍රමයට දත්ත සංනිවේදනය

ඉහත රූපයේ පැහැදිලි කර ඇත්තේ මෙම ක්‍රමයට දත්ත සංනිවේදනය කරන ආකාරයේ දල ආකාරය වේ. එනම්  buffer register එක මගින් දත්ත shift register එකට දමනු ලබයි.ඉන් පසු මාස්ටර් උපකරණය විසින් නිකුත් කරන සෑම Clock ස්පන්දයකට වරක් එම දත්ත  MOSI හා MISO සම්බන්දක හරහා අනෙක් උපකරණයේ shift register එක දක්වා දත්ත බිටු shift කරනු ලබයි. මේ ආකරයට සියලුම දත්ත බිටු අනෙක් උපකරනයේ  shift register එකට shift වූ පසු එම දත්තය එම උපකරනයේ buffer රෙජිස්ටරයට දමනු ලබයි. 

මෙහිදී දත්ත බිටු shift කරනු ලබන්නේ මාස්ටර් උපකරණය විසින් නිකුත් කරන සෑම Clock ස්පන්දයකට වරක් වේ.ඒ අනුව Clock ස්පන්ද නිකුත් කරන කාලය අනුව දත්ත සම්ප්‍රේෂණය වන වේගය තීරණය වන බව පැහැදිලි විය යුතුය.එම කාලය තීරණය කිරීම අප විසින් සිදු කල යුතුය.

SPI සංනිවේදනය full duplex සංනිවේදනයක් බැවින් ප්‍රධාන ආකාර තුනකට Master උපකරනය හා Slave උපකරණයක් අතර සංනිවේදනය සිදු වේ.

1.      Master උපකරනයේ සිට Slave උපකරණය දක්වා දත්ත ගමන් කරවීම


2.      Slave උපකරණයේ සිට Master උපකරන දක්වා දත්ත ගමන් කරවීම

3.      Master උපකරනයේ සිට Slave උපකරන දක්වාද , Slave උපකරණයේ සිට Master උපකරන දක්වාද දත්ත එකවිට ගමන් කරවීම


ඉහත පැහැදිලි කිරීම මගින් Master උපකරනයේ සිට Slave උපකරණය දක්වා දත්ත ගමන් කරවීම හා Slave උපකරණයේ සිට Master උපකරනය දක්වා දත්ත ගමන් කරවීම පැහැදිලි කර ගත හැක.එමනිසා Master උපකරනය හා Slave උපකරනය අතර එකවිට දත්ත හුවමාරුව කරගන්නා ආකාරය පමණක් විමසා බලමු.ඒ අනුව පහත රූපයේ දැක්වෙන්නේ මෙය සිදුවන ආකාරය වේ.


මෙහිදී Master හා Slave උපකරණ දෙකේම හුවමාරු කරගැනීම සදහා දත්ත ඇත.ඒ අනුව ප්‍රථමයෙන් කරනු ලබන්නේ buffer register එකේ ඇති මෙම දත්ත shift register වෙතට දැමීම වේ.ඉන්පසුව Master උපකරනය විසින් Clock ස්පන්දයක් ජනනය කරනු ලබයි.එවිට shift register වල ඇති දත්ත වම් පසට shift කරනු ලබයි.එහිදී Master උපකරණයේ shift register හී ඇති අවසාන බිටුව එහි සිරියල් OUTPUT එක හරහා Slave උපකරණයේ   shift register හී  පළමු බිටුව තිබු ස්ථානයට පැමිනෙන අතර Slave උපකරණයේ shift register හී ඇති අවසාන බිටුව එහි සිරියල් OUTPUT එක හරහා Master උපකරණයේ shift register හී පළමු බිටුව තිබු ස්ථානයට පැමිනේ.ඉන් පසුව Master උපකරණය විසින් නැවත Clock ස්පන්දයක් ජනනය කරනු ලබන අතර එහිදී නැවත shift register හි ඇති බිටු ඉහත පැහැදිලි කර ආකාරයට වම් පසට shift කරනු ලබයි.මෙවිට  Master උපකරණයේ බිටු දෙකක් Slave උපකරණයට ගමන් කර ඇති අතර Slave උපකරණයේ බිටු දෙකක් Master උපකරණයට ගමන් කර ඇත.මේ ආකාරයට Clock ස්පන්ද නිකුත් කරමින් සියලුම බිටු උපකරන දෙක අතර හුවමාරු කරගනු ලබයි.මෙවිට සම්පුර්න දත්තයම උපකරන දෙක අතර හුවමාරු කර ගෙන ඇත.ඉන් පසුව කරනු ලබන්නේ  shift register හී ඇත් මෙම දත්තය buffer register වෙත දැමීම වේ.ඉන් පසු මෙම buffer register එක කියවීමෙන් ඒවාට අදාල  සුදුසු කාර්යන් සිදුකර ගත හැක.

PIC 16F877A මයික්‍රෝකොන්ට්‍රෝලරයේ SPI ක්‍රමයට දත්ත සංනිවේදනයට ඇති ඒකකය


MSSP (Master synchronous serial port) යනු PIC 16F877A මයික්‍රෝකොන්ට්‍රෝලරයේ සිරියල් ක්‍රමය (SPI හා I2C) ට දත්ත සංනිවේදනයට ඇති ඒකකය වේ.මෙම ඒකකය යොදාගෙන SPI ක්‍රමයට දත්ත සංනිවේදනය කිරීමට රෙජිස්ටර කිහිපයක් යොදාගනු ලබයි. SSPSR යනු SPI ක්‍රමයට දත්ත සංනිවේදනයේදී යොදාගනු ලබන shift register එක වන අතර SSPBUF යනු Buffer රෙජිස්ටර් එක වේ. 
Buffer රෙජිස්ටර් එක දත්ත කියවීම් හා ලිවීමේ සදහා යොදාගනු ලබන අතර shift register එක දත්ත එක් උපකරනයක සිට අනෙක් උපකරනය දක්වා shift කරවීම සදහා යොදාගනු ලබයි.මෙම shift කිරීමේ   ක්‍රියාවලිය සිදු කිරීම සදහා SSPSTAT හා SSPCON1 රෙජිස්ටර දෙක යොදාගනු ලබයි.ඒ අනුව මෙම රෙජිස්ටර දෙකට සුදුසු අගයන් යොදා SPI ක්‍රමයට දත්ත සම්ප්‍රේෂණය සිදුකර ගත හැක. අනුව  පහත දැක්වෙන්නේ එම රෙජිස්ටර දෙක වේ.

https://senrotech.blogspot.com/2020/02/microcontroller-sinhala-pic_20.html



https://senrotech.blogspot.com/2020/02/microcontroller-sinhala-pic_20.html

https://senrotech.blogspot.com/2020/02/microcontroller-sinhala-pic_20.html

PIC16F877A මයික්‍රෝකොන්ට්‍රෝලරය යොදාගෙන SPI ක්‍රමයට දත්ත හුවමාරු කිරීම 

මෙම වැඩසටහන මගින් මයික්‍රෝකොන්ට්‍රෝලරය දෙකක් අතර SPI ක්‍රමයට දත්ත හුවමාරු කරගන්න ආකාරය පැහැදිලි කරනු ලබයි.මෙහිදී එක් මයික්‍රෝකොන්ට්‍රෝලරයක් Master ලෙසද අනෙක් මයික්‍රෝකොන්ට්‍රෝලරය Slave ලෙසද ක්‍රයාකරනු ලබයි.ඒ අනුව මෙහිදී සිදු වන්නේ, Slave ලෙස ඇති මයික්‍රෝකොන්ට්‍රෝලරයේ PORTD සමග  LED  සම්බන්ද කර ඇති අතර Master ලෙස ඇති මයික්‍රෝකොන්ට්‍රෝලරය මගින් එම LED දැල්වීමට අදාල විධාන SPI ක්‍රමයට  ලබා දෙනු ලබයි.මෙහිදී Slave ලෙස ඇති   මයික්‍රෝකොන්ට්‍රෝලරය විසින් එම විධාන කියවා ඒ අනුව LED දැල්වීම සිදු කරනු ලබයි.ඒ අනුව පහත දැක්වෙන්නේ මෙම වැඩසටහනට අදාල පරිපථ සටහන සහ mikroC වැඩසටහන වේ.