วิธีการเปลี่ยนจาก Arduino เป็นการใช้ไมโครคอนโทรลเลอร์โดยตรง


19

ฉันทำงานเกี่ยวกับโครงการ Arduino หลังจากที่ฉันได้ทุกอย่างทำงานโดยใช้ Arduino ฉันต้องการย้ายไปยังโซลูชันที่ไม่ใช้ Arduino นั่นคือฉันต้องการใช้ไมโครคอนโทรลเลอร์โดยไม่เกี่ยวข้องกับบอร์ด Arduino ซึ่งจะช่วยให้บอร์ดเดียวไม่มีวิธีแก้ปัญหาโล่

ฉันรู้ว่ามีวิธีที่จะทำให้ Arduino ของฉันเองบนเขียงหั่นขนม แต่นั่นไม่ใช่สิ่งที่ฉันพยายามทำ

ฉันไม่แน่ใจจริงๆว่าจะทำอย่างไร

ถ้าไม่มีตัวเลือกที่ดีกว่านี้ฉันจะใช้ ATmega328 ซึ่ง Arduino ใช้ ฉันเข้าใจว่าเครื่องมือในการพัฒนานั้นให้บริการฟรีหรืออย่างน้อยก็ไม่แพงมาก

สำหรับจุดประสงค์ของคำถามนี้สมมติว่าฉันสามารถรับ + ​​5V ไปยังวงจรของฉันได้

คำถามแรกของฉันคือวิธีการเขียนโปรแกรม MCU ฉันเชื่อว่ามีสองตัวเลือก:

  1. ซื้อโปรแกรมเมอร์เขียนโปรแกรม MCU แล้ววางชิปไว้ในวงจรของฉัน
  2. ออกแบบวงจรของฉันเพื่อรองรับการเขียนโปรแกรมในวงจร

ฉันสมมติว่าถ้าฉันไปกับตัวเลือก # 1 มันง่ายพอ ๆ กับการใส่ชิปที่โปรแกรมไว้ในวงจรของฉัน ฉันไม่ต้องการอะไรอีกแล้ว แน่นอนว่าการเปลี่ยนซอฟต์แวร์จะไม่สะดวก

แต่สำหรับตัวเลือก # 2 ฉันไม่แน่ใจว่าฉันต้องการอะไร จากการอ่านจนจบฉันคิดว่าฉันต้องใช้สายเคเบิลสำหรับการเขียนโปรแกรมและตัวเชื่อมต่อบนบอร์ดของฉัน จากนั้นฉันก็เดาว่าฉันควรเชื่อมต่อขั้วต่อกับพินที่ ATmega

ไม่ว่าจะด้วยวิธีใดฉันจะต้องใช้ Atmel studio

ประการที่สองนอกเหนือจากแหล่งจ่ายไฟมีอะไรใน Arduino ที่ฉันต้องการอย่างแน่นอน? ฉันเดาว่าอาจเป็นสวิตช์รีเซ็ต


2
คุณสามารถใช้ Arduino เพื่อตั้งโปรแกรมของ AVR โดยส่วนตัวฉันชอบใช้เครื่องมือบรรทัดคำสั่งและ makefile แทนที่จะเป็น IDE
jippie

1
คำถามนี้อาจเหมาะสมกว่าสำหรับ Arduino Stack Exchange arduino.stackexchange.com ขณะนี้อยู่ใน Public Beta
akellyirl

4
แต่เป้าหมายของฉันคือการออกแบบที่ไม่มีอาร์ดิโน
Rick

"มีอะไรใน arduino ที่ฉันต้องการจริงๆ?" ฉันคิดว่าคุณจะต้องใช้พิน UART (หรือพอร์ตอนุกรม) มันมีประโยชน์สำหรับการดีบัก
vvy

ไม่จำเป็นต้องมีสตูดิโอ Atmel ฉันตั้งโปรแกรมชิปของฉันจากบรรทัดคำสั่ง (และตัวแก้ไขข้อความ) แม้ว่าจะได้รับอนุมัติสำหรับโครงการขนาดใหญ่ Atmel studio จะช่วยให้ง่ายขึ้นแน่นอน
Chris Laplante

คำตอบ:


10

ยินดีต้อนรับสู่โลกมหัศจรรย์ของ Atmel ฉันขอเสนอคำตอบสำหรับคำถามของคุณตามงานอดิเรกและประสบการณ์การทำงานระดับมืออาชีพของฉัน

อย่ากังวลกับการเขียนโปรแกรมอะไร แต่ในวงจร ถ้าคุณไม่ได้เป็น coder ที่สมบูรณ์แบบการเอาชิปออกทุกครั้งที่คุณต้องการตั้งโปรแกรมมันเป็นฝันร้าย ฉันแนะนำ AVRISPmkII เป็นเครื่องมือตั้งโปรแกรมระดับเริ่มต้น ข้อเสียคือไม่มีการดีบักฮาร์ดแวร์ที่รองรับ อีกทางเลือกหนึ่งคือมังกร แต่ฉันไม่มีประสบการณ์กับมัน ฉันสามารถพูดได้ว่า JTAGICEmk3 เป็นเครื่องมือดีบั๊กที่มีความสามารถ

Atmel studio นั้นดีสำหรับการเขียนโปรแกรม จริงๆแล้วมันเป็นสภาพแวดล้อมการพัฒนาแบบฝังที่ชื่นชอบ คุณสามารถใช้เครื่องมือ CLI เช่น AVRDUDE และ AVR-GCC แต่ IDE ดูแลสิ่งนั้นให้คุณ

สรุป:

ซื้อ AVRISP สำหรับการเขียนโปรแกรม (ง่ายกว่าแบบพลักแอนด์เพลย์) หรือ DRAGON (ฉันไม่สามารถให้คำแนะนำได้)

บนบอร์ดของคุณให้นำหมุด ICSP มาไว้ที่หัว 6 คู่สองแถว 0.100 "- การเชื่อมต่อที่อธิบายไว้ในแผ่นข้อมูลนี้

ไม่จำเป็นต้องใช้สวิตช์รีเซ็ต


1
ฉันได้ผลลัพธ์ที่ยอดเยี่ยมด้วย EvUSBasp
Ignacio Vazquez-Abrams

เมื่อฉันนำพิน ICSP ออกมาบนบอร์ดของฉันฉันต้องอุทิศมันสำหรับการเขียนโปรแกรมในวงจรหรือฉันยังสามารถใช้พวกมันเป็นพิน GPIO ได้หรือไม่?
Ricardo

2
คุณสามารถใช้พวกเขาเป็น GPIO ได้เนื่องจากพวกเขาแบ่งปันฟังก์ชั่นกับ SPI โปรแกรมเมอร์วางชิปไว้ในการรีเซ็ตจากนั้นสื่อสารกับมัน
HL-SDK

1
ชุดกวดวิชาที่เกี่ยวข้องในการเขียนโปรแกรมไมโครคอนโทรลเลอร์เริ่มต้น พวกเขาใช้ AVRMega และผ่านขั้นตอนการเดินสาย ISP และรหัส C ที่หรูหราเพื่อกระพริบไฟ LED
MDMoore313

1
@ HL-SDK นั้นถูกต้องที่เฉพาะ RESET pin เท่านั้นที่จะต้องมีไว้สำหรับ ICSP แต่ก็ต้องใช้ความระมัดระวังสำหรับพินอื่นเช่นกันนั่นคือพวกมันอาจจะใช้เป็นพินเอาท์พุทแทนที่จะเป็นพินอินพุต ไม่ถูกรบกวนจากวงจรภายนอกในโหมด ICSP) และสิ่งที่แนบมากับสิ่งเหล่านั้นควรได้รับการออกแบบไม่ให้ตอบโต้กับสัญญาณผสมใด ๆ
microtherion

10

คุณไม่จำเป็นต้อง "เปลี่ยน" ทั้งหมดในครั้งเดียว นี่คือวิธีการแปลงของฉัน:

ในการเริ่มต้นฉันยังคงใช้ Arduino แต่เปลี่ยนสายไปยังห้องสมุด Arduino เป็นการอ่านและเขียนลงทะเบียนครั้งละหนึ่งบรรทัดเพื่อดูว่าโปรแกรมของฉันยังทำงานอยู่หรือไม่ วิธีนี้ฉันคุ้นเคยกับการใช้รีจิสเตอร์และเห็นว่าพวกเขาไม่ต่อเนื่องอย่างรุนแรงกับวิธีการทำสิ่งต่าง ๆ ของ Arduino ฟังก์ชั่น Arduino เช่น digitalWrite () เพียงจัดการกับการลงทะเบียน - คุณมีอิสระในการอ่านและเขียนโดยตรงในภาพร่างของคุณ

ขั้นตอนต่อไปของฉันคือการวาง ATTiny 85 ไว้บนบอร์ดและตั้งโปรแกรมด้วย Arduino เป็น ISP ( http://highlowtech.org/?p=1695 ) หากคุณซื้อพาวเวอร์ซัพพลายของเขียงหั่นขนมและใช้ออสซิลเลเตอร์ภายในของ ATTiny สิ่งนี้ต้องมีการเดินสายเล็กน้อย ฉันใช้ Arduino IDE เพื่อคอมไพล์ แต่เก็บไว้โดยใช้รีจิสเตอร์มากที่สุดเท่าที่จะทำได้

จากนั้นฉันติดตั้ง toolchain บรรทัดคำสั่ง Crosspack ฟรีและคอมไพล์โปรแกรมบลิงกี้ หลังจากลองผิดลองถูกอีกครั้งฉันก็จัดการโปรแกรม ATTiny ด้วย avrdude เท่านั้นโดยอยู่นอกระบบนิเวศของ Arudino อย่างสมบูรณ์

เมื่อคุณได้รับความกระพริบตาด้วยเครื่องมือบรรทัดคำสั่งเท่านั้นคุณจะปลอดจาก Arduino สำรวจอุปกรณ์ต่อพ่วงต่าง ๆ และการลงทะเบียนของพวกเขาและในไม่ช้ามันก็จะเป็นธรรมชาติโดยสิ้นเชิง

หลังจากทั้งหมดนี้ฉันมักจะพบว่าตัวเองใช้ Arduino เพราะมันเร็วกว่า ฉันพบว่าการอ่านมากกว่าคำอธิบายการลงทะเบียน kinda sucks; ไม่มีเหตุผลในการทำเช่นนั้นหากคุณไม่จำเป็นต้องทำ มันเป็นเรื่องดีที่จะรู้วิธี


8

ฉันเห็นด้วยกับความคิดเห็นของ HL-DSK ด้านบน ฉันใช้จ่ายเงินเพิ่มและรับโปรแกรมเมอร์ที่มีความสามารถในการดีบัก ฉันใช้ JTAGICE3 ประมาณ $ 110 ในคีย์ดิจิ

อ่านข้อมูลเกี่ยวกับการเขียนโปรแกรม ISP ที่นี่ มันจะแสดงวิธีนำการเชื่อมต่อ SPI ออกมา การเชื่อมต่อ SPI บนชิปของคุณจะอยู่ในแผ่นข้อมูล ATmega ดูหน้า 2 สำหรับหมุด MISO / MOSI / SCK / RESET โปรแกรมเมอร์ต้องสามารถควบคุมสายรีเซ็ตได้ อย่าลืมใช้ตัวต้านทานแบบดึงขึ้นในบรรทัดรีเซ็ตเพื่อให้ชิปของคุณจะทำงานหลังจากที่โปรแกรมเมอร์ถูกตัดการเชื่อมต่อ

รับตัวเองหัว 2x3 ที่นี่ หรือทำด้วยตัวเองโดยใช้ส่วนหัว breakaway


2
ฉันจะรับโปรแกรมเมอร์ที่สองพร้อมการสนับสนุนการดีบัก เมื่อต้นเดือนที่ผ่านมาฉันถูกโยนเข้าสู่จุดสิ้นสุดของโครงการ PIC32 ที่ไม่มีประสบการณ์ระดับต่ำ แม้กับคนอื่นที่เขียนฟังก์ชั่นการกระแทกบิตระดับต่ำสุด แต่ฉันก็ไม่ต้องการที่จะคิดว่าปัญหาของฉันจะยากกว่านี้เพียงใดถ้าทุกอย่างที่ฉันต้องเห็นข้างในนั้นคือไฟ LED สีแดง / เขียว
Dan Neely

เมื่อคุณมีเครื่องมือระดับมืออาชีพแล้วจะไม่มีการย้อนกลับ
Matt Young

7

ความแตกต่างระหว่าง Arduino กับ ATmega328 เปล่าเป็นเพียงสองสิ่ง Arduino Bootloader และห้องสมุด Arduino คุณสามารถโค้ด Arduino ด้วย C หรือ C ++ โดยไม่ต้องใช้ไลบรารีใด ๆ คุณยังสามารถใช้แอสเซมบลีแทน bootloader ช่วยให้คุณสามารถโหลดรหัสใหม่ผ่านทางอนุกรมโดยไม่ต้องผ่านการเขียนโปรแกรมในวงจรที่ซับซ้อนมากขึ้น (โดยทั่วไป SPI)

คุณสามารถใช้ไลบรารีการเขียนโปรแกรมมาตรฐานและ avr-gcc ได้เกือบทุกไอดี ตรงกันข้ามกับสิ่งที่คนอื่นอาจบอกว่าการเข้ารหัส Arduino นั้นเหมือนกับการเข้ารหัสไมโครคอนโทรลเลอร์ที่ไม่มีอะไรมาก่อน


4
แต่คุณยังสามารถใช้ Arduino bootloader และไลบรารี่กับ ATmega328 เปลือยได้
Ignacio Vazquez-Abrams

@ IgnacioVazquez-Abrams ซึ่งเปลี่ยนมันให้กลายเป็นกระดูกเปลือยอาร์ดิโน่
Passerby

5

ฉันซื้อชิปAtmega328P ที่โหลดไว้ล่วงหน้าและตั้งโปรแกรมไว้ในวงจรด้วยสายเคเบิล FTDIและ avrdude ซึ่งเหมือนกับโปรแกรมของ Arduino ฉันชอบ Eclipse IDE แต่คุณสามารถใช้สภาพแวดล้อมที่คุณต้องการ - Atmel Studio, Arduino IDE, emacs หรือเท้าเปล่าบนบรรทัดคำสั่ง

บอร์ดนี้อยู่ระหว่างการก่อสร้าง ณ จุดที่เสร็จสมบูรณ์พอที่จะทดสอบกับโปรแกรม Hello โดยใช้สายเคเบิลสำหรับการเขียนโปรแกรมกำลังไฟและเทอร์มินัล มันจะยังคงต้องการแหล่งจ่ายไฟ - LM2936 ที่มีแรงดันไฟฟ้าต่ำในปัจจุบันและตัวเชื่อมต่อแบตเตอรีในกรณีของฉัน - และส่วนประกอบอื่น ๆ บนบอร์ดและการเชื่อมต่อนอกบอร์ดโครงการจะต้อง:

NotDuino

เนื่องจากคุณมี Arduino คุณสามารถประหยัดเงินได้เล็กน้อยและใช้ชิปที่ไม่ได้ตั้งโปรแกรมโดยใช้ Arduino เพื่อติดตั้ง bootloader ป้ายปักหมุดสีน้ำเงินที่สวยงามช่วยให้อัตราการเสียชีวิตของฉันลดลง! ฉันใช้คริสตัล 16MHz แต่ถ้าคุณสามารถวิ่งด้วยออสซิลเลเตอร์ภายในชิ้นส่วนของคุณจะลดลง 3 (ตัวเก็บประจุ xtal และ 2)


2

หากต้องการย้ายจาก Arduino ที่มีฮาร์ดแวร์และซอฟต์แวร์เป็นภาษาซ้อนทับ C ฉันต้องการให้คำแนะนำเล็กน้อย ฉันเห็นผู้คนโพสต์คำตอบที่เป็นประโยชน์ แต่ฉันอยู่ที่คุณและฉันจะทำสิ่งต่าง ๆ เล็กน้อย

  1. เลือกดีบักเกอร์ ตัวแก้จุดบกพร่องช่วยให้คุณมีความสามารถในการเขียนโปรแกรมไมโครคอนโทรลเลอร์เช่นเดียวกับการแก้ปัญหาซึ่งรวมถึงการประมวลผล 'ทีละขั้นตอน', 'เบรกพอยต์' ซึ่งช่วยให้คุณสามารถหยุดโปรแกรมในบรรทัดของรหัสที่แน่นอนเพื่อตรวจสอบว่า ISP (In-Circuit Programming) เป็นอินเทอร์เฟซแบบอนุกรมใช้ 3 พินซึ่งดี แต่ไม่มีฟังก์ชั่นเต็มรูปแบบที่ผู้เริ่มต้นต้องการ JTAGอินเตอร์เฟสใช้ 4 พินซึ่งให้การใช้งานเต็มรูปแบบโดยทั่วไปในแง่ของการใช้เบรกพอยต์และสิ่งของ ผู้คนมักจะเอนตัวไปทาง ISP มากขึ้นเพราะการตั้งค่าค่อนข้างง่าย แต่ถ้าคุณถามฉันว่า JTAG นั้นไม่ใช่เรื่องยากที่จะติดตั้ง และก็มี Debug Wire อินเทอร์เฟซที่ฉันต้องการข้ามในการสนทนานี้เนื่องจากคุณต้องการใช้ ISP มากกว่า debug wire
  2. ซื้อดีบักเกอร์ซึ่งมีทั้งฟังก์ชั่น ISP และ JTAG ฉันคิดว่าคุณซื้อครั้งเดียว แต่ซื้อดีซึ่งจะช่วยคุณในอนาคตหากคุณต้องการเปลี่ยนการออกแบบของคุณ ฉันแนะนำ AVR Dragon หรือ JTAGICE ทั้งเชื่อมต่อกับพีซีผ่าน USB และทั้ง ISP และ JTAG JTAGICE ค่อนข้างแพงกว่า AVR Dragon แต่ฉันแนะนำ AVR Dragon อย่างแน่นอน
  3. คุณจะพบว่าไมโครคอนโทรลเลอร์ Atmel ส่วนใหญ่มีฟังก์ชั่น ISP แต่ไม่มากมี JTAG ไมโครคอนโทรลเลอร์ขนาดเล็กเช่น AT90S2313 หรือ ATTINY ซีรีส์ใช้ ISP ซีรี่ส์เนื่องจากขนาดเล็ก แต่ถ้าคุณกำลังมองหาไม่เพียง แต่จะกระพริบไฟ LED ไม่กี่ แต่ต้องการที่จะเชื่อมต่อกับหน้าจอ LCD หรือปุ่มกดหรือสิ่งที่คุณมีแล้วฉันขอแนะนำให้ไปหาไมโครคอนโทรลเลอร์ขนาดใหญ่กว่าเล็กน้อย หากคุณใช้แหล่งจ่ายไฟ 5V ฉันแนะนำให้คุณใช้ ATMega8 หรือแม้กระทั่ง ATMega16 หรือ ATMega128 (fav ของฉัน) ATMega16 และ ATMega128 มี ISP และ JTAG อินเตอร์เฟส
  4. สำหรับ IDE แล้วฉันเคยใช้ Code vision และ AVR Studio แต่ฉันแนะนำให้ใช้ Atmel Studio 6.0 หรือใหม่กว่าซึ่งเหมาะสำหรับทุกความต้องการของคุณ

ฉันมีความคิดเชิงวงจรบางอย่างที่ฉันเรียนรู้ด้วยตัวเองเพื่อที่คุณจะได้มีส่วนต่อประสานที่สะอาดและราบรื่นกับไมโครของคุณ แจ้งให้เราทราบหากคุณต้องการความช่วยเหลือ


1

คำแนะนำที่ซื่อสัตย์

Arduino สำหรับผู้เริ่มต้นมีสองวิธีที่จะไปจากที่นี่

วิธีที่ 1: การทำความเข้าใจวิธีการทำงานของไมโครคอนโทรลเลอร์ / ตัวประมวลผล

Atmel 8051

โดยที่ฉันหมายถึงสถาปัตยกรรมการเรียนรู้และรหัสการชุมนุม (หรือโลหะเปลือย) สำหรับ micro p / c หากคุณต้องการจุดเริ่มต้นสำหรับสิ่งนี้ฉันขอแนะนำ Atmel 8051 ซึ่งเป็นคอนโทรลเลอร์ขนาด 8 บิตพร้อมสถาปัตยกรรมที่ง่ายที่สุดและชุดคำสั่งการประกอบ โปรเซสเซอร์ 32 บิตหรือ 64 บิตที่ทันสมัยอื่น ๆ มีรูปแบบของสถาปัตยกรรมที่ได้รับมา คอนโทรลเลอร์ขนาดเล็กนี้ยังคงถูกใช้เป็นส่วนหนึ่งของหลักสูตรบัณฑิตศึกษาของฉันเพราะเป็นจุดเริ่มต้นที่ดีและมีวรรณกรรมมากมาย

โอ้และชุดอุปกรณ์ในการสร้างบอร์ด ISP ของคุณมีจำหน่ายแล้ว (ชุดประกอบที่สมบูรณ์พร้อมโพรเซสโอประสานกับชุดอุปกรณ์บอร์ดและคุณสามารถสร้างบอร์ดพัฒนาได้ด้วยตัวเองต้องใช้สายเคเบิล / IC ของ RS และ 232 สองช่องเท่านั้น)

เนื่องจากเป็นเทคโนโลยีขั้นต่ำส่วนประกอบทั้งหมดจะราคาถูก

วิธีที่ 2: ข้ามไปยังซอฟต์แวร์ฮาร์ดแวร์ (เป็นที่นิยมน้อยกว่า)

ราสเบอร์รี่ Pi กระดูกบีเกิ้ลแบล็ก

นี่เป็นวิธีการสำหรับผู้หย่อนที่ได้เข้าร่วมการประชุมเล็กน้อยและ "ดึงออก" หรือผู้ที่ต้องการเปลี่ยนมาใช้ซอฟต์แวร์มากกว่าฮาร์ดแวร์ ฉันอยากจะแนะนำให้ย้ายไปที่บอร์ดงานอดิเรกอื่น ๆ เช่น Raspberry Pi หรือ BeagleBoneBlack พร้อมกับหน่วยประมวลผล ARM และเริ่มทำโครงการที่สร้างสรรค์


0

คุณสามารถใช้บอร์ด Arduino โดยไม่ต้องใช้ห้องสมุด sandbox และสภาพแวดล้อมคุณสามารถตั้งโปรแกรมทุกอย่างเองโดยตรง หากคุณต้องการใช้ bootloader ของพวกเขาผ่านทางอนุกรม / uart กับโปรแกรมที่ทำงานได้ดี แต่ส่วนใหญ่ / ชิ้นส่วน avr ทั้งหมดยังสามารถตั้งโปรแกรมได้อีกวิธีหนึ่งด้วยชิ้นส่วนที่จัดไว้ในการรีเซ็ตซึ่งหมายความว่ามันไม่สามารถก่ออิฐได้ มันค่อนข้างง่ายที่จะกัด spi จาก arduino หรือไมโครคอนโทรลเลอร์อื่น ๆ หรือแยก ftdi ออกจากรสชาติบางอย่าง sparkfun มีบอร์ดแบบ arduino และ non-arduino (ตัวอย่างเช่น 32u) ที่ส่วนหัวของ spi นั้นชัดเจน และ ftdi breakout boards ที่คุณสามารถ bitbang ได้อย่างง่ายดายโดยใช้ไลบรารีของ ftdi หรือไลบรารี ftdi ที่มาพร้อมกับ linux

เอกสารประกอบสำหรับแต่ละส่วนจะแสดงตัวเลือกการบูตและตัวเลือกการเขียนโปรแกรมแฟลช ใช่มันไม่ยากเลยที่จะซื้อบางส่วนด้วยและสร้างบอร์ดฝ่าวงล้อมของคุณเอง ฉันจะไม่ทำอย่างนั้นจนกว่าคุณจะได้ใช้การฝ่าวงล้อมที่มีอยู่หรือคณะกรรมการ Eval ง่ายแล้วโคลนที่ถ้าจำเป็นต้องเป็น เริ่มต้นด้วยชิ้นส่วนที่มีออสซิลเลเตอร์ rc ภายในโดยทั่วไปแล้วกำลังไฟพื้นและขาตั้งโปรแกรม ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.