อยากให้ arduino ทำงานเร็วขึ้น

Started by kitpooh, September 17, 2014, 10:29:11 AM

Previous topic - Next topic

kitpooh

ตอนนี้ที่ผมทำคือเขียนเเยกเป็นฟังก์ชั่นใช้กับ ultrasonic 3 ตัวอยู่แต่พอเพิ่ม sensor ตัวอื่นเข้าไปอีกมันทำงานตอบสนองไม่ทัน เลยอยากให้ arduino ทำงานเร็วขึ้นพอมีวิธีมั้ยครับ

kitpooh

Quote from: kitpooh on September 17, 2014, 10:29:11 AM
ตอนนี้ที่ผมทำคือเขียนเเยกเป็นฟังก์ชั่นใช้กับ ultrasonic 3 ตัวอยู่แต่พอเพิ่ม sensor ตัวอื่นเข้าไปอีกมันทำงานตอบสนองไม่ทัน เลยอยากให้ arduino ทำงานเร็วขึ้นพอมีวิธีมั้ยครับ

crywolf

วิธีก็คือ อย่าปล่อยให้ CPU ทำงานที่ไม่เกิดประโยชน์ เช่น delay ไม่ควรจะมี หรือมีให้น้อยที่สุด

เอา Code มาลงครับ เดี๋ยวมีคนช่วยดูให้


avr_lover

คงต้อง interrupt ช่วย หรือปล่าว
ถ้าใช้วิธียิง pulse ไป แล้วรอตอบกลับทีละตัวรู้สึกว่า time out 30ms หากเขียนเป็น sequencial รอแต่ละตัวทำเสร็จก็ 90mSec แนะนำให้เอาโค้ดมาให้ดูครับน่าจะเห็นภาพดีกว่านี้

Vipavarin

ขอวิธีนี้ไปลองทำด้วยคนนะครับ

khenk

ผมเคยทำโปรเจค UHF RFID Reader โดยใช้ STM32F103 ในการรับข้อมูล I/Q มันน่าจะเร็วพอ โดยผมก็ใช้ interrupt รับปกติ แต่มันใช้ไม่ได้เพราะ สัญญาณ มันเข้ามาพร้อมกัน เพียงแค่กลับเฟสเท่านั้น ฉนั้นมันจึงเข้า interrupt ที่ High Piority ก่อน ข้อมูลจึงได้แค่ I หรือ Q เท่านั้น ผมแก้ปัญญหานี้โดยการใช้ MCU 2 ตัว (STM8S103) ในการ รับสัญญาณ I และ Q แล้วทำการ Buffer ไว้ใน Memory แล้วใช้ STM32F103 เป็น ตัว Master ในการอ่านข้อมูล

Remark : ความเร็วของ MCU ไม่ได้ช่วยให้ในการประมวลผลพร้อมกันได้ในเวลาเดียวกัน (จึงเป็นที่มาของ 3 Core ในโปรเจคของผมครับ)

prakit340

สงสัยต้องดูสเตปของการเขียนโปรแกรมหละครับ

ผมใช้อัลตร้าโซนิค 4 ตัว พร็อคซิมิตี้ อีก 3 ตัว ยังสบายๆอยู่เลยครับ รับค่าวัดระยะทางสี่ตัว โชมอนิเตอร์สบายๆ

kitpooh

Quote from: prakit340 on September 21, 2014, 04:31:12 AM
สงสัยต้องดูสเตปของการเขียนโปรแกรมหละครับ

ผมใช้อัลตร้าโซนิค 4 ตัว พร็อคซิมิตี้ อีก 3 ตัว ยังสบายๆอยู่เลยครับ รับค่าวัดระยะทางสี่ตัว โชมอนิเตอร์สบายๆ
ทำเรียบร้อยเเล้ว ผมใช้อัลตร้าโซนิค  3 ตัวตรวจสอบระยะ 3 ทิศทาง รับค่า RF2.4GHz  อ่านค่าจาก compass วัดคาวมเอียงจาก IMU นำข้อมูลจาก sernsor ต่างๆส่งให้ไมโครคอนโทรลเลอร์แล้วไปควบคุมลักษณะการหมุนของมอเตอร์อีกที เขียนเเยกเป็นฟังชั่น ตอนเเรกผมเรียกลำดับการทำงานของฟังชั่นไว้ไม่ดีแถมดัน delay เข้าไปอีกมันเลยทำงานได้ช้ามาก ต้องขอบคุณพี่ๆทุกท่านที่มาแนะนำให้ครับ ^_^