Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - TaoTao

Pages: 1 [2] 3 4 ... 12
9
คือ หลังจากไปลองเล่น True Studio For STM32
แล้วก็ลบไป เพราะไม่ชิน และกลับมาใช้ KEIL ตามเดิม

ปรากฎว่า ST-Link V2 ใช้กับ KEIL ไม่ได้ครับ Debug อะไร ก็ไม่ได้เลย
แต่สามารถใช้กับ STVP ของ ST เอง เพื่อ Read-Write ได้ @_@!

งง @_@!

10
http://www.keil.com

ส่วนตัว ผมว่า อินเตอเฟสของ KEIL สะอาดตาดีครับ
ส่วน TrueStudio นี่ รกตาสุดๆ ชวนงุนงง @_@! แต่ฟรี


11
พอดี ลองโหลด IAR For ARM มาใช้น่ะครับ ก่อนหน้านี้ใช้ KEIL
พอ Build มันก็ขึ้นแบบนี้

Quote
Building configuration: F051 - F051
Updating build tree...
F051.out
Converting
Error while running ielftool.exe "--ihex" "--verbose" "C:\Users\mrtao\Desktop\IAR STM32\F051\EWARM\F051\Exe\F051.out" "C:\Users\
mrtao\Desktop\IAR STM32\F051\EWARM\F051\Exe\F051.hex"
Error while running Output Converter
 
Total number of errors: 1
Total number of warnings: 0
"

งง @_@!

ขอบคุณล่วงหน้า คร๊าบบบ

12
พอดี คอมเก่า ม่อง ตอนนี้ใช้เครื่องใหม่ครับ เป็น Windows 10

ได้ Download KEIL + STM32cubeMX + STM32cubeF1 ตัวล่าสุดมาเรียบร้อย

เลือก STM32F103C8.. พอ gen code เปิด KEIL ขึ้นมา

มันเด้งที่หน้าอัพเดท DFP(Driver Firmware Package) ตลอดเลย
กด Download แล้ว แต่ดาตาไม่วิ่งเลย

แก้ไขอย่างไรอ่ะครับ นั่งคลิก ทุก 10 วินาที ตั้งแต่ตี 3
ตอนนี้ รอมามากกว่า 12 ชม ละ ก็ยังไม่ได้เลย

ตามไปโหลด ที่เว็บไซด์เค้า ก็โหลดไม่ได้อีก
https://www.keil.com/dd2/pack/#/eula-container

ผมติดต่อไปที่ ทรู เค้าก็บอก เน็ตวิ่งปกติดี
ซึ่ง อย่างอื่น มันก็โหลดได้ปกติจริงๆ อ่ะครับ @_@!

 :-[ :-[ :-[

13
หากว่า ต้องการ interrupt() เมื่อ cnter ถึงระดับที่ตั้งไว้
แต่ หากช่วงการนับ มันไม่เท่ากัน.. ปัญหาคือ ต้องมาคำนวณ
และโหลดค่าใส่ใน ARR ใหม่ทุกครั้ง

ไม่รู้จะเป็นไปได้ไหม ประมาณว่า ให้มันเข้า loop interrupt
เมื่อ cnter = 0x1DCA, 0x210F.. หรืออะไรก็ได้
แบบว่า นับต่อไปเรื่อยๆ โดยไม่ต้องมาคอย reload ARR
เพราะการ reload ARR และ reset val cnter แต่ละที ใช้หลาย clock เลย

ปัจจุบัน ใช้การแก้ Reload bit : ARR และรอ OVF อยู่ครับ
เพราะมันจะเคลียร์ค่า cnter ทุกครั้ง(อันนี้ อัตโนมัต) ไม่ได้นับต่อยอดไปเรื่อยๆ

อ่าน Ref Manual มาหลายรอบละ ยังมึนอยู่เลย
หาไม่เจอ หรือ เธอไม่มี @_@!

14
STM8 นะครับ

คือ ผมสร้าง uint16_t   get_cnt_[2];
ดักไว้ 2 จุดของ Function ใน Interrupt function คือ it.c
เพื่อรับค่า การ นับ TIM1
ตัวแปร get_cnt มันรับค่าได้ปกติ

แต่พอสร้างตัวแปรอีกตัว
เพื่อให้มันลบกัน คือ delta ใน main.c มันไม่ยอมหาค่าให้
ตัวแปร delta เป็น 0 ตลอดเลย

ลองทุกกระบวนท่าละ ลองเป็น volatile ใน local มันก็ไม่ยอมลบให้
มันเป็นเพราะอะไร หรือครับ @_@!

15
กำลังหาวิธีเก็บ ตัวแปร float 32 bits ใน eeprom อ่ะครับ
lib eeprom ของ stm มีแต่ function ที่เก็บตัวแปร uint32_t
ซึ่งมันก็ 4 byte เท่ากับ float

FLASH_ProgramWord(uint16_t addr, uint32_t data);

แต่จะเก็บอย่างไรอ่ะครับ ใครพอดี idea หรือเคยทำบ้าง

ขอบคุณล่วงหน้าครับ ^_^

16
ขอเกริ่นก่อน ย้อนไป ประมาณ 2-3 ปีก่อนนี้ ใช้ของเจ้าอื่นอยู่ แบบ snakeๆ fishๆ หลายยี่ห้อเลย ซื้อมาร่วม 1 พันตัว(เขียนไม่ผิดครับ) สักพักนึง หันมามอง STM8/32 เพราะตกใจในราคาเมืองนอกที่ถูกมาก เมื่อเทียบกับ Feature เครื่องมือก็ถูกดี และเนื่องด้วย ตัวถังเค้า จะเป็นพวก LQFP เกือบทั้งหมด ซึ่งผมชอบเป็นพิเศษ เหมาะกับทำ Product มาก กระทัดรัด ไม่กินที่ เลยเริ่มศึกษา และใช้งานอย่างจริงจัง จนตอนนี้ เรียกว่าใช้งานมันได้ จนเกือบครบทุก Feature เค้าแล้ว สรุปเลยว่าชอบครับ ของเค้าดีจริง

STM8 หรือแม้กระทั่ง STM32 หลายๆ ตระกูล ถ้าหวังว่า LIBRARY จะใช้งาน ง่าย จบงานง่าย ทุก Feature ผมว่า มองผ่านได้เลยครับ STM มันไม่ง่ายขนาดนั้น แต่ก็ไม่ยากจนเกินไป ซึ่งผมมั่นใจ 100% เลยครับ ว่า ผมเข้าใจถูกต้อง เพราะอะไรน่ะหรือ ? เดี๋ยวเฉลยตอนท้ายๆ ครับ มีเอกสารจากทางผู้ผลิตเองยืนยันด้วย

เข้าเรื่องเลยครับ หากสนใจ จะใช้งานเจ้า STM8/32
ผมแนะนำ เข้าเว็บ ST.COM เลยครับ อ้อ แต่เดี๋ยวนี้ อาจสะดวกขึ้น อีกทางเลือกที่ง่ายขึ้น คือ

ถ้าคุณใช้มือถือหุ่นกระป๋อง โหลดแอป ST MCU FINDER จาก PlayStore ได้เลยครับ ชีวิตท่านจะง่ายขึ้น แอปนี้.. ทำให้เราเลือก MCU ได้ตรงตามความต้องการ เช่นว่า เราต้องการใช้งานอะไรในตัว MCU ที่เด่นๆ ใช้จำนวนเท่าไหร่ กี่ pin แอปนี้ เราจะรู้เบอร์ที่จะใช้ได้ทันที พร้อมทั้ง Link ไปยัง Dev Board - เอกสาร และซอฟแวร์ ที่จะต้องใช้ให้โหลดด้วย สะดวกคอตๆ เลย แถมบอกราคาไว้ด้วย

สมมติว่า หากต้องการใช้ในโปรเจคย่อมๆ ไม่ได้ประมวลผลซับซ้อนอะไรมากมาย STM8 ผมว่าก็ไม่เลว เพราะราคาถูก เสถียรภาพสูงมาก ทั้งทางความร้อน สนามไฟฟ้า สนามแม่เหล็ก เท่าที่ผมใช้มา มันไม่เคย รีสตาร์ทเองเลย ซึ่งถ้ามี ผม-เพื่อนๆ-และอีกหลายคน คงม่องไปแล้ว เพราะมันอยู่ในรถจุดที่สำคัญมากๆ จริงๆ อันนี้น่าประทับใจ โค้ด 8 bits ก็ดูง่าย สะอาดตามากกว่า 32 bits ตระกูลที่หาง่ายๆ ทั่วไป ก็ 8S เบอร์ยอดฮิต อย่างเช่น STM8S103K3 (มีบอร์ดมินิ ของไชเน่าด้วย ราคาไม่ถึงร้อย  :o)

ถ้าเน้น กินกระแสไฟต่ำมากๆ ก็ต้องพวก ULTRA LOW POWER เลย เพราะ QUIESCENT จะต่ำเป็นพิเศษ (โหมด Active Halt / Halt ผมวัดจริงมา กินกระแสเพียง 1-2 uA  อันนี้น่าทึ่งมาก ใกล้เคียงดาต้าชีทเลย :o) ได้แก่ ตระกูล 8L, 8AL 32 bits ก็ 32L เช่น STM8L152C6T6 48 pin 25 analog i/p (แต่แปลก 32 bits เค้า ขาอนาลอก น้อยกว่า 8 bits มาก แค่ 10 pin เอง ในตัวถังเดียวกัน เสียดาย ๆ :-[)

หลังจาก ได้ตระกูล และเบอร์ MCU ที่ต้องการแล้ว และกำลังจะ เริ่ม.. พัฒนาต่อ

ถ้าไม่ได้โหลดจาก แอป
ที่เว็บ ST.COM จะมี IDE และทุกๆ สิ่งให้ครบเลย ถ้าชอบ ฟรี แบบ Unlimit สำหรับ STM8 : IDE + Complier ก็ Cosmic ครับ แต่ License ต้องเมล์ไปขอเค้าทุกปี อีกทางเลือก ก็ IAR เจ้านี้ ให้ฟรี 8kB สำหรับ 8 bit และ 32 kB สำหรับ 32 bits ลงคอมได้ 1 เครื่อง แต่ไม่ต้องขอ License ทุกปี จริงๆ มี IDE อีกเจ้า แต่จำไม่ได้ละ หลักๆ ผมใช้ 2 เจ้าที่บอกไป และ 32 bits เอง มีอีกเจ้า น่าใช้เลย คือ KEIL ครับ สำหรับตระกูล ARM สำหรับงานที่เน้น Performance

จากนั้นก็โหลด STVP มาด้วย เพื่อเอาไว้ Burn Chip  อันนี้ ใช้ได้ทั้ง 8/32 bit ในซอฟแวร์เดียว ดีบักผ่านทาง ST-LINK-V2 ครับ ของแท้ก็ถูก พันกว่าบาท ของกุ๊กกุ๊กกู๋-ไชเน่า ก็ร้อยกว่าสองร้อย ใช้ได้เหมือนกัน

เมื่อจะเริ่ม โคด อันดับแรก โหลด Library เค้ามา(โหลด จาก แอป หรือ เวป ก็ได้) จะมี ตัวอย่างเยอะแยะ ทุก FEATURE และ Templete พร้อมเลย ซึ่ง LIBRARY เค้า เหมาะกับเอามาช่วยเรา initial เท่านั้นนะครับ งานจริง เราอาจต้อง implement เครื่องมือมาใช้เองบาง Feature นะครับ เพราะ Library เค้าอาจไม่ครอบคลุม เช่น I2C

ตรงนี้แหล่ะครับ เริ่มมันส์ละ ถ้ายังไม่ถอดใจ แนวทางการพัฒนา
ให้โหลดเอกสาร ลำดับตามนี้

1 Data Sheet : เอาไว้ดู pin เชื่อมโยงกับ Feature ต่างๆ แบบกระชับ / พาราฯ - พิกัดทางไฟฟ้า / ข้อมูลทาง HW / มิติตัวถัง.. บลาๆ อันนี้ ประโยชน์อีกอย่าง คือ ไว้ออกแบบ PCB

2 Referrence Manual : อันนี้ สำคัญมาก เอาไว้โคด /Config bits เพื่อใช้งานอย่างจริงจังในแต่ละ Feature ที่เราต้องการ เค้าจะอธิบายไว้ ก็ละเอียดดี

สำหรับการโค้ด ฟีเจอสำคัญๆ เช่น Flash Mem - WAKE UP - ADC - DAC - I2C - DMA - ISR และอื่นๆ อาจโหลด Application Note เพิ่มได้ครับ เพื่อเข้าใจ Product เค้ามากยิ่งขึ้น มันจะมีอธิบายไว้ ทำให้ได้ Trick และแนวทางการโคดดิ้ง เพิ่มขึ้น

ยังมีอีกครับ อันนี้ เด็ด
3 Errata : อันนี้ คล้ายๆ เอกสารรวบรวม ผมมองว่า คล้ายๆ กับ จุดอ่อนไหว-ข้อควรระวัง-ข้อบกพร่อง-พร้อมวิธีการแก้ปัญหา(หลายอย่าง เค้าก็บอกตรงๆ ว่าจะไม่แก้ให้ เอากะมัน แต่ก็จริงใจดีครับ ชอบๆ) ของ Chip เบอร์ที่ใช้

เอกสารนี้(หมายถึง Errata) แต่ก่อน ผมไม่เคยสนใจเลย ไม่รู้ว่ามันคืออะไรด้วยซ้ำ จนกระทั่งวันนึง ลองโหลดมาอ่าน เลยเข้าใจเลยครับว่า เจ้านี้ เค้าละเอียดละออจริงๆ และ Chip เค้า ผ่านการ Test มาแล้วระดับนึง ไว้ใจได้ เช่น ใน Errata ของ STM8L152C6 ในโหมด I2C เค้าก็บอกไว้เลย ว่า หากไม่ คอนฟิก EV5 EV6 EV8.. ฯลฯ ต่างๆ มาตามลำดับ ก่อน Ack แรกจะเกิด จะทำให้ commination fail และเค้าก็เขียนโท่งๆ เลยว่า จะไม่แก้ปัญหาให้ แม้ในอนาคตกาล แต่ก็บอกทางออกไว้ให้ คือ ใช้ I2C คู่กันกับโหมด DMA แบบ Interrupt หรืออีกทางเลือก คือไป code เอง ว่างั้น

ซึ่งผมเอง ก่อนหน้านี้ เคยเจอปัญหานี้มาก่อน แก้อยู่เกือบ 3 วัน คิดไปต่างๆ นาๆ คิดว่า เราคงโง่เอง คงเป็นคนเดียวล่ะมั๊ง ? ผิดพลาดตรงไหนเนี่ย ทำไมมันหลับ ? :'( เลยตัดสินใจ implement ตาม RM เค้า ทีละบรรทัด จนใช้งานโหมดนี้ได้

ใช้งานผ่านมาพักใหญ่ๆ มาอ่านเจอเอกสารนี้(Errata) เฉลยข้อเท็จจริง เลยเข้าใจเลยว่า มันเป็นเช่นนั้นเอง หากผมรู้ตั้งแต่แรก คงจะไม่ต๊อแต๊ในช่วงนั้น อารมณ์ตอนนั้น อยากจะกระทืบบอร์ดทดลองเลย จริงๆ

พอได้ Tool ซึ่งเขียนขึ้นมาเอง มีข้อดีอยู่หลายอย่าง อย่างแรกคือ ไม่เหมือนใคร อย่างที่สอง-สาม นึกไม่ออก อย่างสุดท้าย
 คือ ผมพบว่า มันสามารถใช้ได้ ทั้งตระกูลนั้นเลย เช่น หากเริ่มที่ 8S ทั้งตระกูลซึ่งมีหลายสิบเบอร์-อาจถึงเป็นร้อยๆ เบอร์ มันจะใช้ได้หมด เพราะมันใช้ Referrence Manual เล่มเดียวกัน ชื่อ bits ต่างๆ จึงเหมือนกัน ต่างกันที่รายละเอียด เช่น จำนวน / ความเร็ว

ผมลองเทสแล้ว เวิร์ค แต่หากเปลี่ยนตระกูล ก็อาจต้อง Confige bits ที่แตกต่างบ้างเท่านั้น ซึ่งเมื่อจับทางเค้าได้ ก็ไม่ยาก ก็จะใช้งานได้ และที่สำคัญ ข้ามมาใช้กับ 32 bit ได้ด้วย(อ้อ จริงๆ ผมทำมาจาก 32 bits นะ แล้วเอามาปรับใช้กับ 8 bits) ปรับเพียงบางบิตเท่านั้นเอง

ผมเคยใช้ตระกูล Performance 32 bits มา ก็ทันใจ-สมชื่อดี แต่ปัจจุบัน ประทับใจตระกูล ULP ครับ เพราะได้ใช้งานแล้ว ผลการเทสหลังใช้งาน-วัดผลออกมา รู้เลยว่า ไม่ได้ช้ากว่าตระกูลอื่นๆ เลย (ที่ MIPs เท่าๆ กัน) แต่ได้โหมดประหยัดไฟ คอตๆ เพิ่มเข้ามา เช่น เดิมๆ IDLE กินไฟอยู่ที่ 6-7 mA พอผสานโหมด ULP = ULTRA LOW POWER นี้เข้าไป เช่น Halt/Active halt เหลือโดยเฉลี่ยจริง ไม่ถึง 10 uA ถ้าใช้กับพวกแบตเตอรี่ มีประโยชน์มากเลย จากนั้นก็ปลุกมัน จากภวัง (Halt) ด้วย external interrupt หรืออาจจะ AutoWakeUp ก็ได้ อันนี้ แล้วแต่ความต้องการ

ประโยชน์คอตๆ ของโหมด Halt อีกอย่าง คือ ลดความร้อนครับ ลดได้มหาศาลเลย บางเบอร์ Clock สูงๆ (พวกมากกว่า 100 MIPs) แค่ IDLE ตัวมันอุ่นๆ แล้ว อาจต้องถ่ายความร้อนลง PCB ช่วยมัน แต่หากใช้แนวทางนี้ร่วมด้วย ผมว่า.. เสถียรขึ้นด้วยนะ เร็ว+ไม่ร้อน เพราะมันได้ "งีบ" เป็นระยะๆ

อีกทางเลือก เพื่อลดความร้อน ก็ลด Clock ในช่วงเวลาที่เหมาะสม แต่ผมลองแล้ว สู้ให้ Halt ไม่ได้เลยครับ คนละเรื่อง

เหมือนกับชีวิตจริง.. พักผ่อน ทำใจกลางๆ กับทุกสิ่งที่มากระทบ ชีวิตมีสุข  ;D

//------------------------------------------------------------//
//                ::: เพิ่มเติมครับ โปรแกรมน่าใช้ :::
//------------------------------------------------------------//
Simulate ละเอียด ใช้ LTSPICE4
(ขอบคุณผู้พัฒนา Software ที่ให้ใช้ฟรีนะครับ ของฟรี ขอให้บอก)
http://www.linear.com/designtools/software/

PCB ออกแบบด้วย Diptrace ครับ(รูปล่างนี้) ฟรี.. เช่นกัน
https://diptrace.com/

สลับกับ KICAD (นานๆ ใช้ที กับบอร์ดที่อุปกรณ์เยอะมากๆ)
http://kicad-pcb.org/
https://kicad.github.io/

พวก Model 3D เพื่อใช้จำลองแผ่นปริ้น ที่นี่ครับ เพียบเลย
เพราะ อุปกรณ์ 3D บางตัวใน Software PCB.. ผมหาไม่เจอ หรือเธอไม่มี  ;D
http://www.3dcontentcentral.com/secure/download-model.aspx?catalogid=171&id=263554

พอดี นอนไม่หลับครับ
ขอบคุณที่อ่านจนจบ
ไม่รู้จะได้ประโยชน์อะไรหรือเปล่า

รูปข้างล่างนี้ เป็นส่วนประกอบจะถูกใช้ในรถยนต์ครับ ผมใช้ Chip ของ ST

Pages: 1 [2] 3 4 ... 12