Friday, November 23, 2012

තුන් වන පාඩම


                යාලුවෝ සෙට් එක බලා ගෙන ඇති නේද අලුත් පෝස්ට් එකක් එන තුරු? මටත් නින්දක් නෑ ඔයාලට අලුත් දෙයක් දෙනකන්. ඉතින් ඔන්න අදත් ආව මම. අද අපේ junior batch  එකේ sport meet එක. රෑ DJ එක තිබුනා. එකට ගිහින් ආවෙ දැන් රෑ 12.30 යි. මට අදම මේ පෝස්ට් එක ලියන්නම ඕන.එහෙනම් ඔන්න නමෝ විත්තෙන් වැඩේ පටන් ගමු.
            අද එදා පාඩමේ ඉතිරි ටික කරමු නේද? එහෙනම් ඔන්න....

STACK POINTER

            අපි program එකක් ලියන කොට ඒක විවිධ කොටස් වලට බෙදනවා. Main program කියලා අපි හදුන්වන්නෙ අපේ ප්‍රධාන ක්‍රම ලේඛනය. එක තමයි නිතරම වැඩ කරන්නේ. ඊට අමතරව විවිධ ක්‍රියා වලට අදාලව sub routine ලියනවා. උදාහරණයක් ලෙස අපේ main program එක වැඩ කරන වෙලාවෙ මොකක් හරි sensor එකකින් input එකක් එනවා.ඒකට අදාල program එක sub routine එකක් විදියට තමයි ලියන්නේ. ඉතින් අපිට ඕක කරන්න program එකේදී memory එකේ එක එක තැන් වලට පනින්න වෙනව. ඒ වෙලාවට කලින් හිටපු තැන මතක තියා ගන්නෙ මේ stack pointer කියන රෙජිස්ටර් එක. දැන් තේරුනාද? පහත රූපයෙන් ඔයාලට මම කියන දේ තවත් තේරේවි.



TIMERS

            අපේ වැඩ සටහනේ විවිධ අවස්ථා වලදී කාල ගනනය සිදු කර කටයුතු කිරීමට සිදු වෙනවා. එහිදී තමයි මේ timers ඕන වෙන්නේ. මයික්‍රොකොන්ට්‍රෝලරය අනුව එහි තිබෙන timers ගනන හා විවිධ හැකියාවන් වෙනස් වෙනවා. මේවායේ timers ආකාර TIMER 0 ,TIMER  1 විදියට තමයි වෙනස් වෙන්නෙ. මේ එකිනෙකට ගනනය කල හැකි කාල ප්‍රමාණත් වෙනස්. අනෙක මේව දෘඩාංග(Hardware timers). ඒ නිසා Program එකෙන් මේවා පාලනය කරන්න පුලුවන්. Main program එකට කරදරේකුත් නෑ.මේවා ගැන මම පස්සෙ ආයෙ කියනවා. මොකද මේක පැහැදිලි වෙන්නේ program එකක් කරන ගමන් කියන කොට. ඔයාල කියන්න එපා උඩින් පල්ලෙන් කරනවා කියල හොදේ...

WATCH DOG TIMER

            මේක නම් ටිකක් අමුතුයි. අනෙක් හැම timer එකක්ම වැඩ කරන්නේ system clock එකෙන්. ඒත් මේකට ඇතුලෙම resister , capacitor වලින් හැදුන දෝළකයක් තියෙනවා (RC Oscillator). මේක සක්‍රිය කරන්නෙත් අමුතු විදියට. එනම් මේක on කරන්නෙ program එකේ මුල තියෙන configuration bits හදලා.කලබල වෙන්න එපා.මේව මම හෙමිහිට පැහැදිලි කරන්නම්.මුලින්ම මට ඕන මේක මොකද්ද, මොකටද ගන්නේ , මේක අනෙක් ඒවට වඩා වෙනස් වෙනවද නැද්ද කියල ඔයාල තේරුම් ගන්න එක විතරයි.
            ආ......... මම මේකෙන් මොකද්ද වෙන්නෙ කියලා කිව්වෙ නැහැනෙ. අනේ සමා වෙන්න... මේකෙ වෙන්නෙ මේ රෙජිස්ටරේ පිරුනම සම්පුරණයෙන්ම program එක restart වෙනවා.ඇත්තටම මේක මොකටද? අපි හිතමු දිගින් දිගටම එකම program එක වැඩ කරනවා කියලා. අපිට මෙක කරන්න වෙන්නෙ program එක  එක පාරක් වැඩ කරල ඉවර උනාම මුලට යන්න කියල විධානයක් ලියල. ඒත් අපිට මේ timer එක යොදා ගෙන ඒක කරන්න පුලුවන්. අපි මේක සකසනවා program එකේ තරමට. එතකොට හරි නේද? Program එක run වෙලා ඉවර වෙන කොට watch dog timer එකත් පිරෙනවා. ඊළගට restart වෙනව.මේකෙන් අපිට වාසියක් තියෙනවා. එකම program එක නැවත නැවත වැඩ කරන්න ලිව්ව නම් මයික්‍රොකොන්ට්‍රොලර් එක හිර (struck) වෙන්නත් පුලුවන්. මේකෙන් නිතර නිතර restart වෙන හින්ද එක වෙන්නෙ නෑ.

STATUS REGISTER


            මේක ගොඩක් යොදා ගන්නේ ALU register එකත් එක්ක. ALU register එකේ ගණිත කර්ම කරන කොට එවායේ විවධ දත්තයන් ගබඩා කරන්නේ මේකෙ. ගණිත කර්මයේ උත්තරය 0 ද වගේ ඒව. තවත් වැඩක් තමයි අර මම මුලින් කිව්වෙ Bank select කරන්න වෙනවා කියල.ඒක කරන්නෙ මේකෙ 5 වෙනි bit එකෙන්.පහත රූපයෙන් එක ඔයාලට තවත් ඒක තේරෙවි.

            එහෙනම් අදට ඇති. මට දැන් නිදි මතයි. මම යනවා හොදේ .... ඔබ සැමට බුදු සරණයි.
            

Wednesday, November 21, 2012

දෙවැනි පාඩම

              ඔයාලට ආයුබෝවන් කියා ගෙනම අදත් මම ඔයාලගෙ දිහාවට එනවා අලුත් දේවල් ගොඩක් අරගෙන. ඉතින් යාලුවනේ මට ගොඩක් සතුටුයි.මට හොද ප්‍රතිචාර ගොඩක් තිබුනා. මගෙන් ඔයාල ඉල්ලල තිබුනා මයික්‍රොකොන්ට්‍රෝලර් එකේ ඇතුලාන්තය ගැන හොද පෝස්ට් එකක් කරන්න කියලා. ඔව් අද මම ඒ ඉල්ලීම තරමක් දුරට හරි ඉටු කරන්න හිතා ගෙන තමයි ආවෙ.කථා ඕන නෑ වැඩේට බහිමු. 
              මොනවගෙන්ද මේක හැදිල තියෙන්නෙ? මේක ඇත්තටම ඉලෙක්ට්‍රොනික් උපකරන විශාල ප්‍රමාණයක එකතුවක්. මේකෙ තියෙන කුඩාම තැනුම් එකකය රෙජිස්ටර්(Register) කියලා තමයි හදුන්වන්නෙ. මේක හැදිලා තියෙන්නේ Flip flop 8ක් එකතු වෙලා. පහත රූපයෙන් ඒක ඔබට පැහැදිලි වේවි.


              Flip flop කියන්නේ bit 1 ක මතකයක් තියා ගෙන ඉන්න පුලුවන් ඉලෙක්ට්‍රොනික් සැකැස්මක්. හැබැයි clock එක තියෙනකන් විතරයි මේ bit එක තියෙන්නෙ. මේ විදියට bit 8ක් රෙජිස්ටර් එකක තියා ගන්න පුලුවන්. අපි මයික්‍රොකොන්ට්‍රොලර් එක ක්‍රමලේඛනය කරනවා කියන්නේ අපේ වැඩේට හරියන්න මේ රෙජිස්ටර් ටික සකසන එකයි.මේ ආකාරයට විවිධ වැඩ වලට විශේෂ කරපු රෙජිස්ටර් මයික්‍රොකොන්ට්‍රෝලර් එක ඇතුලෙ තියෙනවා. මම කලින් දවසෙ කිව්වා නේද මතකයේ තියෙන SFR , GPR කියාලා මතක කොටස් 2ක් ගැන?. මෙහි SFR කියන්නෙ Special function register කියන එකයි. මෙම රෙජිස්ටර් මයික්‍රොකොන්ට්‍රෝලරයේ සුවිශේෂී වැඩ සදහා බාවිතා කරයි.එනම් ඒවායේ අපට ඕන ඕන විදියට දත්ත පුරවන්න බැහැ. අපි පිටතින් ගන්න දත්ත , වෙනත් ගණිත කර්ම වලින් ගන්න දත්ත අපි GPR හෙවත් General purpose register තුල ගබඩා කරනවා. අපි දැන් මේ රෙජිස්ටර් කිහිපයක් ගැන බලමු.

W REGISTER 

             කරුමෙ කියන්නේ මේ ඇතුලෙ තියෙන රෙජිස්ටර් වලට කෙලින්ම දත්ත හුවමාරු කරන්න බැහැනෙ. ඒ නිසා මේකට අතරමැදි රෙජිස්ටර් එකක් පාවිච්චි කරන්න වෙනවා. හරියට නිකන් ලව් කරන කාලෙ කොල්ල සපෝටර් කෙනෙක්ගෙ අතේ ලියුම් යවනව වගේ. ඔන්න ඕකට තමයි W register එක පාවිච්චි කරන්නෙ.

PROGRAM COUNTER 

             අපි මෙහෙම හිතමුකො....අපි පන දා ගෙන ලියන program එක මයික්‍රොකොන්ට්‍රෝලරයට දැම්මම තියෙන්නෙ පේලි විදියට කියලා.හැම පේලියටම අංකයක් තියෙනවා. ඒ කියන්නෙ ඒක තමයි ඒ පේලියෙ ලිපිනය(Address). අපිට මේ ලිපිනයෙන් ඕන වෙලාවක Access කරන්න පුලුවන්.මෙන්න මේ ලිපිනය තියා ගෙන ඉන්න රෙජිස්ටරය තමයි Program register කියන්නෙ.මෙම ලිපිනය clock pulse එක සමග එකින් එක වැඩි වෙනවා.මේක වෙනස් වන්නේ CALL,RETLW, GOTO, RETURN වගේ Assembly key word බාවිතා කලොත් විතරයි.

ALU REGISTER

             මයික්‍රොකොන්ට්‍රෝලරය තුල සිදු කරන ගණිත කර්ම මෙම රෙජිස්ටරය තුල සිදු කරනවා. එකතු කරීම , ගුණ කිරීම , බෙදීම, අඩු කිරීම වගේම බූලියන් ගණිත කර්මත් BIT SHIFTING , BIT ROTATING , BIT ORIENTED වගේ ඒවත් කරන්න පුලුවන්.මම මේ ගණිත කර්ම වෙනම පෝස්ට් එකක් දාල කියල දෙන්නම්. නැත්තම් ඔයාලට විතරක් නෙවෙයි මටත් පටලැවෙනව.පහත රූප සටහනේ දැක්වෙන්නෙ ALU Register එකේ දළ සැකැස්මක්.


             අදට එහෙනම් මම මෙතනින් නවතිනවා. හෙට නම් වැඩ ගොඩක් තියෙනවා.තව රෙජිස්ටර් වර්ගත් තියෙනවා කියලා දෙන්න.කොහොමත් මොළේට දරන්න පුලුවන් ප්‍රමාණෙකුත් තියෙනවනෙ.එහෙනම් ඕං මම ගියා. හැමෝටම බුදු සරණයි......

Tuesday, November 20, 2012

මුල පුරමු මෙසේ


අද ඔන්න මම හාපුරා කියල ආව මුල්ම පාඩම පටන් ගන්න. ඉතින් යාලුවනේ ඔයාල ලැහැස්තිද? අපි බලමු මුලින්ම මේ මයික්‍රොකොන්ට්‍රෝලරය යනු මොකද්ද කියල?
            ඇත්තටම මේක පෙනුමෙන් සංගෘහිත පරිපථයක්(Integrated Circuit (ic) ). ඒත් මේක පුංචි පරිගණකයක් වගේ.මේක අපිට ඕන විදියට දත්ත කවල අවශ්‍ය ආකාරයට යොදා ගන්න පුලුවන්.මෙයට පිටතින් දෙන්න ඕන ප්‍රදානයන්(Inputs) හා බල සැපයුම(Power supply) පමනයි. එවිට අප දී ඇති දත්ත වලට අනුව ක්‍රියා කරනවා.
            මයික්‍රොකොන්ට්‍රෝලරය තුල RAM, ROM, Clock සියල්ල පිහිටවා ඇත. නමුත් මයික්‍රොප්‍රොසෙසරයට මේවා පිටතින් ලබා දිය යුතුයි.හැබැයි මයික්‍රොකොන්ට්‍රෝලරයට සාපේක්ෂව එහි ක්‍රියාකාරී වේගය වැඩි.
            ඔයාල මට කියන්න එපා මම මේකෙ අතීතෙ ගැන කිව්වෙ නෑ කියල. ඒක ඔයාල ඕන නම් කොහෙන් හරි හොයා ගන්න.අනෙක මොකටද අතීතෙ ?.
            මයික්‍රොකොන්ට්‍රෝලරයේ ඇතුලන්තය පහත රූප සටහන් 2න් නිරූපනය වේ. බලල ඒකෙ චිත්ත රූපයක් මවල තියා ගන්නකො.මම පැහැදිලි කරන කොට ඔයාලට පස්සෙ තේරුන් යාවි.






            මයික්‍රොකොන්ට්‍රෝලරයට විදුලිය සැපයූ විට එයට සපයා ඇති ක්‍රම ලේඛනය(Program) පරීක්ෂා කර එයට අනුව පියවරෙන් පියවර(Step by step) වැඩ කරයි. ඒ සදහා ලබා දී ඇති ප්‍රදානයන් පරීක්ෂා කර බලා එයට අදාලව ක්‍රමලේඛනයට අනුව අදාල ප්‍රතිදානයන්(Output) ලබා දෙයි. මේ සදහා මෙය මතකයන්(memory)  2ක උපකාර ලබා ගනු ලබයි.මම ඒව ඉංග්‍රිසියෙන්ම දානවා. මොකද ඒව සිංහලෙන් දැන ගෙන වැඩක් නෑ.
·         Data memory
·         Program memory

PROGRAM MEMORY
            අපි විවිධ ක්‍රමලේඛන ලියන භාෂාවන් වලින් නිර්මාණය වුන ක්‍රම ලේඛනය මයික්‍රොකොන්ට්‍රෝලරයේ ගබඩා කර තබන්නේ මෙම මතකයේය. මෙය ස්ථිර මතකයයි. මෙය බොහෝ විට Flash ROM එකකි.මෙහි ධාරතාවය(Capacity) උපකරණයෙන් උපකරණයට වෙනස් වේ.

DATA MEMORY
            මෙය SFR හා GPR යනුවෙන් කොටස් 2කි. මෙහි GPR යනු RAM එක වශයෙන් බාවිතා වන කොටසයි. SFR යනු මයික්‍රොකොන්ට්‍රෝලරයේ නියමිත වැඩ සදහා සකසා ඇති රෙජිස්ටර්(PORTA, PORTB, TRISA, TRISB) වර්ග වේ. දත්ත හැසිරවීමේ පහසුවට මෙම මතකය BANK 1, BANK 2 වශයෙන් කොටස් 2ට බෙදේ.ඔබට අවශ්‍ය රෙජිස්ටරය බාවිතයට ප්‍රථම එම රෙජිස්ටරය අයත් BANK එක select කරන්න අමතක කරන්න එපා.

            ගොඩක් අය මුලින්ම තෝර ගන්නෙ 16F84 . ඒත් මම හිතුවා  16F877a වගේ එකකින් වැඩේ කලා නම් හරි කියල. අදට එහෙනම් මෙතනින් සමු ගන්නවා. මම ආයෙ බ්ලොග් පෝස්ට් එකකින් එන්නම් අද නවත්වපු තැනින් පාඩම පටන් ගන්න. එහෙනම් ඔබලාට සුභ අනාගතයක්.
                                                                                                                        බුදු සරණයි
            

Thursday, November 15, 2012

අපේ සේවාව කෙටියෙන්





ඉතින් හැමෝටම මුලින්ම ආයුබෝවන් කියන්නම්. මම චමී. ඔයාලට රොබෝ තාක්ෂණය කියලා දෙන්නෙ මම තමයි. ඉස්සරහට මගේම කියල වෙබ් අඩවියකට යන්නත් හිතේ නැත්තෙම නෑ. ඒත් තියෙන අර්ථික ගැටලු නිසා මුලින් බ්ලොග් එකෙන් වඩේ පටන් ගන්නම්.
            මේ බ්ලොග් අඩවියෙන් ඔබට වන සේවාව මම මුලින් සදහන් කරන්නම්.ඔයාලට මේකෙන් මයික්‍රොකොන්ට්‍රෝලර් තාක්ෂණය සිංහලෙන් ඉගෙන ගන්න පුලුවන්.අලුත් ඉලෙක්ට්‍රොනික් වැඩ ඉගෙන ගන්නත් පුලුවන්. ඒව හදන්න බඩු ගන්න විදිය මගෙන් දැන ගන්නත් පුලුවන්. ඕන නම් මට ඔයාලට අඩුවට බඩු ගෙන්නල දෙන්නත් පුලුවන්. ඒක ඔයාලගෙ කැමැත්ත. අලුතෙන් මට ලැබෙන දැනුම මම ඔයාලත් එක්ක බෙදා ගන්නම්.අද කාලෙ ඉස්සරහට යන්න පොතටම ඇලිල ඉදල බෑ. ප්‍රායෝගික වෙන්න ඕන....
            පුලුවන් නම් මට එක උදව්වක් කරන්න. ඔයාල මේක බැලුවොත් කමෙන්ට් එකක් දාල යන්න. එක මට ලොක= හයියක්.

එහෙනම් අදට මෙච්චරයි. ඔබ සැමට බුදු සරණයි.