electronic sinhalen

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

Saturday, August 10, 2019

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

මයික්‍රෝකොන්ට්‍රෝලරයේ පරිපථ අතර දත්ත හුවමාරුව සදහා ඇති ඒකක


මයික්‍රෝකොන්ට්‍රෝලර යොදාගෙන විවිධ නිර්මාණ සිදුකරන විට වෙනත් උපාංග(GSM මොඩියුලය,Bluetooth මොඩියුලය,LCD, computer ආදී දේ  ) හෝ වෙනත් මයික්‍රෝකොන්ට්‍රෝලර පද්ධති සමඟ දත්ත හුවමාරු කරගැනීමට සිදුවේ. මේ සදහා ප්‍රධාන වශයෙන් දත්ත හුවමාරු කරගැනීමේ සම්මත ක්‍රම දෙකක් ඇත.


  1.   serial communication
  2.   parallel communication

මෙම ආකාර දෙකෙන්ම දත්ත හුවමාරු කරගැනීම සදහා  PIC16F877A මයික්‍රෝකොන්ට්‍රෝලරයේ පහසුකම් සපයා ඇත.


Parallel communication


සමාන්තරගත  දත්ත හුවමාරු කරගැනීමේදී යැවීමට ඇති සියලුම බිටු වෙන වෙනම එකවර යවනු ලැබේ.මේ සදහා යවන්නා සහ ලබාගන්නා අතර බිටු ගණනට  වෙන වෙනම සම්බන්දතා තිබිය යුතුය. පහත දැක්වෙන්නේ බිටු 8 ක් යොදාගෙන සමාන්තරගතව දත්ත යැවෙන ආකාරයයි.

PIC16F877A මයික්‍රෝකොන්ට්‍රෝලරයේ PORTD හි පින් 8 මේ සදහා පහසුකම් සපයනු ලබයි.
පහත දක්වා ඇති ප්‍රයෝගිකව ඇති අවාසි ගණනාවක් නිසා, මයික්‍රෝකොන්ට්‍රෝලර යොදාගැනෙන පරිපථවල  සමාන්තර දත්ත සම්ප්‍රේෂණය බොහෝ විට යොදානොගැනේ. එහෙත් සමාන්තර දත්ත සම්ප්‍රේෂණය වේගවත් වන අතර මීටර කිහිපයක කෙටි දුරක් සඳහා කදිම විසඳුම සමාන්තර දත්ත සම්ප්‍රේෂණය වේ.

·         සමාන්තර දත්ත සම්ප්‍රේෂණයේදී  දත්ත බිටු ගණනටම  වයර් අවශ්‍යය බැවින් මිල අධික විය හැකිය
·         දත්ත බිටු ගණනටම  මයික්‍රෝකොන්ට්‍රෝලරයේ පින් අවශ්‍ය වීම
·         දත්ත සම්ප්‍රේෂණය කෙටි  දුරකට පමණක් සීමාවේ.
·         වයර් වල සමීපත්වය නිසා ක්‍රොස්ටොක් ඇතිවීම නිසා දත්ත විකෘති වීම සිදු වේ.


Serial communication

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




එහෙත් මෙම සිරියල් දත්ත සම්ප්‍රේෂණය ඉතා සංකීර්ණ කාර්යක් වේ.නමුත් මෙම සංකීර්ණතාව මගහරිමින් විවිධ අවශ්‍යය තාවයන්ට ගැලපෙන ආකාරයට සිරියල් ක්‍රමයට දත්ත සම්ප්‍රේෂණය සඳහා SPI,I2C,UART ආදී ලෙස විවිධ දත්ත සම්ප්‍රේෂණ පද්ධති හෙවත් ප්‍රොටෝකෝල(උපාංග දෙක අතර දත්ත සම්ප්‍රේෂණය සදහා පිළිගත් නිති මාලාවක්) කිහිපයක් හදුන්වා දී ඇත.  


මයික්‍රෝකොන්ට්‍රෝලර  තුලද මෙම දත්ත සම්ප්‍රේෂණ පද්ධතිවලට අවශ්‍යය වන  එකක්  අන්තර්ගත කොට ඇත. මෙම කුමන පද්ධතිය භාවිතා කර දත්ත සම්ප්‍රේෂණය කරනවාද යන්න පහත කරුනු අනුව තීරණය කර සුදුසු දත්ත සම්ප්‍රේෂණ ක්‍රමය තෝරා ගත හැක.


·         මයික්‍රෝකොන්ට්‍රෝලරය සමග  දත්ත හුවමාරු කර ගැනීමට  ඇති උපාංග හෝ පද්ධති  කීයක් තිබේද?

·         දත්ත හුවමාරු කර ගැනීමට  ඇති උපාංගවල ස්වභාවය

·         දත්ත හුවමාරුව කෙතරම් වේගවත් විය යුතුද?

·         උපාංග අතර ඇති දුර කුමක්ද?

·         එකවර දත්ත යැවීම සහ ලැබීම අවශ්‍යද?


මෙම සිරියල් දත්ත සම්ප්‍රේෂණ පද්ධති Asynchronous හා synchronous  ලෙස ප්‍රධාන වර්ග දෙකකට බෙදා දැක්විය හැක. Asynchronous ලෙස ත්ත සම්ප්‍රේෂණ ක්‍රියාවලියේදී clock signal එකක් බාවිතා නොකෙරේ.UART (RS-232 හෝ SCI ලෙසද හැඳින්වේ) ක්‍රමයට දත්ත හුවමාරුව Asynchronous වේ. දත්ත සම්ප්‍රේෂණය synchronous වු විට clock signal එකක් බාවිතා කරන අතර SPI ,I2C දත්ත සම්ප්‍රේෂණ ක්‍රම synchronous වේ.


I2C (INTER INTEGRATED CIRCUIT)   අන්තර්-ඒකාබද්ධ පරිපථය


I2C, හෝ අන්තර්-ඒකාබද්ධ පරිපථය යනු මයික්‍රෝකොන්ට්‍රෝලර පාලක පද්ධතිවල බහුලව භාවිතා වන සිරියල් ක්‍රමයට දත්ත සන්නිවේදන ප්‍රොටෝකෝලයකි.මෙම ක්‍රමය යොදාගනු ලබන්නේ මයික්‍රෝකොන්ට්‍රෝලරය සහ සංගෘහිත පරිපථ අතර සිරියල් ක්‍රමයට දත්ත හුවමාරු කරගැනීම සදහා වේ. මෙහිදී දත්ත යවන්නා සහ ලබාගන්නා අතර දුර කෙටිවිය යුතුය.බොහෝ විට දත්ත යවන්නා සහ ලබාගන්නා එකම මුද්‍රිත පුවරුවේ ඇත.


මෙම ක්‍රියාවලියේදී දත්ත යවන්නා සහ ලබාගන්නා අතර සම්බන්දතා දෙකක් පමණක් යොදාගනු ලබයි. එකක් දත්ත හුවමාරුව සඳහා භාවිතා කරන අතර අනෙක clock signal සඳහා භාවිතා කරයි.ඒවා පිළිවෙලින් SDA සහ SCL ලෙස හැදින්වේ.මෙහිදීද උපාංග කිහිපයක් එකට සම්බන්දකර සන්නිවේදනය සිදුකරගත හැක.




ඉහත රූපයේ දැක්වෙන්නේ  I2C ක්‍රමයට දත්ත සන්නිවේදනය සදහා යෙදාගන්නා පරිපථයක දළ සටහනකි.මෙහිදී  මයික්‍රෝකොන්ට්‍රෝලරය සැමවිටම ප්‍රධාන වේ එය MASTER ලෙසද අනෙක් උපාංග සියල්ල SLAVE ලෙසද හැදින්වේ. MASTER විසින් සන්නිවේදනය කරන්නේ කුමන SLAVE උපාංගය සමගදැයි තීරණය කරයි.



සාමාන්‍යයෙන් සෑම I2C උපාංගයකම  එය හදුනා ගැනීමට address එකක් ඇත. සන්නිවේදනය ආරම්භ කිරීමට පෙර MASTER විසින් එම address එක යොදාගෙන එක් එක් SLAVE උපාංගය ඇමතීම සිදු කරයි. එම address එකට අදාල SLAVE උපාංගය විසින් Acknowledgment signal එකක් MASTER වෙත එවනු ලබයි. ඉන් අනතුරුව එම උපාංග අතර දත්ත  සන්නිවේදනය සිදුකරගනු ලබයි.




SPI (SERIAL PERIPHERAL INTERFACE)



SPI සන්නිවේදන ක්‍රමයද මයික්‍රෝකොන්ට්‍රෝලර පාලක පද්ධතිවල සිරියල් ආකාරයට දත්ත සම්ප්‍රේෂණය සදහා බහුලව භාවිතා වන සන්නිවේදන ප්‍රොටෝකෝලයකි. SPI ක්‍රමය බොහෝවිට භාවිතා කරන්නේ Sensors, liquid crystal displays, memory cards ආදී උපාංග හෝ තවත් මයික්‍රෝකොන්ට්‍රෝලර පද්ධතියක් හෝ පද්ධති අතර සන්නිවේදනය සිදුකර ගැනීම සදහා වේ.UART ක්‍රමයේදී මෙන් නොව මෙහිදී උපාංග කිහිපයක් එකට සම්බන්දකර සන්නිවේදනය සිදුකරගත හැක.


ඉහත රූපයේ දැක්වෙන්නේ SPI ක්‍රමයට දත්ත සන්නිවේදනය සදහා යෙදාගන්නා පරිපථයක දළ සටහනකි.මෙම සන්නිවේදන ක්‍රමයෙදී, උපාංග දෙකක් අතර සන්නිවේදනය සිදුකර ගැනීම සදහා සම්බන්දතා හතරක් යොදාගනු ලබයි. ඒවා පහත දැක්වෙන ආකාරයට නම් කර දැක්වනු ලබයි.

SCLK-Serial Clock

SDI- Serial Data In

SDO- Serial Data Out

CS-Chip Select (Active low)


·         SPI සන්නිවේදන ක්‍රමය synchronous දත්ත සම්ප්‍රේෂණ පද්ධතියක් වේ.එබැවින් ඉන් එක් සම්බන්දතාවයක් clock signal එක සඳහා භාවිතා කලයුතුය.එය SCLK ලෙස නම් කරනු ලබයි.

·         UART ක්‍රමයේ දී මෙන් මෙහිදී ද දත්ත යැවීමට (Data transmit or send) එක් සම්බන්දතාවක් ද සහ දත්ත ලබාගැනීමට (Data receive) තවත් සම්බන්දතාවක් ද ලෙස වෙන වෙනම සම්බන්දක දෙකක් බාවිතාකරයි.එබැවින් දත්ත යැවීම සහ ලබා ගැනීම එකවර සිදුකර ගතහැකිවේ.එමනිසා මෙම සන්නිවේදන ක්‍රමයද full duplex සන්නිවේදන ක්‍රමයක් වේ. මෙම සම්බන්දතා දෙක පිළිවෙලින් SDI හා SDO ලෙස නම් කරනු ලබයි.

·         ඉතිරි සම්බන්දතාවය, උපාංග අතර සන්නිවේදනය සිදුකරන විට උපාංග වෙන වෙනම හදුනා ගැනීම සදහා බාවිතා කරයි. මෙම සම්බන්දතාව CS ලෙස නම් කරනු ලබයි.



UART (UNIVERSAL ASYNCHRONOUS RECEIVER/TRANSMITTER)


මෙම ක්‍රමය බොහෝ විට යොදාගනු ලබන්නේ උපාංග දෙකක් අතර සන්නිවේදනය සිදුකර ගැනීම සදහා වේ. මෙම සන්නිවේදන පද්ධතිය  Asynchronous  දත්ත සම්ප්‍රේෂණ පද්ධතියක් වේ.එබැවින් clock signal එකක් මෙහිදී යොදාගනු නොලබයි.මෙම ක්‍රමය බොහෝ විට යොදාගනු ලබන්නේ  මයික්‍රෝකොන්ට්‍රෝලරය හා පරිඝනකය,GSM උපාංග අදිය සමග සන්නිවේදනය සිදුකර ගැනීම සදහා වේ. 


UART ක්‍රමයට දත්ත සම්ප්‍රේෂණය සදහා මයික්‍රෝකොන්ට්‍රෝලරයේ පින් දෙකක් පමණක් ප්‍රමාණවත් වේ. 16F877A මයික්‍රෝකොන්ට්‍රෝලරයේ පින් 25 හා 26 මේ සදහා යොදාගනු ලබයි.ඒවා පිළිවෙලින් Tx හා Rx ලෙස හදුන්වනු ලබයි.මෙහි Tx පින් එක මයික්‍රෝකොන්ට්‍රෝලරයේ සිට අනෙක් උපාංගය දක්වා සිරියල් ක්‍රමයට දත්ත බිටු ගමන් කරවීම(Data Transmit) සදහා යොදාගනු ලබන අතර Rx පින් එක අනෙක් උපාංගයේ සිට මයික්‍රෝකොන්ට්‍රෝලරයට දත්ත බිටු රැගෙන ඒම(Data receive) සදහා යොදාගන් ලබයි.මෙහිදී Data Transmit කිරීමට සහ Data receive සදහා වෙන වෙනම සම්බන්දතා දෙකක් යොදා ගන්නා බැවින් දෙදිශාවටම එකවර උවද දත්ත සම්ප්‍රේෂණය සිදුකර ගත හැක.මෙවැනි දෙපසටම ඒකවර  දත්ත සම්ප්‍රේෂණය කලහැකි පද්ධතියක් තාක්ෂණ ව්‍යවහාරයේදී Full Duplex  සන්නිවේදනයක් ලෙස හදුන්වනු ලබයි.



ඕනෑම දත්ත සම්ප්‍රේෂණ පද්ධතියක් උපාංග දෙක අතර සන්නිවේදනය කිරීමේදි යම් ක්‍රමවේදයකට හෙවත් නිති මාලාවකට අනුව  සන්නිවේදනය සිදුකරනු ලබයි. UART ක්‍රමයට දත්ත සම්ප්‍රේෂණය කිරීමේදි යොදාගන්නා ප්‍රොටෝකෝලය හෙවත් නිති මාලාව RS232 ක්‍රමය වේ.මෙම ක්‍රමය ඉතා සරල දත්ත සන්නිවේදන ක්‍රමයක් වේ.මෙම ක්‍රමයේදි යොදා ගන්නා නිති මාලාව පහත දැක්වේ


·         දත්ත සම්ප්‍රේෂණයේ  දී, දත්තයේ ආරම්භය හා අවසානය හදුනා ගැනීම සදහා බිටු දෙකක් යොදාගනු ලබයි.ඒවා ආරම්භක සහ නැවතුම් බිටු ලෙස හැදින්වේ.

·         දත්ත යවන්නාගේ හා දත්ත ලබාගන්නාගේ දත්ත සම්ප්‍රේෂණ වේගය (baud rate) සමාන විය යුතුය.

·         දත්ත මාර්ගය අක්‍රිය තත්වයේ දී හෙවත් දත්ත සම්ප්‍රේෂණය නොකරන විට,දත්ත මාර්ගය ඉහළ තාර්කික මට්ටමක් ඇත (1)

·         සෑම දත්ත සම්ප්‍රේෂණයක්ම ආරම්භ වන්නේ සෑම විටම ශුන්‍ය (0) යෙනි.මෙය START බිට් ලෙස හදුන්වනු ලබයි.

·         මෙහිදී සම්ප්‍රේෂණය කරන සෑම දත්තයක්ම 8 හෝ 9-පළල බිටුවක් වේ (LSB බිට් පළමුව යවනු ලැබේ)

·         එක් දත්තයක් සම්ප්‍රේෂණය අවසන් වන්නේ සෑම විටම එකක් (1) වන බිට් එකකින් එය STOP බිට් ලෙස හදුන්වනු ලබයි.