Saturday, July 31, 2010

පික්-ප්‍රෝග්‍රැමින් වලට ප්‍රවේශය (introduction to PIC)

ඔන්න අද තමයි පික්-ප්‍රෝග්‍රැමින් වලට ප්‍රවේශ වෙන්න හදන්නේ.මුලින්ම සාමාන්‍ය පරිගණක ප්‍රොසෙසරයක් වැඩ කරන විදිය ගැන සරල විස්තරයක් දෙන්නම්.
සාමාන්‍ය පරිගනක ප්‍රොසෙසරයක මොකක් හරි ක්‍රියාවක්(උදා: ඉලක්කම් දෙකක් එකතු කිරීම) කරන්න අවශ්‍ය වුනොත් ප්‍රොසෙසරයට එකතුකරන්න ඔනේ ඉලක්කම් 2 සහ එකතුකරන්න කියන උපදෙස දෙන්න ඔන. ඊට පස්සේ එයා එයාට ලැබුනු උපදෙස හඳුනා ගෙන ඒ උපදෙස් වල තියන දේ කරනවා ඊට පස්සේ ඊලඟ උපදෙස මේ විදියට දිගටම කරගෙන යනවා.ඇත්තටම මේ අතිශයින්ම සරල පැහැදිලිකිරීමක් පමණයි.මේ ගැන හැදෑරීමට තවත් බොහෝ කරුණු ඇතිබව මතක තබා ගන්න.
ඔබ බොහෝ විට සාමාන්‍ය අයි.සී ගැන දන්නවා ඇති මේවා තුල යම් කිසි කාර්‍යයක් කිරීම සඳහා විශේශයෙන් සැලසුම් කරනලද පරිඵතයක් තියෙනවා.මෙම අයි.සී බොහෝවිට නිර්මාණය කර තිබෙන්නේ නිශ්චිත ප්‍රදානයක්(ඉන්පුට්) ලබාදුන් විට සැලසුම අනුව නිශ්චිත ප්‍රතිදානයක්(අවුට්පුට්) ලබා දීමයි.මේවායේ සැලසුම අනුව යම් කාර්‍යයක් සඳහා සැලසුම් කරනලද අයි.සී එකක් භාවිතා කිරීමට හැකිවන්නේ පටු පරාසයක කටයුතු සඳහා පමනයි.නමුත් අයි.සී එකක් සැලසුම් කරන ලද කාර්යයෙන් පිට භාවිතා කල නොහැකි යැයි මින් අදහස් වෙන්නේ නෑ.උදාහරනයක් ලෙස 4017 කියන අයි සී එක එල්.ඊ.ඩී වලින් විසිතුරු නිර්මාණ කිරීමට බහුලව යොදා ගන්නවා. නමුත් මේ අයි සී එක නිර්මාණයකරලා තියෙන්නේ 0 සිට 10 දක්වා ගනන් කිරීමට(කවුන්ටරයක් ලෙස )
නමුත් පික් කියන්නේ මීට වඩා වෙනස් අයි සී වර්ගයක් ඇත්තටම මේක සර්ව සම්පූර්ණ පරිගනකයක්.මේක කිසිම නිශ්චිත කාර්යයකට සැලසුම් කරලා නෑ.අපට අවශ්‍ය ප්‍රෝගෑම් එකකින් මේ පික් එක ප්‍රෝගෑම් කරලා අපට අවශ්‍ය බොහෝ කාර්යයන් සඳහා යොදාගතහැකියි.මේ නිසා මෙවා සාමාන්‍ය අයි.සී වලට වඩා බොහෝ පුලුල් පරාසයක භාවිතා කල හැකියි.උදාහරනයක් ලෙස ඒක එල්.ඊ.ඩී එකක් නිවි නිවි දැල්වීමේ සිට තනිවම මග සො‍යා ගෙන ගමන් කල හැකි රොබෝ යන්ත්‍රයක් දක්වා පරාසයක් භාවිතා කල හැකියි.මේ පික් එකක සාමාන්‍ය හැඩය අයිසී එකක හැඩයට 100%ක් ම සමානයි.වෙනස තියෙන්නේ ක්‍රියාකාරිත්වයේ විතරයි.

මුලින්ම බලමු මේ පික් වල බාහිර පෙනුම,මේවා විව්ධ ප්‍රමානයෙන් තියනවා මේවා මිලදී ගන්න තියෙන්නේ අයි.සී වගේම අංකයකින් තමා.මේවා නිශ්පාදනය කරන්නේ මයික්‍රෝචිප් කියන ආයතනය අපි පික් කියලා කිවුවාට මේවායේ හරි නම තමා මයික්‍රෝකන්ට්‍රෝලර්.පික් කියන්නේ මයික්‍රෝචිප් කියන ආයතනය මගින් නිශ්පාදනය කරන එක මයික්‍රෝකන්ට්‍රෝලර් ශ්‍රේණියක් පමණයි.අපි කථාකරන්නේ පික් ගැන විතරයි.තව ප්‍රසිද්ද සමාගම් වලින් මයික්‍රෝකන්ට්‍රෝලර් නිශ්පාදනය කරනවා අපි හොඳට දන්න ඉන්ටෙල් සමාගමත් මේවා නිපදවනවා.
සාමාන්‍යෙන් පික්වල අංක තියෙන්නේ මෙහෙමයි මුලින් 12,16,18 වගේ ඉලක්කමක් තියනවා ඒක ඒ පික් ශ්‍රේණිය හඳුනාගන්න තියන අංකයක්.ඊලඟට ඉංග්‍රීසි අකුරක් තියනවා F,C...etc වගේ ඊට පස්සේ පික් එක විශේශිතව හඳුනාගන්න අංකයක් තියනවා 84,629,877වගේ සමහර ඒවායේ අංකයේ අගට ඉංග්‍රීසි අකුරක් තියනවා A වගේ සමහරවිට අගට ඉංග්‍රිසි අකුර තියන සහ නැති එකම අංකය තියන පික් තියනවා(16F84 සහ 16F84A) ඒවායේ පොඩි වෙනස්කම් තියෙන්න පුලුවන්. පික් වල අංක වලට උදාහරණ 16F84,16F877,16F877A,12F629.........

මේ පික් එකක් කියන්නේ සම්පූර්ණ පරිගනකයක් කියලා මම කලින් කිවුවා මතක ඇති.මේකේ තියන බාහිර අග්‍ර හඳුනා ගන්න බලමු.
ඕනම අයි සී එකක අග්‍ර නම් කරන්නේ 1 සිට පිලිවෙලට ඉලක්කම් වලින් පික් එකකත් එහෙම තමා.පික් එකක අංකය ප්‍රින්ට් කර ඇති පැත්ත දිහා හොඳින් නිරීක්ශනය කරාම එක පැත්තක අර්ධ කවාකාර කට්ටයක් තිබෙනවා දැකිය හැකියි.ඒ කට්ටය ඉහල පැත්තට හරවා ගත්තාම ඒ කට්ටයට වම් පැත්තේ කුඩා තිතක් වගේ සලකුනක් කොටලා තියනවා දැකිය හැකියි අන්න ඒ කෙලවරේ සිට තමයි පික් එකේ අග්‍ර නම් කරන්න පටන් ගන්නේ 1 සිට ඉදිරියට පිලිවෙලට අංක වලින් අග්‍ර නම් කරන්න පින්තූරය බලන්න.
මම මේ උදාහරනයට ගත්තේ 16F84 කියන එක.
මේවායේ අංකය අනුව විවිද ඒවායේ විවිද අග්‍ර ප්‍රමානයන් තියනවා.මම උදාහරනයේ ගනිපු එකේ අග්‍ර 18ක් තියනවා. මුලින්ම ඕනෑම පික් එකකට විදුලිය සපයන්න ඕන ඒකට අග්‍ර2ක් තියනවා ඩේටා ශීට් එකක් ගත්තොතින් ඒක නම්කරලා තියෙන්නේ VDD සහ VSS කියලා VDDකියන්නේ + සප්ලයි එක මේක 2V -6V අතර පරාසයේ පික් එක ක්‍රියා කරනවා.නමුත් සාමාන්‍යයෙන් 5V සප්ලයි එකක් තමා දෙන්නේ මේක ඉතා පිරිසිදු සැපයුමක් වියයුතුයි බැටරි පාවිච්චි කරන්න පුලුවන් නම් ඉතා හොඳයි.පවර් පැක් එකක් පාවිච්චි කරොත් 7805 අයි.සී එකක් පාවිච්චි කරලා රෙගියුලේට් කිරීම අත්‍යාවශ්‍යයි.VSS කියන්නේ - සප්ලයි එක මේක පරිපත සටහන් වල GND කියලාත් තියනවා.මේකේ නම් අග්‍ර 5,14.

සාමාන්‍ය පරිගණක ප්‍රොසෙසරයක් නම් නිශ්පාදනය කරපු ක්ලොක් ස්පීඩ් එකට තමා ක්‍රියාත්මක වෙන්නේ (උදාහරන විදියට 2.2GHz,3.2GHz).
ඒත් මේ මයික්‍රෝකන්ට්‍රෝලර් එක ක්‍රියාත්මක වෙන්න නම් බාහිරව ක්ලොක් එකක් සම්භන්ද කරන්න ඕන.මේ ගැන වැඩි විස්තර පරිපථයක් හදාගනිද්දි විස්තර කරලා දෙන්නම්
අපිට මේකට ක්ලොක් එකක් සම්භන්ද කරන්න වෙනම අග්‍ර 2ක් හෝ කීපයක් තියනවා අපි සම්භන්ද කරන ක්ලොක් එකේ වේගයට තමා මේ පික් එක ක්‍රියාත්මක වෙන්නේ සාමාන්‍යයෙන් 4MHz -20MHz පරාසයෙන් ක්ලොක් සම්භන්ද කරන්න පුලුවන් ඒක අවශ්‍යතාවයේ හැටියට තීරනය කරන්න ඕන.
උපරිම ක්ලොක් ස්පීඩ් එක ඩේටා ශීට් එකේ තියනවා.(ඩේටා ශීට් එක මයික්‍රෝචිප් වෙබ් සයිට් එකේ ඩවුන්ලෝඩ් කරන්න තියනවා ).මේ අග්‍ර OSC1/CLKIN,OSC2/CLKOUT කියලා නම්කරලා තියනවා.මේකේ නම් අග්‍ර 15,16.

මේ පික් එකක් බාහිර පරිඵතයක් සමඟ සම්භන්ද කරන අග්‍ර කිහිපයක් තියනවා. මේ අග්‍ර කිහිපයක් එකට එකතු කරලා පෝට් එකක් කියලා හඳුන්වනවා.
සාමාන්‍යයෙන් පෝට් එකක අග්‍ර 8ක උපරිමයකට යටත්ව අග්‍ර 8ක් හෝ ඊට අඩු අග්‍ර ගනනක් තියෙන්න පුලුවන්.
පික් එකක පෝට් එකක් හෝ කිහිපයක් තියෙන්න පුලුවන්.මේ පොර්ට් නම් කරන්නේ පලවෙනි පොර්ට් එක PORTA කියලා සහ දෙවනි එක PORTB කියලා.තවත් තියනවානම් ඒ ක්‍රමයටම නම් කරනවා( PORTC,PORTD.....etc) මේ උදාහරනයේ නම් පොර්ට් 2යි තියෙන්නේ PORTA සහ PORTB.අපේ උදාහරනයේ PORTA වල පින් 5ක් සහ PORTB වල පින් 8ක් තියනවා. මේ පොර්ට් එකම හෝ පෝර්ට් එකේ එක බිට් එකක් අපි ලියන ප්‍රෝගෑම් එක ඇතුලෙදී අපිට අවශ්‍ය පරිදි ඉන්පුට් හෝ අවුට්පුට් විදියට සකස් කර ගන්න පුලුවන්.
පොර්ට්වල එක් එක් පින් එක නම් කරන ක්‍රමයක් තියනවා.
උදාහරනයක් විදියට,
PORTA වල 1වෙනි bit එක RA0 (pin 17),
PORTA වල 2වෙනි bit එක RA1 (pin 18),
PORTA වල 3වෙනි bit එක RA2 (pin 1),
PORTA වල 4වෙනි bit එක RA3 (pin 2),
PORTA වල 5වෙනි bit එක RA4 (pin 3),
සහ
PORTB වල 1වෙනි bit එක RB0 (pin 6),
PORTB වල 2වෙනි bit එක RB1 (pin 7),
PORTB වල 3වෙනි bit එක RB2 (pin 8),
PORTB වල 4වෙනි bit එක RB3 (pin 9),
PORTB වල 5වෙනි bit එක RB4 (pin 10),
PORTB වල 6වෙනි bit එක RB5 (pin 11),
PORTB වල 7වෙනි bit එක RB6 (pin 12),
PORTB වල 8වෙනි bit එක RB7 (pin 13),

මතක තියාගන්න මේ පික් එකේ PORTA 5 bit සහ PORTB එක 8bit එකක්.
මේකේ තියන තවත් වැදගත් පින් කීපයක් තියනවා.ඒවායෙන් වැදගත්ම එක තමයි MCLR කියන එක මේක පාවිච්චි කරන්නේ පික් එකක දැනට තියෙන ප්‍රෝගෑම් එක ඉරේස් කරලා දාන්න. නැවත ප්‍රෝගෑම් කරන්න යද්දි මේක ප්‍රයෝජනවත්.අනික තමා INT කියලා තියන එක පික් එකේ ප්‍රශ්නයක් නිසා ප්‍රෝගෑම් එක නැවත ස්ටාට් කීරීමේ අවශ්‍යතාවයක් ආවොත් වගේ දෙයක් වුනොත් මේ අග්‍රයේ අගය LOGIC HIGH වෙනවා මේක එච්චරම පාවිචිකරන්නේ නෑ.අනෙක තමයි T0CK1 කියන එක මේක තවත් ක්ලොක් ඉන්පුට් එකක් මේක කලින් කියපු ක්ලොක් එකෙන් වෙන්ව(Separatly) පික් එක ඇතුලේ තියන ටයිමර් වැඩකරන්න ඕන වුනොත් පාවිච්චිකරන්න තියන එකක් මේකත් එච්චරම පාවිච්චි වෙන්නේ නෑ.
පික් එකේ බාහිර දේවල් ඉවරයි එකේ අභ්‍යන්තරය තමයි ඊලඟට බලන්න තියෙන්නේ.මෙතැන් සිට සියලුම පැහැදිලි කිරීම් සඳහා මම යොදාගන්නේ PIC16F84A කියන මයික්‍රෝ කන්ට්‍රෝලරය මේක රුපියල් 200-250කට විතර මුදලකට පිටකොටුවේ තියන ඉලෙක්ට්‍රොනික උපකරන අලෙවිසැල් වලින් මිලදී ගන්න පුලුවන්.අතේ සල්ලි තියන වෙලාවක හරි කොටුවේ ගිය වෙලාවක හරි මේ එකක් අරගෙන තියාගත්තොතින් ඉස්සරහට කරන්න තියන දේවල් කරලා බලන්න පුලුවන්.

ඊ ලඟට බලමු මේ පික් එකක් ප්‍රෝගෑම් කරන්නේ කොහොමද කියලා.ඉස්සරවෙලාම අපේ කටයුත්තට ගැලපෙන ප්‍රෝගෑම් එකක් C වලින් හරි ඇසෙම්බ්ලි වලින් හරි ලියලා කම්පයිල් කරගන්න ඔනේ මේකට විශේෂ කම්පයිලර්ස් තියෙනවා(ප්‍රෝගෑම් ලියනකොට මේ ගැන විස්තර කරන්නම්).කම්පයිල් කරාම එන්නේ හෙක්සා-ඩෙසිමල් කෝඩ් එකක් .HEX එක්ස්ටෙන්ශන් එකෙන් . මේක සාමාන්‍ය ප්ලේන් ටෙක්ස්ට් එඩිටර් එකකින් ඕපන් කරලා බලන්න පුලුවන්.ඊට පස්සේ අපේ පික් එක පරිගනකයට සම්භන්ද කරගන්න ඕන.මේක සීරියල් පොර්ට් එක හරහා හරි USB හරහා හරි කරන්න පුලුවන් මෙහෙම සම්භන්ද කරන්න අපිට පොඩි පරිපතයක් අවශ්‍ය වෙනවා මේකට ප්‍රෝගැමර් එකක් කියනවා.USB වර්ගයේ ඒවා මිලදීගන්න වෙලඳපොලේ තියනවා.සීරියල් වර්ගයේ ඒවාත් මිලදී ගන්න පුලුවන් එත් එයින් එකක් ඉතා පහසුවෙන් හදා ගන්න පුලුවන්.බොහොම සරල පරිපතයක් තියෙන්නේ.මෙහිදී ඔන්-බෝඩ් සීරියල් පොර්ට් එක පාවිච්චි කරන්න එපා.භාවිත කරන්නා ගේ අතපසුවීමකින් මවුපුවරුව දැවී යාහැකියි.ඒක නිසා PCI කාඩ් එකකින් සීරියල් පොර්ට් එකක් සම්භන්දකරගන්න සෙකන්ඩ්-හැන්ඩ් කම්පියුටර් පාට්ස් කඩේකින් ඉතා අඩු මුදලකට මෙයින් එකක් ගන්න පුලුවන්.පික් එක පරිගනකයට සම්භන්ද කරාට පස්සේ විශේශ ටූල් එකක් පාවිච්චි කරලා කලින් කම්පයිල් කරපු ප්‍රෝගෑම් එකෙන් පික් එක ප්‍රෝගෑම් කරගන්න ඕන.

පික් එකේ අභ්‍යන්තරය ගැන කතාකරන්න කලින් අවශ්‍ය වෙන මූලික කරුණු කීපයක් සඳහන් කරන්න ඕන.මුල්ම එක තමා රෙජිස්ටර් කියන එක.රෙජිස්ටර් කියන ඒවායින් තමා ඕනම මෙමරි ඩිවයිස් එකක් හැදිලා තියෙන්නේ.අපේ පරිගනකයේත් ඇතුලේ රෙජිස්ටර් ඕන තරම් තියනවා.අපේ පරිගනක ප්‍රොසෙසර් එක ඇතුලේ තියන රෙජිස්ටර් ගැන නම් ගොඩක් අ‍ය අහලාත් ඇති. මේ රෙජිස්ටරයක් යම් කිසි බයිනරි(දෙකේ පාදයේ ) ඉලක්කමක් ස්ටෝර් කරගෙන ඉන්න පුලුවන්.මේ රෙජිස්ටරයක තියාගන්න පුලුවන් බිට් ගනන අනුව තමා ප්‍රොසෙසර් වර්ගීකරනය කරන්නේ.උදාහරන විදියට 32බිට් ප්‍රොසෙසර් එකක් කියන්නේ ඒ ප්‍රොසෙසර් එක ඇතුලේ තියන රෙජිස්ටර් එකක තියාගන්න පුලුවන් වෙන්නේ බිට් 32ක් විතරයි. මේ විදියටම තමයි 64බිට් ප්‍රොසෙසර් එකක් ඇතුලේ තියන රෙජිස්ටර් එකක තියාගන්න පුලුවන් වෙන්නේ බිට් 64ක් විතරයි.අපි කතාකරන පික් කියන්නේ 8බිට් රෙජිස්ටර් තියන ඒවා එක නිසා ඒවා 8බිට් ප්‍රොසෙසර්.ඕනම ප්‍රොසෙසරයක් මොකක් හරි ක්‍රියාවක් කරන්න කලින් ඒකට අවශ්‍ය වෙන සේරම ඩේටා මේ රෙජිස්ටර් වලට ලෝඩ් කරන්න ඕන. මේ රෙජිස්ටර් ප්‍රදාන කොටස් කීපයකට බෙදන්න පුලුවන් .

1.විශේශ කටයුතු සඳහා වෙන්කර ඇති රෙජිස්ටර් (Special purpose registers/Special Function registers).
මේවා පික් එකේ මොකක් හරි වැදගත් ක්‍රියාවක් එක්ක බැඳිලා තියනවා.උදාහරනයක් විදියට පික් එකක රෙජිස්ටරයක් තියනවා ඒකේ තියන අගය අනුව ඒ පික් එකේ තියන පෝට් එකක් ඉන්පුට් හෝ අවුට්පුට් විදියට කන්ෆිගර් වෙනවා.මේවා අපේ ඩේටා ලෝඩ් කරන්න පාවිච්චි කරන්න බැහැ. මේවාට විශේශිත නම් තියනවා උදාහරන ලෙස TMR0, TRISA, TRISB, PCL වගේ.

2.සාමාන්‍ය භාවිතය සඳහා වෙන්කර ඇති රෙජිස්ටර් (General purpose registers).
මේවා අපිට ඕන විදියට පාවිච්චි කරන්න පුලුවන් මේවාට විශේශිත නම් නැහැ මේවාට අපේ ප්‍රෝගෑම් එක ඇතුලෙදි අපට අවශ්‍ය නමක් දෙන්න පුලුවන් මේවා හඳුන ගන්න තියෙන්නේ හෙක්සා ඩෙසිමල් ඉලක්කමක් ඒකට අපි කියනවා රෙජිස්ටර්යේ ඇඩ්‍රස් එක කියලා මේ ඇඩ්‍රස් කලින් කියපු රෙජිස්ටර් වලටත් තියනවා එවායේ ඇඩ්‍රස් තියන පරාසයයි මේ ඇඩ්‍රස් ති‍යන පරාසයයි වෙනස්.
3.ඇකියුමිලේටර් රෙජිස්ටරය(පික් වල නම් වර්කින් රෙජිස්ටරය ) (Accumilator registor/ or working registor in pic).
මේක ගොඩක් වැදගත් එකක් අපිට වෙනත් රෙජිස්ටරයකට මොකක් හරි වැලිව් එකක් ලියන්න ඕන වුනොත් ඉස්සර වෙලා ලියන්නේ මේකට ඊට පස්සේ මේකේ තියන අග‍ය අනෙක් රෙජිස්ටරයට කොපි කරනවා.
මීට අමතරව ඉන්ස්ට්‍රක්ශන් රෙජිස්ටරය (Instruction registor) කියලා එකක් තියනවා ඒක අපට වැදගත් නැහැ.

මෙන්න මෙතන පට්ට pdf ටිකක් තියනවා බලන්න http://www.ent.mrt.ac.lk/web/knowledgebase/

ඊලඟට ලියන්නේ පික් Hello World ප්‍රෝගෑම් එක සහ පරිඵතය.

21 comments:

  1. උපරිමයි!දිගටම ලියන්න

    ReplyDelete
  2. ෂා මරු ලිපි ටික. දිගටම ලියමු :)

    ReplyDelete
  3. නියමටයි.... දිගටම ලියන්න.
    අපි බලාගෙන ඉන්නවා

    ReplyDelete
  4. නියම post එක දිගටම ලියන්න

    ReplyDelete
  5. නියමයි.. දිගටම ලියන්න..

    ReplyDelete
  6. ඊලඟ ලිපිය එනකන් බලාගෙන ඉන්නේ.......

    ReplyDelete
  7. නියමයි බොට්ස්
    මචං තීම් එක ඩාක් වැඩියි කියවන්න අමාරුයි.

    ReplyDelete
  8. නියමයි මචං.....
    ඔහොම යං

    ReplyDelete
  9. Keep Up Man
    Keep UP....................

    ReplyDelete
  10. මරු...දිගටම ලියන්න...

    ReplyDelete
  11. bro :D lagadi post ekak danna adahasak nadda ?

    ReplyDelete
  12. නියමයි යාළුවා, සෑහෙන දැනුමක් ගත්තා. ඔයාට ගොඩක් පින්.....

    ReplyDelete
  13. patta machan.onama karapu deval godak igana gaththa.Digatama liyanna.

    ReplyDelete
  14. Wambotta needa uba?

    ReplyDelete
  15. දෙවන පාඩම
    වෝල්ටීයතාවය, ධාරාව , විද්‍යුත් ශේත්‍රය සහ චුම්භක ශේත්‍රය
    https://youtu.be/71Ja2cKxjqM

    ReplyDelete

ගල් මුල්,අදහස්,ප්‍රශ්න සේරම මේකේ ලියලා යන්න