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 වලින්. ඒකත් ඊලඟ පෝස්ට් එකේදිම කියන්නම් නැත්නම් මේක දිග වැඩි වෙනව 😛

ලිනක්ස් පාරිසරිකය මතදී PIC microcontroller ක්‍රමලේඛනය

4

Posted by chanakalin | Posted in Linux, PIC microcontrollers, PIC on Linux, අත්හදා බැලීම් | Posted on 19-12-2011

Tags: , , ,

කට්ටිය දන්නවනෙ ගොඩ දෙනෙක් micro controllers පාවිච්චි කරල එක එක දේවල් කරන්න ආසයි කියල. මේ අතරින් ගොඩක්ම ලංකාවෙ ජනප්‍රිය microchip ආයතනය නිෂ්පාදනය කරන PIC වර්ගයේ micro controller. හැබැයි ගොඩ දෙනෙක් හිතන් ඉන්නෙ ලිනක්ස් පාදක මෙහෙයුම් පද්ධති වලදි PIC program කරන්න අමාරුයි කියල. නෑ. ලිනක්ස් මෙහෙයුම් පද්ධති වලදිත් ලේසියෙන්ම මේ දේ කරන්න පුළුවන්. මම දැන් කියන්න යන්නෙ PIC 16F84A micro controller එක program කරන විදිය.

වින්ඩෝස් වලට MPLAB IDE මෘදුකාංගය වින්ඩෝස් වලදි වැඩ කරන්න microchip ආයතනය ලබා දුන්නට ඒක ලිනක්ස් වලට වැඩ කරන්නෙ නෑනෙ (MPLAB X IDE නම් ලිනක්ස් වලටත් තියනව. ඒත් මම තාම ඒක අත්හදා බලලනම් නෑ). Wine පාවිච්චි කරල කරත් සමහර වෙලාවට crash වෙන අවස්ථා තියනව.

මම මේතනදි IDE විදියට පාවිච්චි කලේ Piklab මෘදුකාංගය. ලිනක්ස් වලදි PIC program කරන්න තියන අංග සම්පූර්ණ IDE එකක්. කෝඩින් වලට පාවිච්චි කලේ Assembly language එක. Compile කරන්න පාවිච්චි කලේ GPUtils වලින් ලබාදෙන GPASM assembler එක. GPUtils ඉන්ස්ටෝල් කරගද්දි gpasm assembler එක වගේම compile කරපු කෝඩ් එක සිමියුලේට් කරගන්න gpsim කියල simulator එකකුත් ලැබෙනව.

piklab

Piklab මෘදුකාංගය

අපි compile කරගත්තට පස්සෙ ලැබෙන hex file එක PIC එකට බර්න් කරන්නත් පාවිච්චි කරන programming board එකට ගැලපෙන programmer එකකුත් තෝරගන්න ඕනෙනෙ. මේ වැඩේට JDM programmer එකක් පාවිච්චි කරනවනම් picprog මෘදුකාංගය ඒ සඳහා පාවිච්චි කරන්න පුළුවන්. Piklab නම් programmers වර්ග ගණනාවකට සහය දක්වනව. මම නම් මේකට පාවිච්චි කලේ pikkit 2 programmer එකක් (ගත්තෙ මෙතනින්). ඒකට පාවිච්චි කලේ pk2cmd. pk2cmd කියන්නෙ microchipලම pikkit 2 වලට දෙන command line interface එක. Pikkit 2 වෙබ් පිටුවට ගිහින pk2cmd ලබාගන්න පුළුවන්.

මේව පාවිච්චි කරල ලිනක්ස් මෙහෙයුම් පද්ධති වලදි PIC program කරන හැටි ගැන ඉදිරියට ලිපි පෙලක් දාන්නම්.

මේ තියෙන්නෙ මම LED දෙකක් මාරුවෙන් මාරුවට පත්තුවෙන්න ලිනක්ස් වලදි program කරපු මගෙ පලවෙනි PIC එකයි ප්‍රෝග්‍රෑම් කරපු හැටියි. වීඩියෝ කලේ phone එකකින් නිසා පැහැදිලිනම් නෑ.

හන්තාන ලිනක්ස් මතදී AT commands භාවිතය

4

Posted by chanakalin | Posted in අත්හදා බැලීම් | Posted on 07-12-2011

හැමෝම දන්නවනෙ ගොඩක් ලිනක්ස් මෙහෙයුම් පද්ධති එක්ක mobile phone, USB modem වගේ ඒවගෙ SMS කෙලියට එහෙම පාවිච්චි කරන්නෙ Wammu නැත්නම් Gammu කියල. ශාකුන්තල අයිය ලිපි දෙකක් ලියල තිබුණ ඕව ගැන. සමහරු Waderරුත් පාවිච්චි කරනව. හැබැයි තව විදියක් තියනව. ඒ තමා ඔය මොක පාවිච්චි කරත් කම්පියුටරේ ඉඳන් mobile phone එකට හරි USB modemඑකට හරි යනව AT Commands.

මට ඔය වැඩේ මතක් වුනේ http://blog.electronicinside.com/2010/08/at-commands.html ලිපිය දැක්කට පස්සෙ. ගූගල් පැත්තෙ කැරකුනාම ගොඩ දෙනෙක් ඒ විදියම පාවිච්චි කරනව කියලත් දැක්ක. කලින් පෙන්නපු Electronic inside බ්ලොග් එකේ ලිපියෙන් Hyper Terminal පාවිච්චි කරල කරන දේ ලේසියෙන්ම හන්තාන ලිනක්ස් වලදිත් කරගන්න පුළුවන්. ඒකට පාවිච්චි කරන්න ඕනෙ minicom කියල වැඩසටහන. මේකත් හන්තාන ලිනක්ස් එක්ක පෙරනිමියෙන්ම ලැබෙනව.

මුලින්ම කරන්න ඕනෙ Applications -> System tools වලට ගිහින් Terminal එක විවෘත කරගන්න එක. ඊට පස්සෙ root විදියට log වෙන්න ඕනෙ. නැතිනම් ආරක්ෂක හේතූන් මත USB port එහෙම open කරන්න දෙන්නෙ නෑ. ඒකට Terminal එකේ su කියල ටයිප් කරල enter කරන්න. එකතොට ඔයාල හන්තාන ලිනක්ස් ස්ථාපනය කරද්දි root ගිණුමට ලබාදුන්නු password එක ටයිප් කරල enter කරන්න. දැන් [email protected]<පරිගනකයේ නම> කියල Terminal එකේ පෙනෙයි.

දැන් කරන්න ඕනෙ minicom වලට phone එකට හරි modem එකට හරි අදාල USB port එක තෝරල දෙන එක. ඒකට minicom -s  කියල ටයිප් කරන්න. පහල තියන රූපෙ මේ වෙනකම් පියවර ටික තියනව.

දැන් එන මෙනුවෙ Serial port setup කියල තෝරන්න. දැන් පහල තියනව වගේ එකක් පෙනෙයි.

දැන් A අකුර press කරල Serial Device එක තෝරන්න. මේකට ප්‍රකෘතියෙන් තියෙන්නෙ /dev/modem කියල. ඒක /dev/ttyUSB0 කියල දෙන්න. මොකද බොහෝවිට phone එක හරි modem එක හරි තියෙන්නෙ ඔය පිහිටුමේ නිසා. ඊට පස්සෙ E අකර press කරල Bit rate එක තෝරන්න. ඒකට බොහෝවිට හරියන්නෙ 115200. ඒ නිසා ඒක තෝරල වැඩ කරේ නැත්නම් වෙනස් කරල බලන්න. දැන් Enter කරල Serial port setup කලින් තෝරපු මෙනුවට ආවම Save setup as dlf තෝරන්න. තෝරල Exit from Minicom තෝරන්න.

දැන් minicom කියල terminal එකේ ටයිප් කරන්න. Error එකක් ආවොත් /dev/ttyUSB0 කියල දුන්නු තැන ttyUSB1 වගේ වෙනස් කර කරා බලන්න. minicom වලට පිවිසුනාට පස්සෙ ATI කියල ටයිප් කරල enter කරන්න. (සිම්පල් කැපිටල් මාරු උනාට මොකුත් වෙනසක් වෙන්නෙ නෑ) Phone එකේ හරි මොඩම් එකේ හරි IMEI එක, වර්ගය, මාදිලිය වගේ ටිකක් පෙන්නනව. ඒ කියන්නෙ minicom හරියට කනෙක්ට් වෙලා කියන එක.

ඊට පස්සෙ කරන්න ඕනෙ AT commands ටික http://blog.electronicinside.com/2010/08/at-commands.html වල තියනව. ආයෙ මමත් අමුතුවෙන් කියන එකේ තේරුමක් නෑනෙ 😛

SMS එකක් යවන හැටි විතරක් මෙතන කියන්නම්.
AT+CMGF=1  Enter කරන්න.
දැන් AT+CMGS=”<යවන්නාගේ අංකය>” ටයිප් කරල Enter කරන්න.
දැන් > ආවට පස්සෙ SMS එක ටයිප් කරල CTRL+Z ගහන්න.

මතක ඇතිව minicom පාවිච්චි කරල ඉවර උනාට පස්සෙ ඒකෙන් Exit වෙන්න. නැතිනම් ඒ පාවිච්චි කරපු පෝට් එක ආයෙ Network manager එට එහෙම පාවිච්චි කරන්න බැරිව lock වෙනව ආයෙ Restart කරනකම්ම. (Exit වෙන්න CTRL+A ගහල X ගහන්න)

 මටනම් Huawei E156, ZTE MF100 දෙකටම සාර්ථකව වැඩ කලා. අනික වෙනත් වැඩසටහන් වලට සාපේක්ෂව මේ ක්‍රමයේ ප්‍රතිචාර දැක්වීමේ වේගයත් වැඩියි. මේ ක්‍රමයට ඔයාලට AT commands පාවිච්චි කරල කරන ඕනෙම දෙයක් කරගන්න පුළුවන්. SIM lock කඩන එක, Voice feature enable/disable කරන එක, Virtual cd rom එක enable/disable කරන එක වගේ දේවල් උනත් හන්තාන ලිනක්ස් වල කරන්න පුළුවන් minicom පාවිච්චි කරල මේ විදියට. කරල බලල කියලම යන්න.

මේ විදියට Serial port එකත් එක්ක communicate කරන්න උනත් පුළුවන්. ඒකට ttyS0,ttyS1 වගේ කියල පාවිච්චි කරන්න. Parallel port එකත් එක්කත් පුළුවන්. ඒත් මම තාම අත්හදා බලලනම් නෑ. අපිත් Green House automation system එක හදද්දි ප්‍රෝග්‍රෑම් කරන්න කලින් Circuit එක හරියට වැඩද කියල චෙක් කරල බැලුවෙ හන්තාන ලිනක්ස් වලදිම minicom වලින්.