ตั้งโปรแกรม ATMega328P และใช้งานได้โดยไม่ต้องมีบอร์ด Arduino


13

ฉันต้องการใช้ ATMega328P สำหรับโครงการของฉันฉันหวังว่าจะทำโดยไม่มีบอร์ด Arduino

ฉันรู้กับ Arduino IDE และบอร์ด Arduino ฉันสามารถเขียนโปรแกรมไมโครคอนโทรลเลอร์ อย่างไรก็ตามจะเป็นไปได้ไหมถ้าฉันได้ตั้งโปรแกรมและดีบั๊กโปรแกรมด้วยบอร์ด Arduino IDE + Arduino เพื่อถอดไมโครคอนโทรลเลอร์ออกจากบอร์ด Arduino และใช้ ATMega328P แยกกันโดยไม่มีบอร์ด

ถ้าใช่การกำหนดค่าเพิ่มเติมที่ฉันควรทำคือ ATMega328P เพื่อทำงานอย่างถูกต้องบน breadboard?


ใช้ ATMEGA328 P-PU กับ bootloader Arduino UNO .... คุณสามารถค้นหาได้ในร้านงานอดิเรกและออนไลน์และสิ่งต่าง ๆ ☺
Arthur

การใช้ชิปเปล่าเป็นไปได้อย่างแน่นอนและไม่มีปัญหาใด ๆ
dannyf

นี่ไม่ใช่คำถามเดียวกับคุณ แต่คุณอาจได้รับข้อมูลบางอย่างจากมัน arduino.stackexchange.com/questions/32970/…
รหัส Gorilla

คุณสามารถทำตามคำตอบของคำถามนี้
Rashedul Islam Emon

คำตอบ:


7

คุณสามารถลบ ATMEGA ออกจาก Arduino และใช้มันในบอร์ดของคุณเองอย่างไรก็ตามเมื่อใช้กับบอร์ด Arduino ทั่วไปชิพจะถูกหลอมรวมสำหรับคริสตัลภายนอกเป็นแหล่งสัญญาณนาฬิกาแทนที่จะเป็นนาฬิกาภายใน (เรียบง่าย แต่แม่นยำน้อยกว่า)

คุณไม่สามารถเปลี่ยนแหล่งสัญญาณนาฬิกาผ่าน ISP ได้เว้นแต่ว่าแหล่งสัญญาณนาฬิกาที่ชิปคาดว่าจะใช้งานได้ในปัจจุบันดังนั้นหากคุณต้องการเปลี่ยนการเลือกนาฬิกาคุณจะต้องทำก่อนที่จะลบชิปออกจาก Arduino

อย่างไรก็ตามคุณยังสามารถให้นาฬิกาคริสตัลและตัวเก็บประจุสองตัว (หรือตัวเก็บประจุสำรองซึ่งมักจะมีตัวนี้อยู่) บนบอร์ดภายนอกของคุณ

โดยทั่วไปแล้วชิป (แม้จะเป็น pre-flashed กับ bootloader เพื่อความสะดวก) นั้นราคาถูกกว่าบอร์ดดังนั้นจึงไม่ชัดเจนว่าทำไมคุณต้องการย้ายชิปตัวเดียวกันออกจาก Arduino เมื่อเทียบกับการใช้ชิปอื่น คุณจะต้องการอะแดปเตอร์อนุกรมระดับตรรกะ USB ต่อไปและเมื่อคุณมีสิ่งที่คุณสามารถพัฒนาบนชิปเปล่าบนบอร์ดของคุณแม้ว่าคุณจะทำการทดสอบเบื้องต้นกับ Arduino หากคุณไม่มีตัวแปลง USB คุณสามารถดึงชิปออกจากบอร์ด Arduino และเรียกใช้สายไฟจาก D1 และ D0 หรือใช้ชิปออนบอร์ดค้างไว้เพื่อรีเซ็ตให้คุณยืมสายอนุกรมเหล่านั้นได้โดยไม่ต้อง การรบกวน.


1
ความคิดของฉันคือใช้ไมโครคอนโทรลเลอร์ที่ไม่มีบอร์ด เนื่องจากง่ายต่อการตั้งโปรแกรม Arduino ฉันคิดว่าฉันอาจเลือก ATMega ดังนั้นฉันมี Arduino uno ความคิดของฉันคือซื้อ ATMega เพียงเครื่องเดียวและตั้งโปรแกรมและดีบักโดยใช้ uno board อย่างไรก็ตามฉันเพิ่ง reaslised ว่าถ้าฉันแยก ATMega จาก Arduino ฉันจะต้องเพิ่มส่วนประกอบ (คริสตัลดึงขึ้น resitances .. ) คุณช่วยอธิบายความหมายในย่อหน้าสุดท้ายของโพสต์ของคุณได้ไหม มีวิธีง่ายๆในการตั้งโปรแกรม ATMega (หรือไมโครคอนโทรลเลอร์อื่น ๆ ) โดยตรงโดยไม่ใช้ arduino IDE หรือไม่? ขอบคุณ
จอร์จ

ในขณะที่คุณสามารถข้าม IDE ใช้หรือไม่เกี่ยวข้องกับความซับซ้อนของวงจรเป็นหลักเนื่องจากคุณสามารถใช้ IDE หรือไม่ใช้วงจรที่มีหรือไม่มีนาฬิกาภายนอกและใช้ USB- อนุกรมบนบอร์ดเป้าหมายของคุณบนสายเคเบิลหรือโดยการเขียนโปรแกรมร่างของคุณด้วยโปรแกรมเมอร์ ISP การเหวี่ยงชิปออกจากบอร์ดทำให้คุณไม่มีอะไรเทียบได้กับการซื้อชิปด้วย bootloader หรือไม่และโหลดด้วยตัวคุณเองโดยอาจใช้ Arduino ที่ไม่เป็นอันตรายของคุณในฐานะโปรแกรมเมอร์ ISP หรือใช้ ISP เพื่อโหลดภาพร่างของคุณโดยตรงโดยไม่ต้องใช้ bootloader
Chris Stratton

7

ใช่คุณสามารถใช้ATMega328Pโดยไม่ต้องบอร์ด Arduino ฉันใช้ IC โดยไม่ใช้ Arduino เสมอ มีสองวิธีในการทำมัน

  1. คุณสามารถใช้บอร์ด Arduino กับ IC ตั้งโปรแกรม IC จากนั้นนำออกมาและใช้ในวงจรของคุณ คุณจะต้องใช้16MHZ Oscillatorกับตัวเก็บประจุ
  2. หากคุณไม่ได้มีบอร์ด Arduino คุณสามารถใช้การเขียนโปรแกรมอื่น ๆ เช่นการเขียนโปรแกรมของคุณUSBasp Atmega328pในกรณีนี้อย่าใช้ปุ่มอัปโหลดโดยตรงแทนที่จะใช้การอัปโหลดโดยใช้ตัวเลือกโปรแกรมเมอร์จากเมนูไฟล์ อย่าลืมที่จะเลือกคณะกรรมการเป็นโปรแกรมเมอร์เป็นArduino Pro or Pro Mini (5v, 16mhz) With ATmega328USBasp

หมายเหตุ : อ้างอิงAtmega328p Pin Mappingและโปรแกรมอุปกรณ์ของคุณตามลำดับ สนุก!


2

ค้นหา"Build an Arduino" - คุณจะพบบทความเชิงปฏิบัติมากมายเกี่ยวกับการทำเช่นนั้น คุณจะต้องสามารถเชื่อมต่อการเชื่อมต่อบนแผงวงจรพิมพ์ (และไม่ได้ว่าถ้าคุณต้องการที่จะใช้เขียงหั่นขนมไม่มีบัดกรี) แต่มันตรงไปตรงมาจริงๆ คุณยังสามารถสร้างมันขึ้นมาก่อนและโปรแกรม MCU บน PCB โดยใช้สายเคเบิล FTDI ฉันใช้บอร์ด Arduino และเขียงขนมปังไร้โลหะเพื่อทดสอบชิ้นส่วนที่ไม่คุ้นเคย แต่โดยปกติฉันจะไปที่บอร์ดที่สร้างขึ้นด้วยมือทันทีที่ฉันคุ้นเคยกับส่วนประกอบทั้งหมดที่ฉันจะใช้

การสร้างต้นแบบด้วยบอร์ด Arduino ช่วยให้คุณสามารถรวบรวมชิ้นส่วนต่างๆและทำงานได้อย่างรวดเร็วและถ้า Arduino มีความสามารถมากกว่าเป้าหมายสุดท้ายของคุณ - f / ex, Mega 2650 - คุณสามารถละเว้นหน่วยความจำและข้อ จำกัด I / O ชั่วคราว ของอุปกรณ์ขนาดเล็ก


0

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

Caveats: Arduino ได้รับการออกแบบเป็นบอร์ดต้นแบบและบางสิ่งที่ทำได้ดีกว่าที่ทำในงานนี้ คุณอาจต้องการออกจากชิปบนบอร์ด Arduino จนกว่าคุณจะเสร็จสิ้นการออกแบบและทดสอบวงจรของคุณ คุณเท่านั้นจึงเชื่อมต่อโดยตรง มันสามารถใช้ในสถานที่ถ้าคุณมีวงจรนาฬิกาในสถานที่หรือคุณสามารถเปลี่ยนฟิวส์ (ดูในภายหลัง) และ reprogram Arduino กับอะแดปเตอร์ ISP และความเร็วสัญญาณนาฬิกา 8mhz (PlatformIO ช่วยให้คุณทำสิ่งนี้ ( และอนุญาตโดยตรง นำเข้าภาพร่าง Arduino) - ตรวจสอบหน้าเอกสารของพวกเขาสำหรับปลั๊กอิน Atmel AVR แต่คุณสามารถค้นหาคำแนะนำเกี่ยวกับวิธีเพิ่มไฟล์บอร์ดไปยัง Arduino เพื่อบอกให้ใช้ตัวเลือก 8mhz สำหรับชิปเปล่าได้)

หากคุณลบชิปเพื่อใช้ในวงจรที่แตกต่างกันก็ต้องการวงจรนาฬิกาที่เพิ่มเข้ามาใหม่หรือเปลี่ยนฟิวส์ (ฉันจะไปที่นั้นภายในหนึ่งนาที) นอกจากนี้ยังเป็นการยากที่จะเขียนโปรแกรมด้วยเหตุผลหลายประการดังนั้นคุณจะต้องซื้อฮาร์ดแวร์ราคาถูกสักหน่อย:

การเขียนโปรแกรมชิปแบบสแตนด์อโลน: CPU ของ Arduino ไม่ได้ออกแบบมาเพื่อพูดคุยกับคอมพิวเตอร์ คุณต้องมีคนกลาง บน Uno สิ่งนี้ทำได้ผ่าน Atmel ชิพที่สองที่มีความสามารถ USB และ bootloader บนชิปหลัก มันทำอะไรคือมันใช้ UART ในการอัพโหลดโปรแกรมในขณะที่ชิป USB แปลงข้อความของพีซีเป็นสัญญาณ UART เนื่องจาก bootloader ค่อนข้างเจ็บปวดเมื่อชิพอยู่ในตัวของมันเอง (เนื่องจาก UART นั้นจู้จี้จุกจิกและติดตั้งมันจึงทำให้ชิปนั้นใช้นาฬิกาภายนอกเป็นผล) คุณจะต้องซื้อ ISP โปรแกรมเมอร์สำหรับ Arduino (หรือ ทำตามภาพร่าง Arduino-as-ISP และคำแนะนำในการสร้างของคุณเองซึ่งต้องใช้ Arduino ที่มีชิปอยู่ดังนั้นคุณต้องมีโปรแกรมหนึ่งวินาที)

สิ่งเหล่านี้สามารถตั้งโปรแกรม ATMega 328 โดยตรงผ่าน SPI โดยไม่ต้องใช้ bootloader (มีคำแนะนำมากมายในอินเทอร์เน็ตและค้นหา "โปรแกรมเปลือย ATMega 328P พร้อม USBAsp" เป็นต้น) สิ่งนี้ทำให้ง่ายต่อการเปลี่ยนและดีบักโปรแกรมของคุณนอกเหนือจากการเปิดชิพออกและกลับเข้าสู่บอร์ด Arduino ต้นฉบับ คุณต้องเปลี่ยนการตั้งค่านาฬิกาหากคุณไม่ต้องการใช้คริสตัลภายนอก

ถ้าคุณต้องการที่จะแก้ปัญหาชิปมันมีประโยชน์ที่จะซื้ออะแดปเตอร์ FTDI หรือตัวแปลง USB เป็น UART อื่น ๆ โปรดทราบว่าหากไม่มีวงจรการรีเซ็ตส่วนหนึ่งของบอร์ด (หรือเพิ่มของคุณเองอีกครั้ง) สิ่งนี้จะไม่อนุญาตให้คุณตั้งโปรแกรม ATMega แม้ว่าจะมี bootloader ก็ตาม สำหรับการเชื่อมต่อกราวน์ RX และ TX กับอะแดปเตอร์ คุณอาจหรือไม่ต้องการเชื่อมต่อสาย VCC แต่ก็ไม่ควรทำเช่นนั้นหากมีสิ่งต่าง ๆ มากมายเชื่อมต่อกับชิปและ / หรือมีแหล่งจ่ายไฟของตัวเอง โปรดทราบว่าจำเป็นต้องสลับ RX และ TX เมื่อคุณเชื่อมต่อ นั่นคือ RX to TX และ TX ถึง RX - คุณต้องการชิปเพื่อ RX (รับ) อะแดปเตอร์คืออะไร TX (ส่ง) ไอเอ็นจีและในทางกลับกัน

วงจรนาฬิกานั้นไม่ยากที่จะสร้าง แต่มันต้องการส่วนประกอบบางอย่างที่คุณอาจไม่มี ดังนั้นหากต้องการเปลี่ยนแหล่งสัญญาณนาฬิกาให้ไปที่http://www.engbedded.com/fusecalc/และเลือก ATMega 328P ค่าเริ่มต้นนั้นดี แต่คุณอาจต้องการเปิดใช้งาน EEPROM แบบลบและปิดการใช้งานนาฬิกาหารด้วย 8 หรือปรับการตั้งค่า Brownout อย่าแตะต้องสิ่งอื่นใด (ปิดใช้งานการรีเซ็ตหรือ SPI หรือเปิดใช้งานผลลัพธ์ DebugWire ใน "สนุก" ที่ต้องใช้โปรแกรม HV เพื่อแก้ไข) เมื่อเสร็จแล้วให้วางคำสั่งที่ให้ไว้กับคำสั่ง AVRDude คุณจะต้องเปลี่ยนตัวเลือก -c (-p ถูกตั้งค่าเป็น ATMega 328P แล้ว แต่จะล้มเหลวสำหรับ non-P 328s - อย่าซื้อตัวเลือกเหล่านั้น) และอาจเพิ่มตัวเลือก -P (สำหรับพอร์ต) อย่าละเว้นตัวเลือกตัวพิมพ์เล็ก -u มิเช่นนั้นจะปฏิเสธที่จะอัพเดทฟิวส์

avrdude -p m328p -v -c usbasp -B 100 -u [add extras here: (-P <PORT>) <fuse set command here>]

โปรดทราบว่าหากคุณซื้อ USBASP (ตรวจสอบให้แน่ใจว่ามีจัมเปอร์สามชุด!) สำหรับสิ่งที่พวกเขาเป็นโปรแกรมเมอร์ตัวโปรดของฉันพวกเขาอาจไม่มีเฟิร์มแวร์ที่อัปเดตซึ่งรองรับตัวเลือก -B (ซึ่งคุณอาจต้องการ) นั่นหมายความว่าคุณต้องแนบมันเข้ากับ Arduino ผ่านพอร์ตการเขียนโปรแกรมหกพินในลักษณะเดียวกับที่คุณใช้เพื่อเขียนโปรแกรม bootloader ของ Arduino แต่ใช้ร่าง Arduino-as-ISP เพื่อเขียนโปรแกรมใหม่ เฟิร์มแวร์สำหรับโปรแกรมเมอร์ (ค้นหา "อัปเดตเฟิร์มแวร์ usbasp ผ่าน arduino-as-isp")! สำหรับการอ้างอิงซึ่งมักจะหมายความว่าสายเคเบิลหันหน้าออกห่างจากร่างกายของบอร์ดและคุณอาจต้องเขียนโปรแกรมสเก็ตช์ก่อนเชื่อมต่อสายเคเบิล นอกจากนี้ยังเปิดใช้งานจัมเปอร์ไฟจากโปรแกรมเมอร์บน USBASP (5V) และ "โปรแกรมตัวเอง" หนึ่ง (ดูhttps://forum.arduino.cc/index.php?topic=560719.0สำหรับตำแหน่งของกำลังและโปรแกรมจัมเปอร์โปรแกรม (JP2))

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