Indy Review :: ตอน ก็คนมันเห่อ LPC812 ถูกเหมือนได้ฟรีจาก NXP ให้ทำไง

Started by Lastman, October 03, 2013, 04:40:25 PM

Previous topic - Next topic

Lastman

===================== Last update 03/10/2013  20:00  ========================



นี่มันบอร์ดอัลรัยยยยย  42 บาท 50 ตังค์ เองนะเธอว์... !!! :o



ช่วงนี้นึกครึ้มๆ อยากเล่น ARM ตามกระแสบ้าง ที่จริงอยากเล่นนานละ แต่ไม่ค่อยว่าง หาไรทำไปเรื่อย
เดือนก่อนมีคนโทรมาคุย  เห็นเค้าว่าจะหางานให้ทำ คุยรู้เรื่องบ้าง ไม่รู้เรื่องบ้าง สัญญาณมันขาดๆ หายๆ (เพราะที่ผมอยู่มันสูงกว่าเสาส่งสัญญาณมือถือ)
เค้าถามว่าเคยเขียน ARM ป่าว...ไม่เคยครับ  รู้จักนั่นป่าว...ไม่รู้ครับ  รู้จักนี่ไหม...ไม่รู้ครับ  ฯลฯ
ถามเซ้าซี้มาก แถมฟังก็ไม่ค่อยรู้เรื่อง ก็เลยบอกว่า ไอ้ของพวกนี้น่ะ ถ้าจะใช้งานเมื่อไหร่ ระดับผมน่ะ ไม่ยากหรอกครับจับๆ เดี๋ยวก็เป็นครับ !!!
(โคตรขี้โม้เลยตู 555+ ;D)
ก็แหม...ถ้าจับๆ เสียเวลา แล้วได้เงิน ก็น่าจับเล่นอยู่หรอก ปัญหาคือจับแล้วไม่ได้เงินเนี่ยสิ เลยไม่อยากจับง่ะ  ::)

เหตุการณ์วันนั้นผ่านไป จนเริ่มว่าง ผมก็เลยถือโอกาสดีที่ว่าจะเล็งๆ ARM ถูกๆดีๆ มาใช้เป็นท่าไม้ตายงานด่วนๆ สักตัว สองตัว
เพราะ AVR ที่ใช้ประจำ เริ่มไม่ตอบสนอง ยังคิดอยู่ว่า ถ้ามันพูดได้ มันคงด่าผมกลับมานานแล้วว่า ....
"กู 8bit แรมครึ่ง K นะ ใช้กูยังกะ 32bit!! แสรดดดดเอ๊ย" ;D
ใครรู้จักผม คงทราบดีว่า อีตา Lastman ใช้ MCU ได้คุ้มจริงๆ ความสามารถ MCU ใช้มันจนหมดหยดสุดท้าย
ก็ประมาณว่าไม่กล้าใช้ 32Bit เลยเอา 8Bit ไปจัดเต็มประจำ ฮาาาา ;D

ระหว่างที่กำลังเลือกๆ อยู่นั้น กระแสค่าย STM ในเวปนี้เริ่มแรง ทั้ง 8bit และ 32bit ใครๆ ก็ว่า ST ถูกอย่างนั้น ดีอย่างนี้ คำก็ ST สองคำก็ ST~
ผมก็เลยตัดสินใจสวนกระแสใช้ "NXP" ซะเลย 555 สาเหตุเพราะผมเป็นตัวของตัวเอง ผมไม่ชอบตามใคร ก็คนมัน Indy ง่ะ ทำไงได้... 8)

แล้วก็ดันบังเอิญไปเจอ โปรโมชั่นของ NXP ที่ทำบอร์ด LPC800 MAX Evalution ราคา 1Euro ออกมา แถมส่งฟรี UPS อีกต่างหาก
ก็เลยลงทะเบียนไป แล้วก็รอลุ้นรับรหัสคูปองมันก็ไม่ส่งมาสักที   เวลาผ่านไปเป็นอาทิตย์จนคิดว่าไม่ได้เสียแล้ว
เลยตัดใจซื้อบอร์ด ARM ค่าย NXP ไปหลายบอร์ด  แล้วอยู่ๆ มัน...... มัน......  มันก็มาจนได้..(เวร -*-)

ในที่สุดรหัสคูปองที่ใช้ซื้อ LPC800 MAX Board Evalution ราคา 1Euro มันก็มาจนได้!!!
ไม่รอช้าก็กดซื้อไป ผ่านไปแค่ 3 วันตดไม่ทันหายเหม็น อยู่ๆ UPS ก็มาส่ง งงไปเลย.... (บอร์ดอื่นๆ ที่สั่งไว้ยังมาไม่ถึงเลย เพราะติดด่านศุลกากร -*-)

ได้มาตอนเที่ยงวันนี้ หลังกินเตี๋ยวเสร็จ ก็เลยถือโอกาสดี เอามา review ให้ดูกัน... ::)


:: บอร์ด LPC800  MAX จากค่าย NXP
ใช้ชิพ LPC812 เป็นหัวใจหลัก ซึ่งเป็น ARM Cortex-M0+ มี Flash ขนาด 16K, Ram 4K, มี NVIC ตัวถัง TSSOP20
speed 30MHz แล้ว I/O ก็เร็วมากๆ ด้วย(single cycle)
ภาพรวมก็เหมือน 8 bit ที่ดีๆ ของค่าย PIC, AVR นั่นแหละ แต่ดีกว่าตรงที่ข้างในมันเอา ARM32bit มาทำ แต่ตัด feature ออก
ทำให้ราคาประหยัดมาก (ประมาณ 45B@100ตัว** ราคาถูกกว่า 8bit บางตัวอีก)
เข้าใจว่าคงทำมากะฆ่า 8/16bit โดยเฉพาะ!!
เพราะก่อนหน้านี้ ทาง NXP ทำฮือฮาไปทีนึงละ ที่เอา 32bit มาลงตัวถัง DIP 8 ขา!! (-..-!)
NXP ทำแบบนี้ได้ใจผมไปเยอะที่กล้าเอา 32bit มาเล่นขา DIP
แต่บอกตรงๆ ไม่กล้าซื้อ เพราะไม่รู้จะเอาไปทำ...่า....อะไร แค่ 8 ขา!! ???

- ** ที่มา จาก th.mouser.com

เหมือน NXP จะออกแบบมาเพื่อ เน้นให้งานใหม่ๆ มาใช้ 32bit ราคาประหยัดมากขึ้น (งานเก่าๆ 8bit คงไม่มีใครยอม port เพราะคงไม่คุ้ม)
เทคนิคนี้ทำให้เวลาพัฒนาในระดับที่สูงขึ้น จะแทบไม่กระทบกับ source code เดิม หรือกระทบน้อยมาก ต่อยอดได้ง่ายกว่า
เพราะโครงสร้างเป็น 32bit เหมือนกัน

เล่าเรื่อยเปื่อยมานาน ก็ขอไม่พูดพร่ำทำเพลงละ เสียบบอร์ดเข้ากับ USB เลยแล้วกัน!!!

เมื่อเสียบปุ๊บ.....แต่นแต๊นนนนนน   ก็ปรากฏไฟกระพริบเทพ เป็นโปรแกรมที่ติดมาแต่เบื้องต้น... (click ที่รูป)

บนบอร์ดนี้มี User LED RGB 1 ดวงลองเล่น กับ  User Switch 1 อัน
เมื่อเสียบ USB แล้วลองกดปุ่มดู จะเห็นว่า แสงสีของ LED เปลี่ยนไป ทั้งกระพริบ, ทั้ง fade down สีแสดงความสามารถ PWM ด้วย

::compatible กับ Arduino ด้วย!!
จุดเด่นที่โดนใจของบอร์ดนี้คือ พยายามออกแบบมาให้ compatible กับ Arduino Shield!! (ทีแรกงงเลยทำได้ไง) :o


แต่ถึงแม้ชิพ LPC812 จะมี IO เล็กน้อย แต่น่าสนใจว่าบนบอร์ด มีชิพอีกสองตัวที่มาช่วยทำงานคือ
i2c PCF8591T เป็น ADC/DAC เพื่อใช้ขยายพอร์ต ADC และยังมี
i2c PCA9672  เป็น I/O Expander อีกด้วย

โครงสร้างที่ออกแบบมา ถือว่าทำได้ดี ทำให้ต่อยอดได้สบายมาก เรียกว่าเกาะกระแส Arduino สบายเลย
แต่แค่นั้นยังไม่พอ  ยังมีการจัดขาให้เป็นแบบ DIP ด้วย (สังเกตุกลางๆ บอร์ด) แต่ไม่ได้มี connector ไว้ให้
ซึ่งกะเอาใจนักพัฒนาเต็มที่ การจัดขาแบบนี้ ทำให้ง่ายต่อการพัฒนามาก เวลาเสียบโปรโตบอร์ด ก็ง่าย
ใช้กับ Arduino Shield ก็สบาย...
แต่ก็ทำได้แค่ใกล้เคียง เพราะ จะมีบางขา ไปผูกกับ i2c IO Expander ดังนั้นการทำงานจึงต้องอาจจะ
ไม่สมบูรณ์100% อาจจะต้องแก้ไข library เล็กน้อย แต่ภาพรวมถือว่าโอเคมากๆ ถ้าออกแบบมาเป็นแบบ
สี่เหลี่ยม I/O รอบตัวนี้จบกัน~ ผมคงไม่อยากได้เลย


:: การโปรแกรม และแนวคิด Online IDE รวมถึงการ Compile ในระบบ Cloud
บอร์ดนี้ เป็นบอร์ดที่ออกแบบให้รองรับ platform ที่ชื่อว่า 'MBED' ซึ่งได้มีรูปแบบ hardware และ compiler ที่เตรียม Library
ให้ใช้พร้อมแล้ว โดยตัว compiler และ IDE จะมาในรูปแบบ "Online" ::)
คือคุณสามารถเขียนและ compile บน webbrowser ได้เลย ไม่ต้องติดตั้งอะไร ซึ่งอาจจะดูเหมือนยาขม แต่สำหรับผม ผมชอบนะ
เพราะดูไฮโซมาก ไม่ยุ่งยาก 8)
มีคำถามว่า ถ้าไม่มี internet , web ล่ม , net ช้า และปัญหาอื่นๆ ถามว่าจะพัฒนาต่อได้ไหม ตอบเลยครับ "คงไม่ได้"  :P
ในฐานะที่เราอยู่ในเมืองไฮโซตอแหลแลนด์ เราจะบอกว่า net ช้า, ไม่มีเน็ต ไม่ได้ครับ เพราะทุกตารางเซนติเมตรมี internet ความเร็วสูงให้ใช้
ขืนบอกไม่มีเน็ต อายเค้าตายเลย.. ดังนั้น จึงต้องบอกว่า internet ไม่เป็นปัญหาในการพัฒนาครับ... ;)

**เสริม
- ที่จริงแล้วก็เห็นมี compiler แบบ offline ให้ใช้เยอะแยะนะคับ ทั้งถูกทั้งฟรี เพียงแต่ถ้าจะใช้แบบ online compiler จะดูหล่อขึ้นเท่านั้นเอง 8)
- ทางฝั่ง STM32 ก็มีพวก platform และ Library ให้ใช้เยอะแยะ เช่นพวก บอร์ด Maple จาก leaflabs ที่เป็น Arduino Compatible เหมือนกัน
แต่นั่นพัฒนาแบบ offline ได้ ความ Hiso จึงด้อยกว่า  ::)


สำหรับบอร์ดนี้ เค้าออกแบบมาดีมาก รองรับ MBED online compiler มันจึงแบ่งบอร์ดออกเป็นสองส่วน คือตัว Boot
และ Target โดยส่วนแรกที่เป็น Boot จะมีชิพ LPC11U35 ทำหน้าที่ติดต่อ USB รับข้อมูลที่ต้องการเบิร์น เพื่อมาเขียนที่
flash ของ Target หรือก็คือ LPC812 นั่นเอง
โดยหน้าที่ชิพ LPC11U35 นี้จะทำเกือบทุกอย่าง ตั้งแต่เมื่อเสียบ USB มันก็จะจำลองตัวเองเป็น flash Drive ตัวหนึ่ง
เมื่อต้องการ flash โปรแกรมก็เพียงแค่เอา .BIN ที่ได้จากการ compile ไปวางไว้ที่ drive นี้ เสร็จแล้วกด reset ก็เสร็จทันที!

การ compile ไม่ยาก เพียงเสียบแล้วเปิดเวป mbed.org แล้วเขียน code กด compile มันจะกลายเป็น download file
สั่ง save ไปที่ drive ที่เป็นบอร์ด LPC800 ก็เรียบร้อย จากนั้นกด Reset ก็เสร็จแล้ว... ;)

เอาล่ะ ตามธรรมเนียม ขอเริ่มที่ไฟกระพริบเทพก่อนเลยแล้วกัน...
Quote
// ไฟกระพริบเทพ by Lastman
#include "mbed.h"

DigitalOut myled(LED1);

int main() {
    while(1) {
        myled = 1;
        wait(0.2);
        myled = 0;
        wait(0.2);
    }
}


ผลที่ได้ไฟกระพริบเทพ (click ที่รูป)


ต้องยอมรับว่าผมอ่านเอกสาร เกี่ยวกับบอร์ดนี้น้อยมาก (ก็พึ่งอ่านเมื่อตอนได้มาเนี่ยแหละ)
แต่เห็นคุยว่า Arduino Compatible ก็เลยอยากจะลองดี ว่าจะทำงานได้หรือไม่ ไวเท่าความคิด ไม่รอช้าเลยไปคว้า LCD Shield มากองตรงหน้า 8)
ใจนึงค่อนข้างกังวล เพราะว่า ไม่รู้ว่ามันใช้ไฟเท่าไหร่ 3.3 หรือเปล่า กลัวมันจะไหม้ ไม่ใช่อะไรหรอก แต่ก็คิดว่า อีกไม่กี่วันก็ได้บอร์ดใหม่แล้ว
ก็เลยเอาวะ...ลุยเลย...

ปรากฏว่าตัว LCD shield ของผมมันมีการ wire สายใหม่อยู่ก่อน เลยต้องมานั่งบัดกรีสายใหม่ให้เข้าที่ก่อนทดสอบ
เมื่อบัดกรีเสร็จแล้ว จึงทำการเอาสายมา Jump จาก socket ของ LPC812 ไปที่ shield ของ LCD
จากนั้นเปิด IDE ซึ่งก็มี library เตรียมไว้อยู่แล้ว

ไหนๆ ก็ไหนๆ ผมกะจะไม่อ่าน datasheet เลย เพราะอยากรู้ว่าถ้าไม่อ่าน register ไม่ต้องอ่านสถาปัตยกรรมของมัน
แต่รู้แค่ C แบบ Arduino เนี่ยจะใช้งานได้หรือไม่..  เลยจัด Code ไปตามนี้

Quote
// ทดสอบ LCD (beyond ไฟกระพริบเทพ)
#include "mbed.h"
#include "TextLCD.h"

TextLCD lcd(P0_0, P0_4, P0_17, P0_16, P0_13, P0_14, TextLCD::LCD16x2);

int main() {
    lcd.printf("Hello LPC800 MAX");
    lcd.locate(0,1);
    lcd.printf("Lastman Standing");
    while(1);
}

ผลปรากฏว่า...

เพียง 1 นาที หลังจาก แก้ไขสายที่เดินผิด จาก project ก่อนหน้า แล้วเสียบสาย jump เข้าที่บอร์ด LPC800 MAX
ก็ได้ผลดังรูป...

สรุป
ภาพรวมค่อนข้างประทับใจกับความง่ายของมันครับ แต่ online ide  ยังอาจจะดูเหมือนยาขมสำหรับใครหลายๆ คน
แต่ library และเครื่องมือ ของทั้งสองค่ายไม่ว่าจะเป็น NXP หรือ ST ก็ยังแข่งกันอยู่ ความง่ายแบบนี้จริงๆ แล้ว ST ทำได้นานแล้ว
อาจจะเพราะเม็ดเงิน ST เค้าใหญ่กว่า และบุกตลาดมาพอสมควรแล้วก็ได้ ส่วน NXP ก็พึ่งหันมาเล่นตลาดล่างได้พักนึงเอง ซึ่งอนาคตก็ต้องดูกันต่อไป ยาวๆ

แต่สำหรับผม ผมชอบ NXP นะ ผมรู้สึกว่ามัน SEXY แบบแปลกๆ มันเหมือนมีอะไรบางอย่างที่ ST ไม่มี...  ::)


ท้ายนี้ ขอเอาบอร์ด 3 บอร์ดมาเทียบกัน
LPC800 MAX , Fujitsu MB9BF506 Stamp , Arduino 168 Compatible


ดูเหมือน Arduino จะตกกระป๋องไปยังไงยังงั้นเลย หุหุ


::เกร็ดเล็กเกร็ดน้อย
ไหนๆ ก็เขียนแล้ว ก็อยากจะเขียนให้ครบทุกมิติ...
- Fujitsu เป็นลูกหม้อของ Toshiba ตัว chip มีเทคโนโลยีการผลิตสูง แต่ต้นทุนชิพต่ำมาก ค่อนข้างถูก(มากด้วย) เพราะมีโรงงานของตัวเองด้วย
แต่ตอนหลังขายกิจการออกไปบางส่วนแล้ว compiler ยังลูกผีลูกคน หา example ก็ยาก คนใช้น้อย การหา sales ขายปลีก ยากเหมือนกระโดดกัดหูตัวเอง
แต่ถ้าเทียบ Feature ต่อราคา เป็นอะไรที่คุ้มมากๆ และเพราะมี backup เป็น Toshiba จึงดูเหมือนมีอนาคตก็ตรงนี้แหละ
(ปีที่แล้ว ผลประกอบการ 10,996 M$ Toshiba Semiconductor เป็นรองแค่ Texas Instruments อยู่แค่ 0.4%)

- STMicroelectronics ก็พยายามเจาะตลาดในไทยนานแล้ว แต่ก็เหมือนปัญหาข้างบน คือไม่ค่อยมีขายปลีก ก่อนหน้านี้ผมเคยพยายามติดต่อ
หาซื้ออยู่เหมือนกัน แต่ขั้นต่ำ ก็ 1k โครงสร้างค่อนข้างดี การต่อยอด ทำได้ง่าย เพียงแค่เปลี่ยนเบอร์ให้ใหญ่ขึ้น บางทีแทบไม่ต้องแก้โค้ด
เคยอ่านเอกสารอยู่พักนึง แต่ด้วยเวลาไม่อำนวย เลยไม่ได้ศึกษาต่อ ตอนหลัง มาชอบ NXP แทน ส่วน 8 Bit ทีแรกว่าจะลองใช้ ST8
แต่ยังขอคิดดูก่อน เพราะยังรัก MEGA328 อยู่ 8)
(ปีที่แล้ว ผลประกอบการ 8,453 M$ เป็นรอง Toshiba แต่ถ้าคิดแค่ Fujitsu,  STคงเหนือกว่าเยอะ
อีกทั้ง ST มีโรงงานแฟบเองด้วย)


- NXP ภาพรวม เป็นรอง ST อยู่หลายขุม แต่ดูเหมือนมีความพยายามอย่างหนัก ที่จะช่วงชิงส่วนแบ่งทางการตลาด โดยหลังๆ ชักเห็นว่า
มาเน้นตลาดล่างค่อนข้างเยอะ (ในขณะที่ตลาด 32bit บนๆ ST ก็ไปกินแถวๆจีนเยอะเช่นกัน) ผมเห็นความพยายามส่วนนี้ และเห็นใจ NXP
เลยมาเล่นค่ายนี้ แค่นี้แหละ
(ปีที่แล้ว ผลประกอบการ เป็นรอง ST ครึ่งต่อครึ่ง ยังไงปีนี้ก็สู้ๆ นะ เอาใจช่วย 8)
ปล. ไม่แน่ใจว่า NXP เป็นพวก fabless หรือไม่จำไม่ได้) 


- ATMEL, MICROCHIP  สองบริษัทนี้รวมกัน ยังไม่เท่า NXP เลย หลังๆ ไม่ค่อยสนใจละ เพราะเริ่มรู้สึกว่าขี้เหร่
และการใช้ 8bit ชักรู้สึกว่าไม่ Hiso  ไม่หล่อ ยังไงก็ไม่รู้ เขียนโปรแกรมนานๆ กลัวจะคันจนผื่นขึ้น 8) )

ปีที่แล้ว ATMEL 1,430M$  ส่วน Microchip จำไม่ได้ น่าจะ 1,800 M$  ลองไปดูในเวปเค้าเองละกัน
ATMEL ขายโรงงานผลิตไปหมดละ ส่วน Microchip ไม่รู้จำไม่ได้ ใครรู้บอกด้วยนะ...


link เกี่ยวข้อง
=======
- เวป mbed => www.mbed.org
- รายละเอียด MCU LPC812 เพิ่มเติม => http://www.nxp.com/products/microcontrollers/cortex_m0_m0/LPC812M101FDH20.html
- อยากวัดดวง LPC800 MAX 42.50บาท =>http://www.nxp.com/campaigns/lpc800-go/lpc800-max
ตรงด้านขวาอ่ะ เค้าจะบอกว่า check out LPC 1 Euro Now... กดเลยให้ไว...
- ที่มา ยอดรายได้ Toshiba,ST,NXP => http://en.wikipedia.org/wiki/Semiconductor_sales_leaders_by_year
- ที่มา ยอดรายได้ ATMEL => http://en.wikipedia.org/wiki/Atmel
- NXP ARM Cortex-M0+ 32bit ขาแบบ DIP8 => http://www.nxp.com/products/microcontrollers/cortex_m0_m0/LPC810M021FN8.html

- ข้อมูลเพิ่มเติม: leaflabs library The STM32 Arduino Compatible => http://leaflabs.com/
- Spec บอร์ด Maple ของ leaflabs
    STM32F103RCBT6: a 32-bit ARM Cortex-M3 microprocessor at 72Mhz
    20KB RAM and 128KB Flash
    Dedicated USB port for programming and communications
    34 General Purpose pins
    9 Analog inputs at 12-bit resolution
    12 PWM pins at 16-bit resolution

- การแปลงบอร์ด ET-STM32F103 ของ ETT เป็น maple เพื่อ compatible กับ library ของ leaflabs.com =>
http://arm4fun.com/index.php?option=com_content&view=article&id=8%3A-et-stm32f103-maple-board&catid=1%3A2010-07-22-17-08-36&Itemid=4&lang=th


ครบถ้วนกระบวนความละนะ ไว้มีโอกาสหน้าจะมา review ใหม่
ถ้าชอบก็ขอให้กด Like ถ้าใช่ ก็ทั้งกด Like ทั้ง comment ด้วย
แต่วันนี้แค่นี้ก่อน ขาดเหลืออะไร แจ้งด้วยนะจ๊ะ  ;)

ROM


JENG

สามารถติดตาม electoday ได้ที่

Facebook
www.facebook.com/groups/coopmicro

Google+
https://plus.google.com/communities/103482067769375459277

☺☺☺ความรู้ และความฉลาด ไม่ใช่สิ่งเดียวกัน จะมีประโยชน์อะไร ถ้าฉลาดแต่อยู่ในกะลา☺☺☺


yupetch


sonicm

เท่าที่ทราบ  fujitsu ไม่ได้มีความเกี่ยวข้องกับ toshiba เลย
และ ตอนนี้ fujitsu ขาย semiconductor ไปให้กับเจ้าอื่นแล้วครับ

wlasoi

จัดไปแล้ว 1-board เดี่ยวเอามาแจก เด็กๆใน WEB  หลังจากที่ผ่านมาแจก เงินแต่โคโยตี้ ไม่ได้ประโยชน์ อะไร ..

ช่วงนี้ทำตัวเป็น ป๋า! ...  ;D


Lastman

Quote from: wlasoi on October 03, 2013, 06:48:22 PM
จัดไปแล้ว 1-board เดี่ยวเอามาแจก เด็กๆใน WEB  หลังจากที่ผ่านมาแจก เงินแต่โคโยตี้ ไม่ได้ประโยชน์ อะไร ..

ช่วงนี้ทำตัวเป็น ป๋า! ...  ;D

กด like ให้ป๋าเลย... นอกจากจะหน้าตาดี จิตใจก็งาม.... อดีตผู้สนับสนุนการศึกษาเด็กๆ ที่ตั้งใจเรียนแต่ขาดแคลนทุนทรัพย์  หุหุ