Wednesday, 31 October 2007

Installing MySQL

MySQL ကိုကၽြန္ေတာ္ မသံုးဘူးေသးပါဘူး။ အခုလဲ Install ပဲလုပ္ရေသးတာပါ။ ဒါေၾကာင့္ အားသာ၊ အားနည္းခ်က္ကိုလည္း မသိေသးပါဘူး။ ပထမဆံုးေတာ့ ကၽြန္္ေတာ္ MySQL ကို MySQL website ကေန download လုပ္တာပါပဲ။ ၿပီးေတာ့ Install လုပ္တယ္။ အဲဒါက Database သက္သက္ပါ။ သံုးလုိ႔မရေသးပါဘူး။ ေနာက္ Database Viewer ကို Download ထပ္လုပ္ပါတယ္။ ကၽြန္ေတာ္သိသေလာက္ေတာ့ Viewer (yog) ေတြအမ်ားႀကီးရွိမယ္ထင္တယ္။ ကၽြန္ေတာ္သံုးတာက SQLyog ပါ။ SQLyog ကို Download လုပ္ၿပီးတဲ့အခါ test connection ၾကည့္ရင္ “Connection Error” ဆိုၿပီးလာျပပါတယ္။ အဲဒါဆိုခဏ ပိတ္။ SQL server ရဲ႕ Configuration ကို လုပ္။ ဒီအဆင့္ကေတာ့ သူေျပာတာေလးေတြဖတ္ၿပီး step-by-step လုပ္လုိက္တာပါပဲ။ ၿပီးရင္ SQLyog ကိုျပန္ဖြင့္ connection အသစ္ လုပ္၊ ၿပီးရင္ ပံုမွန္ SQL Server (Enterprise Manager) ကိုသံုးသလုိပဲ Create Database, Create Table ေတြလုပ္လုိ႔ရပါၿပီ။ ဆက္ေရးပါဦးမယ္။

MySQL Configuration

SQLyog create connection

Download MySQL

Monday, 29 October 2007

Reading Datashets

DataSheets ေတြကို ဖတ္ရတဲ့အခါ အရမ္းပ်င္းစရာေကာင္းပါတယ္။ ကၽြန္ေတာ္ကေတာ့ အခုေျပာမည့္ ေခါင္းစဥ္ေတြပဲဖတ္တယ္။ အဓိကကေတာ့ Software ပိုင္းနဲ႔ဆိုင္တာေတြပဲ ဆိုပါေတာ့။
၁။ Overview, Features
အဲဒီအပိုင္းမွာ Timer, Oscillators, CPU speed, Memory (Program, RAM, EEPROM), Interrupt, Peripheral devices ေတြနဲ႔ဆိုင္တဲ့ အေၾကာင္းအရာေလးေတြ၊ ဒီ CPU ရဲ႕အထူးလုပ္ေဆာင္ခ်က္ေတြ ပါလို႔ပါ။

၂။ I/O ports
ကေတာ့ ဘယ္ Ports ကို ဘာ Function အတြက္သံုးရင္ ေကာင္းမလဲလုိ႔ သတ္မွတ္လို႔ ရေအာင္လို႔ပါ။

၃။ Register file Summary (Table)
ဒါကေတာ့ header file (Register Address, Name, Bits) ေတြေရးလုိ႔ရေအာင္လုိ႔ပါ။ ေရးၿပီးသား header file ေတြရွိရင္လည္း ပိုနားလည္ႏိုင္တာေပါ့။ ေကာင္းတာကေတာ့ ဒီ header file နဲ႔ Table မွာပါတဲ့ register address ေတြကို တိုက္ဆိုင္စစ္ေဆးၿပီး မွန္တယ္ဆိုမွ အဲဒီ header file ကိုသံုးပါ။

၄။ I/O Timing
အလုပ္လုပ္တဲ့ အခ်ိန္ Trigger interval (Raising, Falling Edges) ေတြကိုသိရေအာင္လုိ႔ပါ။ Timing Requirements ေတြကိုလည္းသိထားမွ ဘယ္ Oscillator (frequency) ကိုသံုးရင္ အဆင္ေျပမလဲဆိုတာ သတ္မွတ္လို႔ရမွာပါ။

Wednesday, 24 October 2007

RTC (Real Time Clock)

RTC (Real Time Clock) ကို Timer အစားသံုးလို႔ရပါတယ္။ သူက IC တစ္မ်ိဳးပါ။ တိက်တဲ့ အခ်ိန္တစ္ခုကို သတ္မွတ္တဲ့ေနရာမွာ သံုးပါတယ္။ RTC က Main System ရဲ႕ Timer ကိစၥေတြ၊ Coding ေတြ ကိုသက္သာေစပါတယ္။ ၿပီးေတာ့ ပိုၿပီးတိက်တဲ့ အခ်ိန္ကို ရပါတယ္။ ေတြမွာသံုးပါတယ္။ Maxim, Philips, Dallas Semiconductor, Texas Instruments and STMicroelectronics ကုမၸဏီေတြက RTC IC ထုတ္လုပ္ ၾကပါတယ္။ RTC ကို Microcontroller ေတြထဲမွာလည္း Build-in အျဖစ္ေတြ႕ႏိုင္ပါတယ္။ RTC မွာ (32.768 kHz) Oscillator ပါတတ္ပါတယ္။ Computer မွာေတာ့ SouthBridge Chip မွာပါပါတယ္။

RTC IC ရဲ႕ပံုပါ။

SouthBridge မွာပါတဲ့ RTC နဲ႔ဆက္စပ္ပံု။

RTC Block Diagram

Monday, 22 October 2007

Interrupt (IRQ) handling for Timers

Interrupt မွာ ၂ မ်ိဳးရွိပါတယ္။ Hardware IRQ နဲ႔ Software IRQ ပါ။ Hardware မွာ Port IRQs, Key IRQs, Display IRQs ေတြပါၿပီးေတာ့၊ Software မွာ Timer IRQs, DMA IRQs ေတြပါတယ္လို႔ ခြဲလို႔ရပါတယ္။ Hardware, Automation, Machine ေတြကို Accurate Timing နဲ႔ အလုပ္လုပ္ခ်င္တဲ့အခါ သံုးၾကတာပါ။ Embedded Software ေတြမွာ အဓိကသံုးပါတယ္။ Interrupt မွာသံုးတဲ့ Register ေတြကေတာ့ REG_INTERUPT, REG_IME, REG_IE, REG_IF ေတြပါ။
REG_INTERUPT က interrupt handler ပါ။ interrupt ျဖစ္တဲ့အခါ လုပ္လုိက္တဲ့ Action ကို မွတ္တဲ့ register ပါ။
REG_IME က master interrupt ပါ။ Interrupt ေတြကို အဖြင့္အပိတ္ (Enable, Disable) လုပ္ေပးတဲ့ register ပါ။
REG_IE က interrupt enable ပါ။ ဘယ္ interrupt ကို လုပ္မယ္ဆိုတာ သတ္မွတ္ေပးတာပါ။ REG_IME နဲ႔ကြာတဲ့အခ်က္ကေတာ့ က interrupt တစ္ခုခ်င္းစီအတြက္ (Enable, Disable) လုပ္တာပါ။
REG_IF က လက္ရွိေရာက္ေနတဲ့ interrupt ကို စစ္ေဆးတာပါ။ ဥပမာ - Timer0 overflow interrupt ကိုေရာက္သြားၿပီဆိုရင္ REG_IF မွာ Timer0 ရဲ႕ bit pattern ေရာက္သြားပါတယ္။ REG_IE bit pattern နဲ႔ အတူတူပါပဲ။ ေအာက္က နမူနာ program ကိုၾကည့္ရင္ ရွင္းပါလိမ့္မယ္။

//.......................INTERRUPT Routine
void enableTimerInterrupt()
{
REG_IE |= INT_TIMER0; // Enable Timer interrupt detection
REG_TM0CNT |= TIME_IRQ_ENABLE; // Make Timer generate IRQ
}

void interruptHandler(void)
{
REG_IME = 0; //disable interrupts
if(REG_IF==INT_TIMER0)
{
if(stateflag==0){SCLO();stateflag=1;}
else if(stateflag==1){SCHI();stateflag=0;}
}
REG_IF = REG_IF; // Tell GBA that interrupt has been handled
REG_IME = 1; //enable interrupts
}

void setupInterrupts(void)
{
REG_IME = 0x0; //disable interrupts
REG_INTERUPT = (u32)interruptHandler; //set int handler
enableTimerInterrupt();
REG_IME = 0x1; //enable interrupts
}

setupInterrupt() ဆိုတဲ့ function ကိုေခၚၿပီး သံုးရပါတယ္။

Cascading Timers

Timer ေတြကို Cascade လုပ္တယ္ဆိုတာကေတာ့ Timer တစ္ခု Overflow (သတ္မွတ္ထားတဲ့ ကိုေရာက္တဲ့အခါ) ေနာက္ Timer ကို On (Enable) လိုက္ျခင္းကို cascade လုပ္တယ္လုိ႔ေျပာတာပါ။ အထူးသျဖင့္ Automation အပိုင္းေတြမွာ သံုးေလ့ရွိပါတယ္။ ဥပမာ - 1s ေရာက္ဖို႔ဆိုရင္ 1000 ms ေပါ့။ အဲဒီေတာ့ Timer1 ကို အႀကိမ္ ၁၀၀၀ looping (while, for) ပတ္ရမည့္ သေဘာပါ။ အဲဒီလို looping ပတ္တဲ့အခါ အခ်ိန္က Accurate မျဖစ္ေတာ့ပါဘူး။ ဘာလုိ႔လဲဆိုေတာ့ looping ရဲ႕ instruction cycle အခ်ိန္ကို ထည့္တြက္လို႔ပါ။ အဲဒီအခါမ်ိဳးမွာ Cascading ဒါမွမဟုတ္ Interrupt ကိုသံုးရပါတယ္။ Timer1 နဲ႔ Timer2 ကို Cascade ခ်ိတ္ထားျခင္းျဖင့္ အႀကိမ္ 1000 ေရာက္ မေရာက္ကို Timer2 နဲ႔စစ္ေဆးပါတယ္။ ေအာက္မွာ Coding ေရးထားပါတယ္။

REG_TM1CNT= TM_ENABLE | TM_FREQ_SYSTEM | TM_IRQ;
REG_TM1D = - 0x4000;
REG_TM2CNT= TM_ENABLE | TM_FREQ_SYSTEM | TM_IRQ | TM_CASCADE;

while(REG_2 != 1000){}
REG_TM1CNT &= ~TM_ENABLE;
REG_TM2CNT &= ~TM_ENABLE;

Timer2 ကိုသံုးတဲ့အခါမွာ Cascade လို႔ေျပာလိုက္တာနဲ႔ သူ႔အေရွ႕က Timer1 ကို Cascade လုပ္ရမယ္လုိ႔ အလိုလိုသိပါတယ္။ Cascade ကို Overflow လို႔လဲ ေရးေလ့ရွိပါတယ္။

Timer for Embedded Programming

Timer ဆိုတာကိုေတာ့ သံုးဘူးၾကမွာပါ။ ဒီ Post က Hardware နဲ႔ဆက္စပ္တဲ့ Timer ပါ။ ARM9/ 10/ 11 CPU နဲ႔ Gameboy Hardware ကိုအေျခခံၿပီးရွင္းျပသြားပါမယ္။ Case Study သေဘာေပါ့။ ကၽြန္ေတာ္က ARM9 ကိုအသံုးျပဳၿပီး Gameboy ကေန Frequency အမ်ိဳးမ်ိဳးထုတ္ေပးႏိုင္တဲ့ Program ေရးတာပါ။ Frequency ထုတ္တာကေတာ့ Signal ကို low/ high ေတြ တစ္လွည့္စီေပးၿပီး အဲဒီ signal ေတြၾကားမွာ time interval ေလးေတြျခားေပးျခင္းအားျဖင့္ frequency ထုတ္တာပါပဲ။ Pseudo frequency သေဘာပါပဲ။ Oscilloscope နဲ႔တိုင္းတာၿပီးစစ္ေဆးလုိ႔ ရေအာင္လုိ႔ပါ။
အဲဒီအခါမွာ time interval က အလြန္တိက်ဖို႔ လိုအပ္လာပါတယ္။ ဒါေၾကာင့္ Timer နဲ႔ Interrupt ကို အသံုးျပဳၿပီး ေရးတာပါ။ ဒီ Post မွာေတာ့ Interrupt အေၾကာင္းမပါေသးပါဘူး။
ARM ရဲ႕Timer မွာ Frequency ၄ မ်ိဳးပါပါတယ္။ Frequency ေပၚမူတည္ၿပီး interval ေတြ ကြာျခားပါတယ္။ ဥပမာ - 16.384 kHz ဆိုရင္ ရဲ႕တန္ဖိုးကို တစ္ႀကိမ္မွာ 61.04
μs ႏႈန္းနဲ႔ တိုးေပးတာပါ။ Frequency ေတြကေတာ့ ဒီလိုေတြ ရွိပါတယ္။

၁။ 1 Cycle, 16.78 MHz Frequency, 59.59 ns Interval
၂။ 64 Cycle, 262.21 kHz Frequency, 3.815
μs Interval
၃။ 256 Cycle, 65.536 kHz Frequency, 15.26 μs Interval
၄။ 1024 Cycle, 16.384 kHz Frequency, 61.04 μs Interval

တစ္ျခား CPU ေတြမွာလည္း ဒီလိုသေဘာမ်ိဳးပါပဲ။ ဥပမာ - ကၽြန္ေတာ္က 1 ms ကို အတိအက် လုိခ်င္တယ္ ဆိုပါေတာ့။ C Language နဲ႔ဆိုရင္ ဒီလိုေရးရပါတယ္။

// Control Register ထဲမွာ Timer ကို အသံုးျပဳမယ္။ Timer ရဲ႕ Frequency က 16.78 Mhz ပါ (တစ္ႀကိမ္ကို ၁ စီတိုး)။ Interrupt ကိုအသံုးျပဳမယ္။
REG_TM1CNT= TM_ENABLE | TM_FREQ_SYSTEM | TM_IRQ;

// Data register ထဲမွာ Timer တန္ဖိုး ကိုထည့္ပါမယ္။ hex 4000 ရဲ႕ value က 16384 ျဖစ္လုိ႔ပါ။ (“-” ထည္ေပးတာကေတာ့ Timer က “0” အထိေရာက္ေအာင္ တိုးလုိ႔ပါ)။ တိုက္႐ိုက္တန္ဖိုး ၁၆၃၈၄ လည္းထည့္လုိ႔ရပါတယ္။
REG_TM1D = - 0x4000;

// ၿပီးရင္ Timer ကို ျပန္ပိတ္ေပးပါ။
REG_TM1CNT &= ~TM_ENABLE;

ဒါဆိုရင္ Timer1 control code ရပါၿပီ။ အဲဒီ Code ေတြကို Function တစ္ခုအျဖစ္ ခြဲထားၿပီး ယူသံုးႏိုင္ပါတယ္။
Gameboy (ARM9) မွာ Timer ၄ ခုပါပါတယ္ REG_TM0CNT, REG_TM1CNT, REG_TM2CNT, REG_TM3CNT ေတြပါ။ Timer ေတြကို Cascade ခ်ိတ္ၿပီးလည္းသံုးႏုိင္ပါတယ္။ ေနာက္ ပိုစ့္မွာ ဆက္ေျပာပါမယ္။

Gameboy Hardware Schematics

Gameboy ကို အသံုးျပဳလုိ႔ရတဲ့ Application ေနရာေတြကေတာ္ေတာ္မ်ားပါတယ္။ သူ႕မွာ ARM9/ 10/ 11 family series ကိုအသံုးျပဳထားတဲ့အတြက္ Micro-p PCB သပ္သပ္ ထပ္လုပ္စရာမလိုပဲ သံုးလုိ႔ရပါတယ္။ ဂ်ပန္္၊ ထိုင္၀မ္၊ ဥေရာပႏိုင္ငံ (အထူးသျဖင့္ ဂ်ာမနီ)၊ ယူအက္စ္ ေတြမွာသံုးတာမ်ားပါတယ္။ Gameboy Programmer ရာထူးဆိုၿပီးေတာင္ ရွိပါတယ္။ LCD Display, RAM, IO ports (RS-232, General IOs), Audio, Video ports, Buttons (10 Keys), External Oscillator ေတြပါတဲ့အတြက္ အဆင္ေျပပါတယ္။ တစ္ျခား ဆက္စပ္ Devices (Wireless, USB, NIC, SPI) ေတြနဲ႔ တြဲၿပီးသံုးရင္လည္းရပါတယ္။ ေအာက္မွာ Gameboy ရဲ႕ Schematics ကို ေပးထားပါတယ္။ဒါက Gameboy နဲ႔ RS-232 ကို ခ်ိတ္ဆက္တဲ့ Schematics ပါ။

Monday, 24 September 2007

G Programming with LabVIEW - (2)

LabVIEW Installation လုပ္တဲ့အခါမွာ လိုအပ္တဲ့ Setting ေလးေတြအေၾကာင္းပါ။

တစ္ခုကေတာ့ ၾကံဳေတြ႕ေနက်ျဖစ္တဲ့ Activation ကိစၥပါ။ LabVIEW မွာ Crack ဆိုတဲ့ Folder ထဲမွာ Key-Gen ဆိုတဲ့ Program ေလးပါပါတယ္။ သူ႕ကိုအရင္ Run ၿပီးေတာ့ Serial Key ယူရပါတယ္။ ၿပီးရင္ License file ပါတစ္ခါတည္းထုတ္ၿပီး save လုပ္ခဲ့ပါ။ LabVIEW Installation လုပ္ၿပီးတဲ့အခါ National Instruments -> NI License Manager ကို run ပါ။ Option Menu ထဲက Install License File ထဲမွာ ခုန file ကို execute လုပ္လုိက္ရင္ ရပါၿပီ။ ဒီလုိမွမလုပ္ရင္ ထံုးစံအတိုင္း Evolution period ၃၀ ရက္ပဲရပါလိမ့္မယ္။


ေနာက္တစ္ခုကေတာ့ Example ေတြကိစၥပါ။ LabVIEW မွာ Example ေတြေတာ္ေတာ္မ်ားမ်ား ပါပါတယ္။ တစ္ခါတစ္ေလမွာ အဲဒီ Example file ေတြကို ဖြင့္လို႔မရတဲ့ ျပႆနာေပၚတတ္ပါတယ္။ အဲဒီအခါမွာ Control Panel -> Administrative Tools -> Services ထဲက NI Service Locator service ကို Stop ၿပီး Start ျပန္လုပ္ေပးလုိက္ပါ။ ၿပီးရင္ LabVIEW ကို Restart လုပ္လုိက္ပါ။



Mandalay Winter

“အားေမ့” ကလည္း တက္ဂ္၊ ကိုယ္တိုင္ကလည္း ေရးခ်င္ေနေတာ့ ေရးရၿပီေပါ့။ ဒီ ပို႔စ္က ကၽြန္ေတာ့ရဲ႕ ပထမဆံုး Personal ပို႔စ္ျဖစ္မွာပါ။ မန္းေလးမွာ ေဆာင္းတြင္းက အရမ္းေပ်ာ္ဖို႔ေကာင္းပါတယ္။ ပြဲေတြလည္းမ်ား။ ေကြးလုိ႔လည္းေကာင္းတာကိုး။ အရင္ကေတာ့ မန္းေလးေတာင္ကို ေဆာင္းတြင္းနံနက္ေတြမွာ သူငယ္ခ်င္းေတြစုၿပီး တက္ၾကတယ္။ လူေတြလည္းအမ်ားႀကီးပဲ။ အရမ္းေပ်ာ္ဖို႔ေကာင္းတယ္။ ပထမဆံုးရက္က ေတာ္ေတာ္ေအးတယ္ဆိုၿပီး အေႏြးထည္၀တ္ခဲ့တာ ေတာင္အလယ္ေလာက္မွာပဲ လႊင့္ပစ္ခ်င္စိတ္ေပါက္ခဲ့တာေပါ့။ ေတာင္တက္ရင္းနဲ႔ ပူလာတာကိုး။ အဲဒီကျပန္ရင္ တစ္ခုခု၀င္စား။ အလုပ္သြားဖို႔ အခ်ိန္လိုေသးတယ္ဆိုရင္ ကၽြန္ေတာ္ကေတာ့ ျပန္အိပ္တာပဲ။ ေနာက္ က်ံဳးေဘးမွာဆို မနက္ေကာ ညေကာ လူအရမ္းစည္တာပဲ။ New Year Night ဆိုရင္က်ံဳးေဘးမွာ သၾကၤန္က်သလုိကို စည္တာ။ အင္း ... မန္းေလးမွာဆိုရင္ ဘယ္အခ်ိန္မဆို ေပ်ာ္ေနတာပါပဲေလ .....။

The Most Favourite FIVE posts

“ႏွစ္ကူး” ကေတာ့ Tag ထားတာၾကာပါၿပီ။ မအားလို႔ မေရးျဖစ္တာပါ။ အႀကိဳက္ဆံုး ၅ ခုကေတာ့ . . .
၁။ LabVIEW ဒါက အခုလတ္တေလာမွာ ကၽြန္ေတာ္ေလ့လာေနတဲ့ Programming Language အသစ္ပါ။ ဆက္ၿပီးေလ့လာရင္းနဲ႔ သိသမွ်ေလးေတြတင္သြားဦးမွာပါ။
၂။ Kailed Image Converter ကေတာ့ DOS Platform/ Non DOS Platform မွာ ပံုေလးေတြတင္လုိ႔ရလို႔ပါ။ ကၽြန္ေတာ္တို႔ Pascal/ C နဲ႔ Program ေတြစေရးတုန္းက အဲဒီလုိ ပံုေလးေတြထည့္ခ်င္ခဲ့တယ္ေလ။ ဒါေပမယ့္ ဘယ္လုိလုပ္ရမလဲ မသိခဲ့တာပါ။
၃။ ေနာက္တစ္ခုက RAID ပါ။ ကၽြန္ေတာ္ ဘာမွမသိပဲ စာအုပ္ဖတ္ၿပီး ရမ္းလုပ္တာ ရသြားလို႔ပါ။ အမွတ္တရေပါ့။
၄။ RS232 Posts ေတြကေတာ့ အျမဲတမ္းသံုးေနရတယ္ေလ။ ဒါေၾကာင့္ ဘယ္ေတာ့မွ မေမ့ဘူး။
၅။ ေနာက္ဆံုးတစ္ခုက OrCAD ကၽြန္ေတာ္ဆက္မေလ့လာျဖစ္ေသးတဲ့ Designing Software ပါ။ Electronics Major ေက်ာင္းသားတုိင္း ေလ့လာထားသင့္တဲ့ Software မို႔ပါ။

Monday, 17 September 2007

Microcontroller & Peripheral Devices

Microcontroller ေတြမွာ အျခားေသာ peripheral device ေတြနဲ႔ခ်ိတ္ဆက္တဲ့အခါ Protocol ေတြသံုးရပါတယ္။ UART, SPI, I2C, FIFO ဆိုၿပီး Protocol အမ်ိဳးမ်ိဳးရွိပါတယ္။ အဲဒီထဲမွာ အသံုးအမ်ားဆံုးက SPI ပါ။ ဘာလို႔သံုးရသလဲဆိုေတာ့ communicate လုပ္ရတာလြယ္လုိ႔ပါ။ standard လည္းနည္းလို႔ပါ။ Peripheral Device ေတြကေတာ့ ...
- Converters (ADC, DAC)
- Memories (EEPROM, Flash)
- Real Time Clock (RTC)
- Sensors (Temperature, Pressure)
- Others (Signalmixer, Potentiometer, UART, CAN controller, USB devices, Amplifier)
.... ေတြပါပဲ။
SPI ဆိုတာ Serial Peripheral Interface သူ႕မွာ Master နဲ႔ Slave ဆိုၿပီးရွိပါတယ္။ Microprocessor ကအျမဲတမ္း Master ျဖစ္ၿပီး peripheral ေတြက Slave ပါ။ 4 Channels သံုးရပါတယ္။ SCLK (Slave Clock), MOSI (Master Out Slave In), MISO (Master In Slave Out), SS (Slave Select) ေတြပါ။ ေအာက္ကပံုက Master & Slaves ခ်ိတ္ဆက္တဲ့ပံုပါ။ Slave က တစ္ခုတည္းလည္းရွိႏိုင္ပါတယ္။

Mode မွာ ၄ ခုရွိပါတယ္။ Mode 0, 1, 2, 3 ေတြပါ။ CPOL (Clock Polarity) နဲ႔ CPHA (Clock Phase) ေပၚမွာမူတည္ၿပီး Mode ကြဲျပားပါတယ္။ Operation အစမွာ Clock က Low ဆိုရင္ CPOL=0 ပါ။ High ဆိုရင္ CPOL=1 ပါ။ ေနာက္ၿပီး Data bit က Clock ရဲ႕ Falling Edge မွာ Sampling လုပ္တယ္ဆိုရင္ CPHA=0 ျဖစ္ၿပီး Raising Edge မွာ Sampling လုပ္တယ္ဆိုရင္ CPHA=1 ပါ။ ေအာက္မွာ Mode ေတြျခားနားပံုကိုျပထားပါတယ္။

အခုလို အတိုေကာက္ ခြဲမွတ္လို႔ရပါတယ္။
SPI Mode CPOL CPHA

0 0 0
1 0 1
2 1 0
3 1 1

Default Mode က 0 ပါ။ ဒါမွမဟုတ္ သက္ဆိုင္တဲ့ Device က သတ္မွတ္ထားတဲ့ Mode ရွိေနမွာပါ။ Software မွာ Mode ကုိ ထည့္သြင္းစဥ္းစားစရာ မလိုပါဘူး။

MSB = Most Significant Bit ေရွ႕ဆံုး Data bit
LSB = Last Significant Bit ေနာက္ဆံုး Data bit

Tuesday, 11 September 2007

ADC (Analog to Digital Converter)

Software ကေန Volt/ Current Values ေတြကို တိုက္႐ုိက္ဖတ္လို႔မရႏိုင္ပါဘူး။ ဘာလို႔လဲဆိုေတာ့ Volt/ Current က Analog Signal ျဖစ္ၿပီးေတာ့ Microprocessor ေတြက Digital ျဖစ္ေနလုိ႔ပါ။ အဲဒီအေျခအေနမွာ ADC (Analog to Digital Converter) ကိုသံုးရပါတယ္။ သူ႕ရဲ႕အလုပ္လုပ္ပံုက ရွင္းပါတယ္။ Analog Signal ေတြကို Digital Signal ေျပာင္းေပးတာပါပဲ။ Data ေတြထုတ္တဲ့အခါ Binary နဲ႔ Two Compliment's Binary ဆိုၿပီး Data ပံုစံ ၂ မ်ိဳးနဲ႔ထုတ္လို႔ရပါတယ္။ ေအာက္ကပံုကေတာ့ ADC Chip ရဲ႕ပံုပါ။

Testing Serial Communication with Hyper Terminal

Computer နဲ႔ တျခား Electronics Machine ေတြနဲ႔ဆက္သြယ္တဲ့ ေနရာမွာ အဓိကအသံုးျပဳတဲ့ Port က COM port ပါ။ ေနာက္ပိုင္းမွာေတာ့ USB port ေတြကို သံုးလာၾကပါတယ္။ ဒါေပမယ့္ COM မွာ UART ဆိုတဲ့ ကိုယ္ပိုင္ Protocol တစ္ခုရွိတဲ့အတြက္ သူ႕ကိုအသံုးမ်ားတာပါ။ အဲဒီ Ports နဲ႔ Computer ကို အဆက္အသြယ္ရ၊ မရ ကေတာ့ Hyper Terminal ဆိုတဲ့ Windows မွာပါတဲ့ Build-in Software နဲ႔ စစ္ေဆးလို႔ရပါတယ္။ အဆင့္ဆင့္ကိုေတာ့ ေအာက္မွာေဖၚျပထားပါတယ္။ Hyper Terminal က ASCII Code ေတြပဲ ပို႔/ လက္ခံလုိ႔ရတဲ့အတြက္ Extended Commands ေတြပဲ Test လုပ္လုိ႔ရပါတယ္။ ၿပီးေတာ့ Byte-by-Byte ပဲ ပို႔လုိ႔ရပါတယ္။ တစ္ခ်ိဳ႕ Device ေတြက Short Command ေတြသံုးတဲ့အခါမွာ ျပႆနာရွိလာပါတယ္။ အဲဒီအခါမွာ တစ္ျခား Tester Software တစ္ခုကိုအသံုးျပဳရမွာပါ။ လတ္တေလာ ကၽြန္ေတာ္သံုးေနတာကေတာ့ COMPORT ဆိုတဲ့ Software ေလးပါ။ Internet ကေန Download လုပ္လုိ႔ရပါတယ္။ တစ္ျခား Software ေတြလည္းအမ်ားႀကီးပါ။ အဲဒီ Tester ေလးေတြက size အရမ္းေသးေပမယ့္ အလြန္အသံုး၀င္တဲ့ Software ေလးေတြပါ။ Test လုပ္တဲ့အခါမွာ သက္ဆုိင္ရာ Device ရဲ႕ Firmware Manual မွာပါတဲ့ Command ေတြကိုအရင္ေလ့လာၿပီးမွ စမ္းသပ္ပါ။ CLI ပဲရတာပါ။

1. ပထမဆံုး Start -> Programs -> Accessories -> Communications -> "Hyper Terminal" ကိုဖြင့္ပါ။

2. Connection Description dialog box ထဲမွာ Name တစ္ခုေပးၿပီး OK button ကိုႏွိပ္ပါ။

3. Connect to dialog ထဲမွာ Connect Using မွာ COM1, COM2, ... ကိုေရြးပါ။ တပ္ထားတဲ့ port ကိုေရြးေပးပါ။ OK button ကိုႏွိပ္ပါ။

4. COM1 properties မွာေတာ့ Bit per second (Baud rate), Data bits, Parity, Stop bit, Flow Control ေတြကို ေရြးေပးပါ။ အခုျပထားတာက default setting ပါ။ baud rate ကအေရးႀကီးပါတယ္။ အဲဒါမတူရင္ အလုပ္မလုပ္ပါဘူး။ OK button ကိုႏွိပ္ပါ။

5. test1 Hyper Terminal window ေပၚလာရင္ command ေတြ႐ိုက္လို႔ရၿပီး response ေတြၾကည့္လုိ႔ရပါၿပီ။

6. တကယ္လို႔ response ေတြမေပၚရင္ disconnect အရင္လုပ္ File -> properties ထဲက Settings ထဲမွာ ASCII properties ကို၀င္ echo characters ကို check လုပ္ေပးလုိက္ပါ။

Monday, 10 September 2007

Application Software with GameBoy

Electronics မွာ Software ကို အပိုင္း၂ ပိုင္းခြဲထားပါတယ္။ Embedded SW နဲ႕ Application SW ဆိုၿပီးခြဲတာပါ။ အရွင္းဆံုးေျပာရမယ္ဆိုရင္ေတာ့ Embedded က Microprocessor ရဲ႕ Software ပိုင္းျဖစ္ၿပီးေတာ့ Application က user interface ပုိင္း ျဖစ္ပါတယ္။ GUI (Graphical User Interface) ကိုသံုးၿပီးေရးရပါတယ္။ CLI (Command Line Interface) ကိုသံုးၿပီးေတာ့ ေရးတာကိုေတာ့ Embedded SW လုိ႔ပဲ ေျပာေလ့ရွိၾကပါတယ္။ GameBoy က GUI ကိုသံုးၿပီးေရးရတာ ျဖစ္တဲ့အတြက္ Application လို႔ေျပာၾကပါတယ္။ ကၽြန္ေတာ္လုပ္ခဲ့တဲ့ Project က GameBoy ကိုအေျခခံၿပီး Microprocessor ကေနတဆင့္ Data communication နဲ႔ လုပ္ၿပီးေတာ့ GameBoy မွာ Data storage နဲ႔ Display လုပ္ရတဲ့ program ေတြကို ေရးရတာပါ။ ေအာက္မွာျပထားတာက GameBoy ရဲ႕ diaplay ကို Emulator SW နဲ႔ ေဖၚျပထားတာပါ။ Emulator SW က GameBoy အစား software နဲ႔ GameBoy application ကိုစစ္ေဆးတဲ့ Software ေလးပါ။ Download ကိုေတာ့ ေအာက္မွာေပးထားတဲ့ Link ကေနလုပ္ယူလုိ႔ရပါတယ္။

Download Emulator Software

Nitendo GameBoy က ေနရာတကာမွာ ၀ယ္လို႔ရတဲ့အတြက္ ကိုယ္တိုင္လည္း Software ကိုတကယ္ စမ္းသပ္ ေရးၾကည့္လုိ႔ ရပါတယ္။

Sunday, 2 September 2007

Kaleid_1-2-3 Image Converter for DOS Programs

DOS Platform Programs (C++, Pascal, ...) မွာ ကုိယ္ႀကိဳက္တဲ့ Picture, Image ေတြကိုထည့္ခ်င္တဲ့အခါမွာ သံုးတဲ့ Software ေလးတစ္ခုပါ။ သူ႕ရဲ႕လုပ္ငန္းကေတာ့ .BMP file ကို C Source codes အျဖစ္ေျပာင္းလဲပစ္လုိက္တာပါပဲ။ DOS program ေတြမွာ Graphics mode (GUI) ကိုအသံုးျပဳတဲ့အခါ Pixel နဲ႔ Color ဆိုၿပီးခြဲေရးရပါတယ္။ Pixel က အစက္ (point) ေလးေတြနဲ႔ ေနရာခ်ၿပီး Image ကိုဖန္တီးတာပါ။ Color က လုိခ်င္တဲ့အေရာင္ေတြ Hexadecimal Code ေတြနဲ႔ သတ္မွတ္တာပါ။ ၂၅၆ အေရာင္အထိပဲ အမ်ားဆံုးရႏိုင္ပါတယ္။ Image size ကေတာ့ Display device ေပၚမူတည္ၿပီး Limitation ရွိပါတယ္။ တြက္ခ်က္ၿပီး ဖန္တီးမယ္ဆိုရင္ အလြန္ခက္ခဲတဲ့အတြက္ ဒီ Software ေလးကိုသံုးၾကတာပါ။ ကၽြန္ေတာ္ကေတာ့ GameBoy ရဲ႕ Display မွာ ပံုေတြထဲ့ခ်င္တဲ့အခါမွာ သံုးပါတယ္။

တကယ္ေတာ့ ဒီ Software ကို Embedded Software ေတြကို ေရးတဲ့ Programmer ေတြအမ်ားဆံုးသံုးေလ့ ရွိပါတယ္။ Low/ High level programming language ေတြနဲ႔ DOS platform မွာ Program ေရးတဲ့သူေတြအတြက္ အလြန္ေကာင္းပါတယ္။ Assembly Codes အျဖစ္နဲ႔လည္း ထုတ္လို႔ရပါတယ္။

ဥပမာ - ေရႊတိဂုံဘုရားပံု (အေပၚကပံု) ကို DOS မွာေဖၚျပခ်င္တယ္ဆိုပါေတာ့။ Kaleid နဲ႔ေျပာင္းလုိက္ရင္ ေအာက္မွာေတြ႔ရတဲ့ Code ေတြပါတဲ့ C header file တစ္ခုထြက္လာမွာပါ။ အဲဒီဖိုင္ကုိ ယူသံုးလုိက္႐ံုပါပဲ။ ေရးရတဲ့ Code ေတြကိုအတိအက်သိခ်င္ရင္ေတာ့ ေအာက္က URL မွာ ပါတဲ့ Website မွာေလ့လာႏိုင္ပါတယ္။

Resolution ကေတာ့ DOS Mode မွာဆိုေတာ့ သိတဲ့အတိုင္း ခပ္နန ေလးပဲရမွာပါ။

//256 Color Tile Graphics, Tile Size: 83x60, Tiles Used: 3448
#include
const u16 bagoda_gfx[110336] = {
0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
.............................................................................................
0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDADA,0x9ADA,0x9A9A,0xDADA,
0xD9D9,0xD9D9,0xD8D9,0xD8D8,0xD1D1,0xD9D1,0xD8D9,0xD8D8,
};

Codes ေလ့လာခ်င္ရင္
http://www.gbajunkie.co.uk/

Software ေဒါင္းလုပ္ လုပ္ခ်င္ရင္
Download Kaleid_1-2-3

“ေရႊတိဂံု ဘုရား” ပံုေတာ္ကေတာ့ ကၽြန္ေတာ့္ေဘာ္ဒါႀကီး “ေမာင္တုန္” လွဴဒါန္းတာပါ။ ေက်းဇူးပါ ကိုေမာင္လွ။

Saturday, 1 September 2007

Sunx Laser Marker

ပလတ္စတစ္၊ သစ္သား၊ ဖန္ထည္၊ သံ၊ သားေရထည္ အစရွိတဲ့ မ်က္ႏွာျပင္ေတြေပၚမွာ စာလံုးေတြထြင္းခ်င္၊ ေရးခ်င္ တဲ့အခါ၊ သပ္သပ္ရပ္ရပ္နဲ႔ (စာလံုးအရြယ္အစား၊ Line width 12.6 um to 655 nm အထိ) ေရးခ်င္တဲ့အခါ ဒီ Machine ကိုသံုးပါတယ္။ ကၽြန္ေတာ္တို႔ဆီမွာသံုးတာက SunX LP-400 အမ်ိဳးအစားပါ။ Sunx Laser Marker မွာ ၂မ်ိဳးရွိပါတယ္ CO2 နဲ႔ FAYb ပါ။

CO2 Type က ေစ်းသက္သာတယ္။ ဒါေပမယ့္ Non-Impact အမ်ိဳးအစား ျဖစ္ပါတယ္။ ထြင္းလို႔မရဘူးေပါ့။ ပလတ္စတစ္၊ ဖန္၊ သစ္သား၊ သားေရ မ်က္ႏွာျပင္ေတြေပၚမွာ ရပါတယ္။ LP-200, LP-300, LP-400 Models ေတြရွိပါတယ္။ LP-400 ကေတာ့ Coated Metal Substrates ေတြေပၚမွာလည္း ရပါတယ္။

CO2 LP-400CO2 LP-200

ေနာက္တစ္မ်ိဳးက FAYb Type ပါ။ သူက အထက္ကမ်က္ႏွာျပင္ေတြ အျပင္ Metal ေတြပါရပါတယ္။ Impact အမ်ိဳးအစားျဖစ္လို႔ ထြင္းလို႔ရပါတယ္။ LP-F10, LP-V10 Models ေတြရွိပါတယ္။ LP-V10 ရဲ႕ Laser Beam က ပိုၿပီး ေကာင္းပါတယ္။

FAYb LP-V10အသံုးျပဳလို႔ရတဲ့ Application ေတြကို ေအာက္မွာေဖာ္ျပထားပါတယ္။

Open/ Short Tester VS Phoe Thant (1)

အဲဒီမွာ ပထမဆံုး (အခုအခ်ိန္အထိလည္း အဲဒီပံုစံတူ ေတြပါပဲ) စေတြ႕တဲ့ Machine ကေတာ့ Open/ Short Tester ပါ။ Circuit ေတြမွာ Test Point ေတြသတ္မွတ္ Point-to-Point Open/ Short ေတြကိုစစ္တာပါ။ Open/ Short ကိုေတာ့ ကၽြန္ေတာ္ Post တစ္ခုအျဖစ္တင္ခဲ့ၿပီးပါၿပီ။ Panasinics Company က Fax Machine ေတြရဲ႕ PCB ေတြကို စစ္ေဆးတဲ့ Machine ပါ။ သူက Hardware ပိုင္းနဲ႔၊ ကၽြန္ေတာ္က Software (Program) ပိုင္းကိုတာ၀န္ယူရပါတယ္။ C Programming Language ပါပဲ။

ပထမတစ္ခုက Modify သက္သက္ပါ။ Project တစ္ခုကို စလုပ္ရတာဆုိေတာ့ ကလည္ကလည္နဲ႔ ဟိုလူ၀င္ကူ၊ ဒီလူ၀င္ကူနဲ႔ ၿပီးသြားတယ္ဆိုပါေတာ့ဗ်ာ။ ေနာက္တစ္ခုက Cavity (PCB) ၂ ခုကိုအၿပိဳင္တည္းစစ္ရတယ္။ Customer ကိုေနာက္တစ္ေန႔မနက္မွာ ေပးရမယ္ဆိုရင္ ဒီေန႔ည ၁၁ နာရီေလာက္မွာ အၿပီးလုပ္လုိက္ရတယ္။ Problem ကေတာ့ သူတို႔လုိခ်င္တဲ့ Time Limit ကို မရလို႔ Speed-upလုပ္ရင္းကေန Capacitor ေတြက Charging Speed ကိုမလိုက္ႏိုင္ေတာ့ Default values ျဖစ္သြားတယ္။ အဲဒီမွာ Error ေတြျဖစ္ၿပီး ၾကာသြားတာေပါ့။ Senior တစ္ေယာက္က ၀င္ကူေပးလုိက္လို႔ အိမ္ျပန္ရတာပါ။ သူလုပ္လုိက္တာက Resistor တစ္ခုကို Parallel ခ်ိတ္ေပးလုိက္တာပါပဲ။ သေဘာက Charging speed ကို ေလွ်ာ့ခ်ပစ္လုိက္တာေပါ့။ Experience က စကားေျပာသြားတယ္ေလ။ ပညာေတာ္ေတာ္ရလိုက္ပါတယ္။

ေနာက္ ၃ ရက္ေလာက္ၾကာေတာ့ အဲဒီစက္ ျပန္ေရာက္လာပါတယ္။ Test Point ေတြ ထပ္တိုးခ်င္လို႔တဲ့။ ေတာ္ေတာ္႐ႈပ္တဲ့ Panasonics (PCM) ပါဗ်ာ။
Panasonics Fax Machine
Test Points and Channels (Just Example)

Shwe Kay & Phoe Thant

နည္းပညာနဲ႔မဆိုင္တဲ့ Post တစ္ခုပါ။ ကၽြန္ေတာ္ ဆက္ေရးမယ့္ Post ေတြနဲ႔ ပါတ္သတ္မႈေတြရွိလုိ႔ ဒီလူေတြအေၾကာင္း ထည့္ေရးရမွာပါ။ သူတို႔က လက္ရွိကၽြန္ေတာ္နဲ႔ Company အတူတူလုပ္ေနၾကတဲ့ သူငယ္ခ်င္းေတြပါ။ ပထမတစ္ေယာက္က “ေရႊေကး” ပါ။ နာမည္အရင္းေတာ့ မေရးေတာ့ပါဘူး။ ရခိုင္ေပါ့။ သူက ကၽြန္ေတာ္တို႔ထက္ ၆လ ေလာက္ေစာၿပီး ေရာက္ေနတာေပါ့။ ေနာက္တစ္ေယာက္က “ဖိုးသန္႔”။ သူက မံုရြာဘက္က။ ကၽြန္ေတာ့္ထက္ ၂ ေယာက္လံုး အသက္ငယ္ၾကတယ္။ သူတို႔က Company မွာ Hardware ပိုင္း၊ ကၽြန္ေတာ္က Software ပိုင္းေပါ့။ အဲဒီေတာ့ Senior ေတြက ေတြကို ျမန္မာ ၂ေယာက္ တြဲလုပ္ခုိင္းေလ့ရွိပါတယ္။ အမ်ားစုကေတာ့ ဖိုးသန္႔ နဲ႔ပါ။

Friday, 10 August 2007

GameBoy for User Interface with Machines

Microcontroller Program (Embedded SW) ေတြမွာ User Interface ေတြ Display ေတြအသံုးျပဳခ်င္တဲ့အခါမွာ GameBoy ဆိုတဲ့ Device ေလးကိုအသံုးျပဳပါတယ္။ GameBoy ဆိုတာတကယ္ေတာ့ ကေလးေတြကစားတဲ့ TV Game ေလးပါပဲ။ Memory Card ပါတဲ့အတြက္ Game အသစ္ေတြကို Download လုပ္ၿပီးကစားလို႔ရတာေပါ့။ Testing, Sensor Machine ေတြမွာ သူ႕ကိုအသံုးျပဳရတာက ၀ယ္ရတာလြယ္တယ္၊ ေစ်းသက္သာတယ္၊ RGB Display, GUI (Graphical User Interface) ရတယ္၊ သံုးရတာအဆင္ေျပတယ္၊ Software ေရးရတာအဆင္ေျပတယ္ အဲဒါေတြေၾကာင့္ပါ။ ဘာ Debugger, Compiler အသစ္မွလည္းမလိုပါဘူး။ USB Adaptor ေလးတစ္ခုရွိရင္ရပါတယ္။ မ်ားေသာအားျဖင့္ေတာ့ C language ကိုပဲအသံုးျပဳပါတယ္။ ကၽြန္ေတာ္တို႔သံုးတာကေတာ့ Visual C++ Software ပါ။ စက္ကေတာ့ Netando GameBoy ပါ။ သူ႕မွာ Assign လုပ္စရာ Key ေတြလည္းပါေတာ့ Menu Selection လုပ္ရတာ အဆင္ေျပပါတယ္။ ဒါေပမယ့္ User Interface နဲ႔ Menu Selection သက္သက္ပဲရတာပါ။ တျခား ဘာ Function မွေတာ့ လုပ္မေပးႏိုင္ပါဘူး။ Machine ေတြနဲ႔တြဲသံုးပါတယ္။


Netando Game Boy ေလးေတြရဲ႕ပံုပါ။

Thursday, 9 August 2007

Short Commands (C language)

Short Commands ဆုိတာကေတာ့ C (ANSI* Standard) ေရးတဲ့အခါမွာ Microcontroller chip ေတြဆီကို ေပးတဲ့ Command ပံုစံပါ။ Microcontroller မွာ OS မရွိတဲ့အတြက္ Command ေတြကို တိုက္႐ိုက္ေပးလုိ႔မရႏိုင္ပါဘူး။ ဥပမာ - DIR command ကို Storage drive တစ္ခုဆီကို ေပးခ်င္တယ္ဆိုၾကပါစို႔။ MS-DOS မွာဆိုရင္ C:\>DIR (Enter) ဆိုရင္ရပါၿပီ။ ဒါကို Extended Command လို႔ေခၚပါတယ္။ ဒါေပမယ့္ Microcontroller မွာက်ေတာ့ $01, $0D ဆိုတဲ့ Short Command ကိုသံုးရပါတယ္။ $01 က DIR command ပါ။ $0D က (Enter) ပါ။ Hexadecimal system ကိုသံုးၿပီးတြက္ရပါတယ္။ 01=0000 0001, 0D=0000 1101 ေပါ့။ Monitor Port Commands လုိ႔လည္းေခၚပါတယ္။ သက္ဆုိင္တဲ့ Port ေတြကို သက္ဆိုင္တဲ့ bit ေတြပို႔ရပါတယ္။ ဘာလို႔လဲဆိုေတာ့ Port ေတြက Binary digit ေတြကိုပဲလက္ခံႏိုင္လုိ႔ပါ။ Internet မွာ Short Commands လုိ႔ရွာၿပီးဆက္လက္ေလ့လာႏုိင္ပါတယ္။ ကၽြန္ေတာ္သံုးတာ Vinculum VNC1L Disk Interface Firmware ကိုသံုးၿပီး ပို႔တာပါ။

*ANSI = American National Standard Institute

Wednesday, 8 August 2007

G Programming with LabVIEW - (1)

LabVIEW (G programming) နဲ႔ Program ေရးတဲ့အခါမွာ Front Panel နဲ႔ Block Diagram ဆိုၿပီး ၂ ေနရာမွာ ေရးရပါတယ္။ Front Panel ဆိုတာက VB မွာ Form (User Interface) လိုျဖစ္ၿပီး Block Diagram က VB မွာ Code (Logic) ပံုစံမ်ိဳးျဖစ္ပါတယ္။ ဒီမွာေတာ့ စာမေရးရပဲ Logic Diagram (Icon), Flow line ေလးေတြနဲ႔ Program တည္ေဆာက္ရပါတယ္။ ေအာက္မွာ ဥပမာေလးတစ္ခုျပထားပါတယ္။ Front Panel မွာ Controls Box က Component ေတြကိုသံုးရၿပီးေတာ့ Block Diagram မွာေတာ့ Functions Box က Component ေတြကိုသံုးရပါတယ္။ Reference Manual နဲ႔တြဲၿပီးေလ့လာပါ။ လြယ္ပါတယ္။

Front Panel


Controls Box


Block Diagram

Functions Box

Run လုိက္ရင္ထြက္လာတဲ့ Screen Design ပါ။

HP 16500A Logic Analysis System

ဒီစက္ကေတာ့ Microcontroller Program ေတြေရးတဲ့အခါမွာ Ports ေတြကေန ကိုလိုခ်င္တဲ့ Singnal, Waveform ေတြထြက္ရဲ႕လားလုိ႔စစ္ေဆးတဲ့ Analysis system စက္ပါ။ ကၽြန္ေတာ္အခုေရးေနတဲ့ Program ကို ပထမဆံုး 2 Channels Analogue Oscilloscope နဲ႔ signal အမွန္ထြက္မထြက္စစ္ၾကည့္ပါတယ္။ ဒါေပမယ့္ ကၽြန္ေတာ့္ program က 4 channels (CLK, SC, DIN, DOUT) ထုတ္ေပးတာဆိုေတာ့ 2 Channels နဲ႔မလံုေလာက္တဲ့အခါ 4 Channel Digital Oscilloscope ကိုသံုးၾကည့္ပါတယ္။ အဆင္ေျပပါတယ္။ ဒါေပမယ့္ လက္က ၂ ဖက္ပဲရွိတာရယ္ Wire ေတြက႐ႈပ္ေနတာရယ္ေၾကာင့္ Waveform ေတြကို Break ၿပီးၾကည့္တဲ့အခါ အဆင္မေျပပါဘူး။ အဲဒီအခါမွာ ကၽြန္ေတာ္ဒီစက္ကုိ ေျပာင္းၿပီးသံုးဖို႔ ႀကိဳးစားရပါတယ္။ ဒီစက္က Channel ေပါင္း ၇၅ ခုကို တၿပိဳင္နက္မွာ Waveform တိုင္းတာလို႔ရပါတယ္။ စက္ကေတာ့ ေခတ္ေနာက္က်ေနပါၿပီ။ ဒါေပမယ့္ အလြန္အသံုးက်ေနပါေသးတယ္။ HP (Hewlett Packard) ကထုတ္ပါတယ္။ 16500A Logic Analysis System ပါ။ Digital Waveform ေတြကိုထုတ္ေပးပါတယ္။ Oscilloscope ေတြထက္ အလြန္တိက်တဲ့ Digital Waveform ေတြထုတ္ေပးပါတယ္။

Tektronix 2/ 4 Channels Digital Storage Oscilloscopes
HP 6500A Logic Analysis System

Monday, 6 August 2007

LabVIEW (G Programming)

အခုကၽြန္ေတာ္ေလ့လာေနတဲ့ Programming Language တစ္ခုအေၾကာင္းေျပာမလို႔ပါ။ ကၽြန္ေတာ္လည္း ခ်ာခ်ာလည္ေနေတာ့ အျမည္းသေဘာေလာက္ပဲ ေျပာျပႏိုင္မွာပါ။ G Programming လို႔ေခၚပါတယ္။ အရွည္ကေတာ့ Graphical Programming ပါ။ Symbol, Ports, Instruments ေတြကိုအသံုးျပဳၿပီးေတာ့ Program တည္ေဆာက္ရပါတယ္။ Logics, Flow Diagrams, Variables, .... အစရွိတဲ့ ရဲ႕ဆက္စပ္ကိရိယာေတြပါပါတယ္။ အားလံုး Symbol ေလးေတြနဲ႔ပါ။ အသံုးျပဳရတဲ့ Software နာမည္ကေတာ့ LabVIEW လုိ႔ေခၚပါတယ္။ NI (National Instruments) ဆိုတဲ့ Company ကထုတ္လုပ္ပါတယ္။ NIMax လုိ႔လည္းေခၚပါတယ္။ ပထမဆံုး VI (Virtual Instruments) diagram တည္ေဆာက္ရပါတယ္။ Visual Basic မွာဆိုရင္ေတာ့ Form ေပါ႔။ ေနာက္ Block Diagram ထဲမွာ program logic ေတြထည့္ရပါတယ္။ Visual Basic မွာဆိုရင္ေတာ့ Code ေပါ့။ ၿပီးရင္ေတာ့ထံုးစံအတိုင္း Program ကို Run ရပါတယ္။ Reference Manual ပါထည့္ေပးလုိက္ပါတယ္။ ေလ့လာၾကည့္ပါ။ အဓိကအသံုးျပဳတဲ့ ေနရာေတြကေတာ့ Automation , Measurements, Robotics Applications ေတြမွာပါ။

Download : G Programming Reference Manual (for LabVIEW)

Tuesday, 31 July 2007

USB Vs other ports

USB port နဲ႔ RS232, Header (Connector) ေတြကိုခ်ိတ္ဆက္တဲ့ Circuit Diagram ေလးေတြပါ။

၁။ ပထမတစ္ခုက USB port နဲ႔ RS232 port ကိုခ်ိတ္ဆက္တာျဖစ္ပါတယ္။ Computer ထဲမွာ built-in မဟုတ္တဲ့အတြက္ external power supply (5V) ေတာ့ေပးရပါမယ္။ Computer မပါပဲ USB port ကိုအသံုးျပဳၿပီး storage device ကေန data (Read, Write) ခ်င္တဲ့အခါမွာသံုးပါတယ္။ UART mode လို႔ေခၚပါတယ္။

၂။ ဒုတိယတစ္ခုကေတာ့ USB port နဲ႔ Header ကိုခ်ိတ္တဲ့ပံုစံပါ။ SPI mode လို႔ေခၚပါတယ္။ Software ကေနကေတာ့ Virtual port လို႔လည္းေခၚပါတယ္။

ဘယ္လိုခြဲျခားၿပီးသံုးလုိ႔ရလဲဆိုရင္ေတာ့ ကၽြန္ေတာ္တို႔သံုးတဲ့ Microcontroller က RS232 port ကို ၂ ခုပဲလက္ခံတယ္ဆိုပါစို႔။ ကၽြန္ေတာ္ကလည္း အဲဒီ port ၂ ခုလံုးကိုအသံုးျပဳခဲ့ၿပီးျဖစ္ေနခ်ိန္မွာ USB port နဲ႔ data (Read, Write) လုပ္ခ်င္တဲ့အခါမွာ SPI mode ကိုသံုးရပါတယ္။ SPI မွာ Master mode နဲ႔ Slave mode ဆိုၿပီး၂ မ်ိဳးရွိပါတယ္။ Master က USB, MMC (Memory Card) device တစ္ခုမကသံုးလုိ႔ရၿပီး Slave ကေတာ့ device တစ္ခုပဲ သံုးလုိ႔ရပါတယ္။ ကၽြန္ေတာ္ကေတာ့ Slave mode ကိုပဲသံုးဘူးပါတယ္။ USB Port ကိုေတာ့ ႀကိဳက္တဲ့အမ်ိဳးအစား သံုးလုိ႔ရပါတယ္။ အခုအသံုးျပဳထားတာက VDrive2 ဆိုတဲ့တံဆိပ္္ပါ။

- ေအာက္ကပံုေလးေတြက VDrive2 နဲ႔ RS232 (Male, Female) ရဲ႕ပံုေတြပါ။

မွတ္ခ်က္ ။ ။ UART, SPI, RS232 အေၾကာင္းေတြကိုေတာ့ အရင္ post ေတြမွာရွင္းျပခဲ့ၿပီးပါၿပီ။

Diagram (1)

Diagram (2)


Monday, 30 July 2007

Basics of Embedded Software

Testing Software ဆိုတာကေတာ့ Electronics Circuit ေတြမွာ Testing points ဆိုတာေတြရွိပါတယ္။ အဲဒါေတြမွာရွိတဲ့ အေျခအေနေတြကို စစ္တာျဖစ္ပါတယ္။ ဥပမာ Channel 1-5 နဲ႔ Channel 4-6 ကဆက္စပ္မႈရွိရမယ္ ဆိုပါေတာ့။ အဲဒါဆိုရင္ Channel 1-5 ကေန signal တစ္ခုေပး၊ Channel 4-6 ကေန signal ျပန္ဖမ္း၊ လုိခ်င္တဲ့ signal ရရင္ connection (Short) ရွိတယ္။ မရရင္ (Open) ဆုိၿပီးသတ္မွတ္ပါတယ္။ Computer သမားေတြအေနနဲ႔ေျပာရရင္ Short=1, Open=0 ေပါ့။ Channel ေတြ ဆက္စပ္မႈရွိကိုရွိရမယ္ ဆိုရင္ short ျဖစ္ၿပီးေတာ့ သပ္သပ္စီရွိရမယ္ဆိုရင္ open ေပါ့။ မ်ားေသာအားျဖင့္ေတာ့ ဒီ Logic နဲ႔စစ္ပါတယ္။ ထပ္ဆင့္ၿပီးျပဳလုပ္မယ္ဆိုရင္ေတာ့ Data ကို External devices (MMC, USB, RS232) ေတြကယူတာ၊ Results ကို Display (LCD, LED), Storage devices (MMC, USB), ports (RS232) ေတြမွာသြားေရးတာ ေတြပါလာပါၿပီ။ Embedded software ေတြက ဒီ logic ကိုအေျခခံၿပီးေရးၾကတာပါ။ Electronics hardware knowledges ေတာ့ရွိရပါမယ္။

Friday, 27 July 2007

Related Header Files and Compliers (for C language)

Embedded Software (Firmware) ေရးတဲ့အခါမွာ header file, Complier ေတြကအေရးႀကီးပါတယ္။ ကိုသံုးမည့္ Microchip နဲ႔ဆုိင္တဲ့ header file, Complier ေတြမရွိရင္ Software လည္းေရးလုိ႔မရပါဘူး။ Complie ေတာင္လုပ္လုိ႔မရႏိုင္ပါဘူး။ ဥပမာအားျဖင့္ ကၽြန္ေတာ္တို႔က C8051F320 ဆိုတဲ့ Microcontroller နဲ႔ SC2004 ဆိုတဲ့ LCD Module ကိုသံုးၾကမယ္ဆိုပါစို႔၊ အဲဒီအတြက္ SC2004LCD.h, C8051F320.h ဆိုတဲ့ header file ေတြရွိရပါမယ္။ အမ်ားအားျဖင့္ေတာ့ Internet မွာရွာလုိ႔ရပါတယ္။ တစ္ခ်ိဳ႕က်ေတာ့လည္း Chip ၀ယ္တဲ့အခါမွာပါပါတယ္။ Chip နဲ႔သက္ဆုိင္တဲ့ Compiler မွာလည္း Header file creation Tool တစ္ခုအျဖစ္နဲ႔ပါေလ့ရွိပါတယ္။ Cygnal Chip ေတြအတြက္ဆိုရင္ Silicon Labs Compiler မွာ Config2 ဆိုတဲ့ Tool အေနနဲ႔ပါပါတယ္။ အဲဒီလုိပဲ Chip မတူရင္ Compiler လည္းကြာျခားေလ့ရွိပါတယ္။ ဥပမာ- ARM ဆိုရင္ Keil၊ Cygnal ဆိုရင္ Silicon Labs၊ Hitachi ဆိုရင္ HI-TECH၊ NEC ဆိုရင္ IAR အစရွိသျဖင့္ Compiler ေတြရွိၾကပါတယ္။ အဲဒီ Compiler ေတြကေတာ့ Chip ၀ယ္တဲ့အခါမွာ Installer CD နဲ႔ပါပါတယ္။ Internet မွာရွာရင္ေတာ့ Trial တို႔၊ Demo တုိ႔ပဲရႏိုင္ပါတယ္။ JAVA Language နဲ႔ေရးမယ္ဆိုရင္လည္း JAVA Compiler လိုပါတယ္။ Assembly Language နဲ႔ေရးမယ္ဆိုရင္ေတာ့ Compiler မလိုပါဘူး။

Thursday, 26 July 2007

Teach Yourself Electricity and Electronics (3rd Edition)



ဒီစာအုပ္က Electrical, Electronics Hardware ကိုေလ့လာေနတဲ့သူေတြအတြက္ပါ။ Electronics Hardware ကိုအေျခခံကစၿပီး ေလ့လာႏိုင္ပါတယ္။ ဒီစာအုပ္ေပးတဲ့ Blog ေပၚ က Brother ကိုေက်းဇူးပါ။

Download : Teach Yourself Electricity and Electronics

Tuesday, 24 July 2007

Installing RAID

RAID device တစ္ခုကို Install လုပ္မယ္ဆိုရင္ ...
၁။ ပထမဆံုး Hard Disk Drive ေတြကိုတပ္ပါ။
၂။ Jumper Setting ေျပာင္းပါ။ setting ကေတာ့ Mother board စာအုပ္ထဲမွာဖတ္ၿပီးေျပာင္းလုိ႔ရပါတယ္။
၃။ Restart လုပ္ပါ။ Raid Utility ထဲ၀င္ၿပီး RAID Device တစ္ခုတည္ေဆာက္ပါ။ Utility ကို၀င္တာကေတာ့ သက္ဆိုင္တဲ့ Mother Board စာအုပ္မွာပါပါတယ္။ အမ်ားအားျဖင့္ေတာ့ F12 ကိုႏိွပ္ၿပီး၀င္ပါတယ္။
၄။ RAID device တည္ေဆာက္တဲ့အခါ name, RAID level, storage capacity တုိ႔ကို ေရြးရပါတယ္။ RAID 2 ဆိုရင္ Hard Disk ၂ခု အနည္းဆံုး၊ RAID 10 ဆိုရင္ Hard Disk ၄ခု အနည္းဆံုးရွိရပါတယ္။ HDD ေတြက အမ်ိဳးအစား (SATA, IDE) ၊ Storage capacity ေတြတူရပါတယ္။ မတူတာေတြနဲ႔ေတာ့ ကၽြန္ေတာ္မလုပ္ဘူးပါဘူး။ Reference ထဲမွာလည္းတူရမယ္လုိ႔ပါလုိ႔ပါ ... း)
၅။ Driver Disk (Floppy) လုပ္ရပါတယ္။ သတိထားဖို႔က RAID driver မွန္ဖို႔အေရးႀကီးပါတယ္။ မွားရင္ Window Installation အခါမွာ HDD ကိုမေတြ႕ဘူးလုိ႔ေျပာပါလိမ့္မယ္။
၆။ Windows XP တင္ရင္ F6 ကိုႏွိပ္ၿပီး driver ကို တင္ပါ။ ၿပီးရင္ F3 ႏိွပ္ၿပီး driver installation ကေနထြက္လုိက္ပါ။
၇။ Driver မွန္ခဲ့ရင္ Window ကို ပံုမွန္အတိုင္းၿပီးဆံုးတဲ့အထိ တင္သြားပါလိမ့္မယ္။
၈။ Window Explorer ထဲမွာ HDD တစ္ခုကိုပဲေတြ႔ရမွာပါ။ Intel Storage Matrix Software ကိုတင္ၿပီး HDD ေတြကိုၾကည့္ရင္ HDD အကုန္လံုးကိုျမင္ႏိုင္ပါတယ္။
RAID ကိုအဓိကအားျဖင့္ေတာ့ Database ေတြအတြက္ Backup လုပ္ဖို႔သံုးပါတယ္။ ASUS Mother board ေတြနဲ႔သံုးရင္ပိုၿပီး အဆင္ေျပပါတယ္။

Monday, 23 July 2007

Schematic with OrCAD (1)

OrCAD နဲ႔ Schematic ဆြဲေတာ့မယ္ဆိုရင္ - ၁

OrCAD နဲ႔ Circuit design စဆြဲေတာ့မယ္ဆိုရင္ အရင္ဆံုး OrCAD Layoutထဲကို၀င္ရပါတယ္။ အဲဒီမွာအခက္အခဲေတြ႕ႏိုင္တာကေတာ့ License ပါ။ License file ကို OrCAD Installer CD ထဲကေန Computer ထဲကို အရင္ဆံုးကူးထည့္ထားဖို႔ လိုပါတယ္။ Layout ထဲကိုေရာက္သြားရင္ File Menu ထဲက New ထဲမွာ New Project ကိုေရြးရပါတယ္။ အဲဒီအခါမွာ Dialog Box ေလးေပၚလာပါလိမ့္မယ္။

Project Name ကိုေပး။ Schematic Option ကိုေရြး။ OK ကိုႏိွပ္ပါ။

ဒီအေျခအေနေရာက္ရင္ Schematic စဆြဲလုိ႔ရပါၿပီ။ ဒါက Tool Bar ပါ။

Tools ေတြကို ဘယ္ကေနညာအတိုင္း ၾကည့္မယ္ဆိုရင္...

  1. Select
  2. Place part
  3. Place wire
  4. Place net alias
  5. Place Bus
  6. Place junction
  7. Place bus entry
  8. Place power
  9. Place ground
  10. ........
  11. ........
  12. ........

ဆိုၿပီးေတြ႕ရပါတယ္။

1. Select

ဒီ Tool ကေတာ့ ေျပာစရာမလိုဘူးထင္ပါတယ္။

2. Place part

ဒါက Components ေတြကို ေနရာခ်တဲ့ Tool ပါ။ ေရြးလုိက္ရင္ ဒီ ေလးေပၚလာမွာပါ။

ညာဘက္ေဒါင့္က Component ရဲ႕ Preview ပါ။ ဒီ Circuit Design ေလးကို ဆြဲြၾကည့္ပါ။

Wednesday, 18 July 2007

RS232 in C Programming

ဒီ Program ကေတာ့ C, C++ Programming Language နဲ႔ RS232 (COM) ကို ေရး၊ ဖတ္တဲ့ Program ေလးပါ။ သူ႕ကိုေရးဖို႔ဆိုရင္ bios.h (Header file) လုိပါတယ္။ bios.h အတြက္ download လုပ္ဖို႔လည္းေပးထားပါတယ္။ bioscom(..., ..., ...) ဆိုတဲ့ Command ေလးကိုသံုးၿပီးေရးထားတာပါ။ ဒါေပမယ့္ Display ျပဖို႔အတြက္ေတာ့ LEDs ဒါမွမဟုတ္ LCD display လုိပါလိမ့္မယ္။

#include "bios.h"
#include "conio.h"
#include "dos.h"

#define COM1 0
#define DATA_READY 0x100
#define SETTINGS ( 0x80 | 0x02 | 0x00 | 0x00)

int main(void)
{
int in, out, status;
bioscom(0, SETTINGS, COM1); /*initialize the port*/
cprintf("Data sent to you: ");
while (1)
{
status = bioscom(3, 0, COM1); /*wait until get a data*/
if (status & DATA_READY)
if ((out = bioscom(2, 0, COM1) & 0x7F) != 0) /*input a data*/
putch(out);
if (kbhit())
{
if ((in = getch()) == 27) /* ASCII of Esc*/
break;
bioscom(1, in, COM1); /*output a data*/
}
}
return 0;
}

Download : bios.h

"Electronics" Designer

“အီလက္ထရြန္းနစ္ဒီဇိုင္နာ” ဆိုတာကေတာ့ အေရာင္ေတြအေၾကာင္း၊ Tone ေတြအေၾကာင္း၊ Special Effect ေတြအေၾကာင္းသိစရာမလိုပါဘူး။ ဒါေပမယ့္ Electronics Components ေတြအေၾကာင္းေတာ့သိဖို႔လိုပါမယ္။ ၿပီးေတာ့ ကိုလည္းကိုယ္တိုင္ Circuit ဒီဇိုင္းထုတ္တတ္ရင္ေတာ့ ပိုေကာင္းပါတယ္။ Software ကေတာ့ OrCAD Software Package ကိုအမ်ားဆံုးအသံုးျပဳၾကပါတယ္။ Schematic, Layout, Simulation ဆိုၿပီးအဆင့္ဆင့္ တည္ေဆာက္ သြားျခင္းအားျဖင့္ Electronics Circuit တစ္ခုကိုရပါတယ္။ PCB (Printed Circuit Board) လုိ႔အတိုေကာက္ ေခၚပါတယ္။ OrCAD Software Pacakage မွာပါတဲ့ Software ေတြကေတာ့ Capture, Layout, PSpice AD တို႔ျဖစ္ပါတယ္။ အျခား Tools ေလးေတြလည္းပါပါတယ္။ အသံုးျပဳနည္းအဆင့္ဆင့္ကိုလည္း ေဖၚျပသြားပါမယ္။ ကၽြန္ေတာ္တုိ႔ သံုးတာကေတာ့ OrCAD Version 10.0.0 ပါ။

Tuesday, 17 July 2007

USB Virtual Port

Mocrocontroller နဲ႔ USB port ကို အသံုးျပဳခ်င္တဲ့အခါမွာ ပံုမွန္အားျဖင့္ေတာ့ RS232 ကို support လုပ္တဲ့ Port (RXD, TXD) တစ္ခုအနဲဆံုးပါရပါမယ္။ ဒါကို Serial Port လို႔ေခၚပါတယ္။ ဒါေပမယ့္ USB မွာ Mode ၂ မ်ိဳးရွိပါတယ္။ တစ္ခုက UART Mode ျဖစ္ၿပီး ေနာက္တစ္ခုက SPI (Serial Peripheral Interface) Mode ကို အျဖစ္အသံုးျပဳလုိ႔ရပါတယ္။ UART အေၾကာင္းကိုေတာ့ ကၽြန္ေတာ္တင္ခဲ့ၿပီးပါၿပီ။ အဲဒီလိုသံုးတဲ့အခါမွာ Software ကေနေရးၿပီးသံုးရပါတယ္ (Virtual Port လို႔ေခၚပါတယ္)။ Timing Diagram ကိုၾကည့္ၿပီးေရးရပါတယ္။ အဲဒါကေတာ့ သက္ဆိုင္တဲ့ USD Device ရဲ႕ Data Sheet မွာပါပါတယ္။ အဓိကၾကည့္ရမွာေတြကေတာ့ CLK (Clock), CS (Chip Select), Input, Output Timing ေတြပါပဲ။ ေအာက္မွာ နမူနာ Timing Diagram ေတြ ေပးထားပါတယ္။ ေရးရတဲ့ Code ေတြကိုေတာ့ ေနာက္မွ ထပ္တင္ပါမယ္။

Monday, 16 July 2007

First Steps With Embedded Systems

အခု PDF file ကေတာ့ Microcontroller နဲ႔ပါတ္သတ္တဲ့ အေျခခံ Hardware/Software ေတြကို အၾကမ္းဖ်င္းရွင္းျပထားပါတယ္။ စၿပီးေလ့လာသူေတြအတြက္ သင့္ေတာ္မွာပါ။ C Programming Language ကိုအေျခခံၿပီးရွင္းျပထားပါတယ္။

Download : First Steps With Embedded Systems

Learning SCI (Serial Communication Interface) at Microcontroller

ဒါေတြကေတာ့ SCI (Serial Communication Interface)/ RS232 ကိုအသံုးျပဳၿပီး Microcontroller Program ေတြေရးခ်င္တဲ့ သူေတြေလ့လာလို႔ ရပါတယ္။ ဒါေပမယ့္ ကိုသံုးမယ့္ Microchips ေတြက RS232/ Serial Communication လက္ခံလား လက္မခံဘူးလားဆိုတာကုိေတာ့ အရင္ေလ့လာဖို႔လုိပါလိမ့္မယ္။
ဒီမွာေလ့လာဖို႔အတြက္ Hitachi H8/30xx series Datasheet ကိုပါထည့္ေပးလုိက္ပါတယ္။ ကိုသံုးခ်င္တဲ့ Chip ရဲ႕ Datasheet ကုိေတာ့ Internet မွာရွာလို႔ရပါတယ္။

Download : Hitachi H8/30xx series Datasheet
Download : Serial Communications Interface

Friday, 13 July 2007

Embedded System (E-Book)

This Book is good for learners, who want to understand the "Embedded Software". This book is published at "October 01, 2006", so its update book. Its small size storage but effective. You can download quickly and read.

Download Programming Embedded Systems (By Michael Barr, Anthony Massa)

Thursday, 12 July 2007

Microcontroller ROM types

Microcontroller can be classify by TWO types, according to its download function.
(1) Flash
(2) Flash and Debug

"Flash" means only download and execute the firmware. Such as some of "Hitachi" series.
"Flash and Debug" means download, execute and can debug (insert brake, watches for pots, data) during running the firmware. Debug by programmer, which attached to computer's aplication. Such as some of "Sygnal" series.
But..."Flash and Debug" mode microcontroller has normally no warrenty.
(Warrenty periods for microcomtrollers are mostly 3 years)

In Myanmar mostly used "PICxxx" series. They also cannot debug.

Debugger for "Sygnal" series Microcontroller