PIC on Linux 1 – මෘදුකාංග ස්ථාපනය කර ගැනීම හා පලමු ක්‍රමලේඛනය

3

Posted by chanakalin | Posted in Linux, PIC microcontrollers, PIC on Linux, Robotics | Posted on 23-12-2011

කලින් පෝස්ට් එකේදි කිව්ව වගේ Linux මෙහෙයුම් පද්ධතියකදී PIC micro controller එකක් ප්‍රෝග්‍රෑම් කරන හැටි ගැන මුල ඉඳන්ම කියන්නයි යන්නෙ. මුලින්ම ඕනෙ කරන සොෆ්ට්වෙයාර්ස් ටික ඉන්ස්ටෝල් කරගනිමු. මෙතනනම් කියන්නෙ Terminal එක පාවිච්චි කරල ඉන්ස්ටෝල් කරගන්න විදිය. මෙතනදි මම gputils වලින් දෙන gpasm assembly code කම්පයිලර් එක විදියටයි, piklab වැඩේ ලේසියෙන් කරන්න පාවිච්චි කරන IDE එක විදියටයි. gpsim සිමියුලේටර් එක විදියටයි පාවිච්චි කරන්නෙ.

ඔයාල පාවිච්චි කරන්නෙ Fedora (හෝ HanthanaLinux) නම්,
මුලින්ම Applications -> Accessories -> Terminal විවෘත කරගන්න.
දැන් su කියල ටයිප් කරල Enter කරල root විදියට ලොග් වෙන්න.
gputils ඉන්ස්ටෝල් කරගන්න yum install gputils කියල Enter කරන්න.
piklab ඉන්ස්ටෝල් කරගන්න yum install piklab කියල Enter කරන්න.
gpsim ඉන්ස්ටෝල් කරගන්න yum install gpsim කියල Enter කරන්න.

ඔයාල පාවිච්චි කරන්නෙ Ubuntu (හෝ LankanetLinux) නම්,
මුලින්ම Applications -> Accessories -> Terminal විවෘත කරගන්න.
දැන් sudo -s කියල ටයිප් කරල Enter කරල root විදියට ලොග් වෙන්න.
gputils ඉන්ස්ටෝල් කරගන්න apt-get install gputils කියල Enter කරන්න.
piklab ඉන්ස්ටෝල් කරගන්න apt-get install piklab කියල Enter කරන්න.
gpsim ඉන්ස්ටෝල් කරගන්න apt-get install gpsim කියල Enter කරන්න.

ඔයාල පාවිච්චි කරන්න බලාපොරොත්තු වෙන ප්‍රෝග්‍රැමර් එකට  Piklab සපෝට් කරනවද බලන්න. ඒකට Programmer -> Settings -> Programmer selection වලට ගිහින් Programmer in use වලින් Programmer එක තෝරල Port selection ටැබ් එකෙන් port එක තෝරන්න. JDM programmer එකකටනම් delay එකත් තෝරන්න. Pikkit වල නම් firmware version එක වෙනස්නම් සමහර වෙලාවට හරියට සපෝට් කරන්නෙ නෑ. එහෙම වෙලාවට pk2cmd ත් ඉන්ස්ටෝල් කරගන්න වෙනව. මට ආවෙ ඒ ප්‍රශ්නෙ. Piklab සපෝට් 2.1.0 වලට මම ගාව තියෙන්නෙ 2.1.32 එකක්. ට්‍රයි කලා ට්‍රයි කලා Erase වෙනව, Read කරනව ඒත් Burn වෙන්නෙ නෑ. ඒ පාර තමයි pk2cmd පාවිච්චි කලේ. pk2cmd ඉන්ස්ටෝල් කරගන්නයි පාවිච්චි කරන්නයි ඕනෙ විදියයි මේ ලින්ක් එකේ තියනව. JDM එකක් හදාගන්න විදිය විදුසර පත්තරේ කලින් ගිය ලිපිවල තියනව. මෙතනින් ඒව ගන්න. ඒ ලිපිවල ගොඩක් දේවල් සරලව තේරුම් කරල තියනව.

දැන් Applications -> Programming -> Piklab විවෘත කරගන්න. දැන් Project -> New project යන්න. Project name එකයි, project file වලට directory එකයි තෝරන්න. Device වලින් පාවිච්චි කරන PIC එක තෝරන්න. මම මෙතනදි පාවිච්චි කරන්නෙ PIC16F84A නිසා ඒක තේරුව. දැන් Toolchain එකෙන් GPUtils තෝරන්න කම්පයිලර් එකට.

Creating New project on PikLab

දැන් Template file එකක් හදන්නද එහෙම කියල අහනව. ඒත් මම නම් තේරුවෙ Do not add files now කියන option එක. Template file එකක් හදාගන යන හොඳයි. Interrupt වලට එහෙමත් code එක ජෙනරේට් වෙන නිසා සමහර වෙලාවට කරදරයක් වගේ 😛

දැන්  File -> New Source file වලින් File name එක එහෙම දීල Source file එකක් open කරගන්න (මම පාවිච්චි කරන්නෙ assembly නිසා extension එක .asm කියල දුන්නෙ).

දැන් කෝඩ් එක ලියන්න පටන් ගමු. මුලින්ම header file එක include කරගන්න ඕනෙ(මම ඕක කියන්න වෙන විදියක්නම් දන්නෙ නෑ 😉 ). PIC16F84A වලට

#include <p16f84a.inc>

කියල ටයිප් කරන්න. දැන් configuration bits සෙටප් කරන්න ඕනෙ. මෙතන configuration bits ගැන විස්තරයක් තියනව. මේ ප්‍රෝග්‍රෑම් එකට මම configuration bits සෙට් කලේ මේ විදියට

__CONFIG _XT_OSC & _PWRTE_OFF & _CP_OFF & _WDT_OFF

මේක ගැන පොඩ්ඩක් පැහැදිලි කරන්නම්. මටත් මේව මුලින් තේරුණේම නෑ. __CONFIG කියල තියෙන්නෙ මේ ලයින් එකෙන් කියන්නෙ configuration bits සෙටප් කරන්න ඕනෙ කොහොමද කියන එක කියල. _XT_OSC කියල තියෙන්නෙ මේකට මම oscillator එකට පාවිච්චි කරන්නෙ crystal එකක් නිසා. & එක bit දෙකක් වෙන් කරන්න පාවිච්චි වෙන්නෙ. _PWRTE_OFF කියල තියෙන්නෙ power up timer එක off කරන්න කියල. ඒ ගැන පස්සෙ කියන්නම්. _CP_OFF කියල තියෙන්නෙ code protection දාන්න එපා කියල (බුරුරැස් මාලා වලට මහෙම PCB එක්කම දෙන PIC වල code protection දාල තියනව වෙන අයත් ඒක බලාගෙන ආයෙ හදාවි කියල. ඒ වගේ අවස්ථාවල _CP_ON කියල code protection enable කරන්න පුළුවන්). _WDT_OFF කියල තියෙන්නෙ watchdog timer එක disable කරන්න කියල. Watchdog timer ගැන මෙතන විස්තරයක් තියනව.

මීලඟට Startup pointer එක හදන්න ඕනෙ පහල පෙන්නල තියන විදියට.

STARTUP CODE 0x000
    goto    start          ; go to start of main code

මේකෙ කියල තියෙන්නෙ programe එක රන් වෙන්න පටන් ගත්ත ගමන්ම (PIC එකට පවර් කනෙක්ට් කරපු ගමන්ම, Oth position කියල කියන්නෙ අන්න එතන :P) රන් කරන්න ඕනෙ කොතන ඉඳන්ද කියල කියන එක. මම මේකෙන් කෝඩ් එක ඇතුලෙ තියන start කියල label එකට යන්න කියල ලියල තියෙන්නෙ. Assembly instruction ගැන මම මෙතන කියන්න යන්නෙ නෑ. ඒ ගැන විදුසර පත්තරේ ගිය ලිපි වල තියනව. ඕනෙනම් ගූගල් පැත්තෙ කැරකුනාමත් බලාගන්න පුළුවන්.

දැන් තමයි කෝඩ් එක ලියන්න පටන් ගන්න ඕනෙ. gpasm වලට තේරුම් ගන්න මේ structure එකට තියෙන්න ඕනෙ.

PROG CODE
<CODE BEGIN>
………………….
………………….
<CODE END>

කෝඩ් එක ඉවර උනාම MPLAB වලදි අවසන් කරනව වගේම END කියලමයි ඉවර කරන්න ඕනෙ.

මේ වෙනකම් කියපු විදියට මගෙ කෝඩ් එක මේ විදියටයි තියෙන්නෙ.

#include <p16f84a.inc>  ;header file including

__CONFIG _XT_OSC & _PWRTE_OFF & _CP_OFF & _WDT_OFF   

STARTUP CODE 0x000      
    goto    start             

PROG CODE     
start
       …………
       …………

END

මගෙ Assembly code file එක මෙතන තියනව. ඒක නම් මෙතන තේරුම් කරන්න යන්නෙ නෑ. මම කලේ PORTB එකේ 0 බිට් එකයි, 1 බිට් එකයි මාරුවෙන් මාරුවට Digital 1 කරනව. ඒ දෙකට සෙට් කරපු LED දෙකක් මාරුවෙන් මාරුවට ඒ නිසා පත්තු වෙනව. ඒ අතර ඩිලේ එකකුත් තියල තියනව. ඊලඟ පෝස්ට් එකේ schematic diagram එකයි සම්පූර්ණ කෝඩ් එකයි එක්ක විස්තරයක් කරන්නම්.

දැන් කෝඩ් එක ලියල ඉවර නිසා කම්පයිල් කරගන්න තියෙන්නෙ. Build -> Build project වලින් කම්පයිල් කරගන්න. ඊට පස්සෙ සිමියුලේට් කරල බලමු වැඩේ හරිද කියල gpsim වලින්. ඒකත් ඊලඟ පෝස්ට් එකේදිම කියන්නම් නැත්නම් මේක දිග වැඩි වෙනව 😛