► Atmel Studio 7.0

การเขียนโปรแกรม ไมโครคอนโทรลเลอร์ ด้วย Atmel Studio 7.0 คือ integrated พัฒนาการแพลตฟอร์ม(IDP) สำหรับการพัฒนาและดีบั๊กโปรแกรม Atmel ARM® Cortex™-M และ Atmel AVR® microcontroller-(MCU-) ซึ่งจะประกอบไปด้วย GCC C และ C++ Compiler (ที่ใช้แปลงภาษาซี ให้เป็น Machine Code), Assembly (ที่ใช้แปลงภาษาแอสแซมบลี ให้เป็น Machine Code)

การใช้งาน ATmega32 ภาษาซี กับ 7 Segment

การใช้งาน ATmega32 ภาษาซี กับ 7 Segment Seven Segment Display (SSD) เป็นอุปกรณ์แสดงผลแบบคลาสสิกสำหรับอุปกรณ์อิเล็กทรอนิกส์ดิจิทัลระดับล่าง 7 Segment คือหน้าจอแสดงผลตัวเลข – ตัวอักษร (ได้บางตัว) ที่มีหน้าจอทำมาจากการจัดวางหลอด LED ในแนวยาว…

โปรแกรมแรก กับ ATmega32 Board

โปรแกรมแรก กับ ATmega32 Board สำหรับไมโครคอนโทรลเลอร์ Atmega328 เป็นไอซีไมโครคอนโทรลเลอร์ของบริษัท Atmel มีโครงสร้าง ภายในเป็นแบบ RISC (Reduced instruction set Computer) มีหน่วยความจำโปรแกรมภายในเป็นแบบแฟลช สามารถเขียน-ลบโปรแกรมใหม่ได้หลายครั้ง โปรแกรมข้อมูลเป็นแบบ In-System programmable…

ภาษาแอสเซมบลี ปุ่มขัดจังหวะ interrupt

AVR ภาษาแอสเซมบลี #6 ปุ่มขัดจังหวะ interrupt

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

AVR ภาษาแอสเซมบลี #5 ควบคุมความสว่าง LED ด้วย PWM

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

AVR ภาษาแอสเซมบลี #4 ไฟกระพริบ ด้วย Timer

ภาษาแอสเซมบลี ไฟกระพริบ ด้วย Timer ในบทความนี้จะโบกมือลาให้กับการนับลูปที่ยาวและน่าเบื่อ เราปล่อยให้ตัวจับเวลาภายในทำหน้าที่ในการนับให้เป็นอิสระจากการดำเนินการของโปรแกรม ความรู้เบื้องต้นเกี่ยวกับฮาร์ดแวร์จับเวลา ตัวจับเวลาในตัว (exact: timer/counter, TC0) เป็นส่วนประกอบฮาร์ดแวร์ภายในที่ใช้บ่อยที่สุด ในฐานะที่เป็นองค์ประกอบที่หลากหลายจึงมีโหมดต่างๆมากมายขึ้นอยู่กับความต้องการของเรา เราจะใช้ตัวจับเวลาในการอธิบายในภายหลังดังนั้นในการอธิบายครั้งต่อไปเราจะใช้ตัวจับเวลานี้ในโหมดต่างๆเพื่อควบคุม LED อุปกรณ์ AVR ที่แตกต่างกันมีตัวนับจำนวนที่แตกต่างกัน สิ่งเหล่านี้มีชื่อว่า TC0, TC1…

AVR ภาษาแอสเซมบลี Blink ไฟกระพริบ LED

AVR ภาษาแอสเซมบลี #3 Blink ไฟกระพริบ LED

AVR ภาษาแอสเซมบลี Blink ไฟกระพริบ LED บทความนี้ จะกล่าวถึงการทำให้ LED ที่อยู่เชื่อมต่ออยู่ที่ ขา PB0 ของ ATtiny13 ให้กระพริบได้ ด้วยการหน่วงเวลา หรือเว้นระยะ ในการ เปิดไฟ LED ซึ่งพื้นฐานของการสลับพอร์ตเอาต์พุตได้อธิบายไว้แล้วในบทความก่อนหน้านี้ว่า:…

AVR ภาษาแอสเซมบลี โปรแกรมแรก

AVR ภาษาแอสเซมบลี #2 โปรแกรมแรก เปิดไฟ LED

AVR ภาษาแอสเซมบลี โปรแกรมแรก เปิดไฟ LED ไมโครคอนโทรลเลอร์ ATtiny13 ไมโครคอนโทรลเลอร์ ATtiny13 มี 8 ขา ซึ่งสามารถใช้เป็นขา GPIO (General Purpose Input / Output) ได้…

ATmega328P ภาษาซี C9: ควบคุม Stepper Motor

ควบคุม Stepper Motor ด้วย ภาษาซี Stepping Motor หรือ Stepper Motor เป็นมอเตอร์ที่มีลักษณะเมื่อเราป้อนไฟฟ้าให้กับมอเตอร์ทำให้หมุนเพียงเล็กน้อยตามเส้นรอบวงและหยุด ซึ่งต่าง จากมอเตอร์ ทั่วไปที่จะหมุนทันทีและตลอดเวลาเมื่อป้อนแรงดันไฟฟ้าข้อดีของสเต็ปมอเตอร์ สามารถกำหนด ตำแหน่งของการหมุนด้วยตัวเลข(องศาหรือระยะทาง) ได้อย่างละเอียดโดย ใช้คอมพิวเตอร์หรือ ไมโครคอนโทรลเลอร์เป็น เครื่องกำหนดและจัดเก็บตัวเลข…

ควบคุม DC Motor ด้วย L298N

ATmega328P ภาษาซี C7: ควบคุม DC Motor ด้วย L298N

ควบคุม DC Motor ด้วย L298N มอเตอร์ไฟฟ้ากระแสตรง (DC motor)  เป็นอุปกรณ์ที่ทำหน้าที่เปลี่ยนพลังงานไฟฟ้าเป็นพลังงานกล โดยเมื่อจ่ายไฟให้แก่มอเตอร์ จะทำให้แกนของมอเตอร์หมุน จึงสามารถนำการหมุนของแกนมอเตอร์ไปใช้ในการขับเคลื่อนวัตถุให้เกิดการเคลื่อนที่ มอเตอร์ไฟฟ้ากระแสตรงมีขนาดและพิกัดแรงดันให้เลือกใช้มากมาย ในบทความนี้จะเน้นไปที่มอเตอร์ขนาดเล็กที่ใช้แรงดันในย่าน +1.5 ถึง +12V ซึ่งมีการใช้งานในหุ่นยนต์หรือสิ่งประดิษฐ์ที่มีกลไกเคลื่อนไหว บทความนี้จะสอนใช้งาน ATmega328P ควบคุมความเร็วมอเตอร์ไฟฟ้ากระแสตรง (DC motor) ด้วยการเขียนโปรแกรมภาษาซี (C)…

ATmega328P ภาษาซี C5: การใช้งานอินเตอร์รัพท์

การใช้งานอินเตอร์รัพท์ ภาษาซี อินเตอร์รัพท์ (Interrupt) คือการขัดจังหวะการทำงานของโปรแกรมปกติ เมื่อเกิดเหตุการณ์บางอย่างขึ้น ทำให้ซีพียูไปทำงานที่กำหนดไว้เมื่อเกิดอินเตอร์รัพท์ คำสั่ง Interrupt ใน ATmega328P คือ การขัดจังหวะ คำสั่งนี้มีประโยชน์มาก โดยเมื่อ ATmega328P ได้รับสัญญาณ Interrupt แจ้งเข้ามา จะหยุดพักงานที่ทำอยู่…

ATmega328P ภาษาซี C4: Push Button กดติดปล่อยดับ

Push Button กดติดปล่อยดับ การใช้งานสวิตช์ ต่อกับ ATmega328P เพื่อใช้การกดปุ่ม ให้เป็น Input ให้กับ ATmega328P ในการประมวลผลต่อไป เช่น การเขียนโปรแกรมให้กดสวิตช์แล้วให้ไฟติด แล้วเมื่อปล่อยสวิตช์ให้ไฟดับ โดยเราจะกำหนดสัญญาณ 0 หรือ 1 ให้กับขาของ…

ATmega328P ภาษาซี C3: การเขียนโปรแกรม GPIO เบื้องต้น

การเขียนโปรแกรม GPIO เบื้องต้น GPIO (General Purpose Input / Output) คืออินเทอร์เฟซที่ควบคุมด้วยซอฟต์แวร์ซึ่งมักพบในไมโครคอนโทรลเลอร์และไมโครโปรเซสเซอร์ ICs หรือชิปเซ็ตอินเทอร์เฟซบางตัว โดยทั่วไปแล้ว GPIO จะเป็นขาหนึ่งตัวขึ้นไปบน IC ซึ่งไม่มีจุดประสงค์พิเศษในตัวมันเอง แต่ช่วยอำนวยความสะดวกให้กับนักออกแบบอุปกรณ์ในการสร้างอินเทอร์เฟซ / การเชื่อมต่อระหว่าง…

ATmega328P ภาษาซี C2: อัพโหลดโค้ด ด้วย External Tools

อัพโหลดโค้ด ATmega328P ด้วย External Tools ในบทความนี้เราจะเรียนรู้วิธีโหลดโปรแกรมไปยังบอร์ด ATmega328P โดยใช้ Atmel Studio สิ่งนี้มีประโยชน์เมื่อคุณต้องการพัฒนาโปรแกรมโดยใช้คุณสมบัติขั้นสูงเพิ่มเติมหรือในภาษาอื่นในเช่นเราจะใช้ภาษา C , Assembly ในการทำงานนี้เราจะใช้ตัวเลือก “avrdude” และ “external tools” ใน…