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 එකෙන්.පහත රූපයෙන් එක ඔයාලට තවත් ඒක තේරෙවි.

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

8 comments:

  1. oya type karana akurak akurak gane oyata pin..............!!

    ReplyDelete
  2. stuck level over Flor kiyana eka hodata thurune dan...!!

    ReplyDelete
  3. නියමයි ... සොක්ෂිප්තව හොදට ලියල තියෙනවා....
    බොහොම ස්තුතියි...දිගටම ලියන්න .. අපි ඉන්නවා..
    ජය වේවා!!!

    ReplyDelete
  4. Nice work dude.....Wish u all the success in achieving ur targets....I'm reallly proud as an NDES.......


    Udara(Rickey)@NDES10

    ReplyDelete
    Replies
    1. මට ගොඩක් සතුටුයි ඔයාල හැමෝගෙම කමෙන්ට්ස් දැක්කම.බොහොම ස්තූතියි.මේ හැම වචනයක්ම මට ලියන්න ජීවය දෙනවා.මම මේ වැඩෙ අත හරින්නෙ නෑ.

      Delete
  5. හතරවෙනි පාඩම ඉක්මනට ඔනේ !!!

    ReplyDelete