บทความ

กำลังแสดงโพสต์จาก 2015

บางครั้งโปรแกรมก็ไม่ทำงานเพราะขาดแค่บางสิ่งบางอย่าง

รูปภาพ
ผมอยากจะสอบถามโค้ด timer interrupt ในหนังสือ dspic30f ของ appsoftech อ่าครับ 1. ผมเอาโค้ดมาดัดแปลง ลองทำเปนไฟกระพริบอะครับ ให้กระพริบทุก 0.5 วิ 2. ผมสามารถเขียนแบบนี่ได้รึป่าวครับ เพราะผมลองแล้วมันไม่ติดอ่าครับ ก่อนหมดคำสั่งควรทิ้ง while(1); ไว้น่าจะดีกว่าครับ while(1); return 0; ตอนนี้ติดแล้วครับ น่าจะเปนเพราะไม่ได้ใส่ while(1); ขอบคุณมากๆครับ เครดิตภาพและข้อมูล : ผู้สอบถามเข้ามาทาง inbox ขอบคุณมากครับ :)

ปัญหาการโปรแกรม HEX ไฟล์ลงบอร์ด PIC16F887 ไม่ได้

รูปภาพ
    ในการเขียนโปรแกรมกับไมโครคอนโทรลเลอร์ มีสิ่งหนึ่งที่เราต้องทำ หลังจากที่ได้เขียนโปรแกรมเสร็จแล้วคือ การโปรแกรมโค้ดที่เขียน (ไฟล์นามสกุล hex) ไปที่ตัวไมโครคอนโทรลเลอร์ และเรามักจะเรียกกันว่า Upload โค้ด     แต่ในบางครั้งเราก็ไม่สามารถ upload โค้ดไปที่ตัวไมโครคอนโทรลเลอร์ได้ ซอฟต์แวร์ที่ใช้ในการโปรแกรมก็จะแจ้งข้อมูลความผิดพลาดให้เราทราบได้ ดังเช่นตัวอย่างนี้ เป็นการ upload โค้ดไปที่ตัวไมโครคอนโทลเลอร์ PIC16F887 ด้วยเครื่องโปรแกรม PICkit2 และ PICkit3      เห็นข้อความแจ้งเตือนแบบนี้ เราต้องคิดว่าในโค้ดของเราส่วนของการ Configuration words ต้องมีอะไรผิดพลาดแน่ ๆ การแก้ไขปัญหาครั้งนี้เราจึงเริ่มต้นด้วยกระบวนการดังนี้ ลด configuration words ลงให้น้อยที่สุด... แต่ถ้ายังไม่ผ่านล่ะ ข้อ 2 จะเริ่มต้น ตรวจสอบ firmware ของเครื่องโปรแกรม แล้ว up firmware ใหม่ ถ้าไม่ผ่านอีก.. ไปข้อ 3. หาเครื่องโปรแกรมใหม่มาทดสอบ (เหตุนี้ทำให้คนที่เล่นไมโครคอนโทรลเลอร์ มักจะมีบอร์ด โปรแกรมและบอร์ดทดลองมากกว่า 1 เสมอ)  ในข้อ 3 นี้เราจะทำกลับไป...

การใช้งาน PIC18Fxxxx กับ MPLAB X + XC8 ด้วย Peripheral Libraries (PLIBS)

รูปภาพ
การใช้งาน MPLAB X และ XC8 กับหนังสือ "PIC18F Programming กับ MPLAB C18 คอมไพเลอร์" ของบริษัท แอพซอฟต์เทค  จำกัด ** บทความนี้นำเสนอการใช้งาน MPLAB X และ XC8 รวมกับไลบรารี PLIBS เพื่อใช้งานแทน MPLAB กับ MPLAB C18 คอมไพเลอร์ ซึ่งเป็นเวอร์ชันที่เก่ากว่า MPLAB X และ XC8 1. ติดตั้งโปรแกรม MPLAB X และ XC8 ได้ตาม Link ต่อไปนี้ http://www.microchip.com/pagehandler/en-us/family/mplabx/ http://www.microchip.com/pagehandler/en_us/devtools/mplabxc/ 2. ติดตั้งโปรแกรม PIC18F Legacy Peripheral Libraries v1.0 Windows ด้วยขั้นตอนดังต่อไปนี้ ดาวน์โหลดไฟล์ peripheral-libraries-for-pic18-v2.00rc3-windows-installer คลิกไฟล์ติดตั้ง ยอมรับเงื่อนไข   เลือกไปยังโฟลเดอร์ที่ XC8 ติดตั้งอยู่ ตัวอย่างนี้ xc8 เวอร์ชัน 1.35 ติดตังอยู่ที่ ...ตามรูป เลือกโฟลเดอร์เรียบร้อยแล้ว พร้อมติดตั้ง ติดตั้งเสร็จเรียบร้อยแล้ว 3. ในขั้นตอนต่อไปเราจะสร้างไฟล์โปรเจคสำหรับ PIC18F ดังนี้ เปิด MPLAB X ขึ้นมา ไปที่เมนู File > New Project... เลือกตามนี้แล้วคลิก Next.. ที่...

การใช้งาน Atmel Studio7 (AVR Studio) กับโค้ดโปรแกรมหนังสือ AVR

รูปภาพ
Tool สำหรับพัฒนาไมโครคอนโทรลเลอร์ AVR/ARM จาก Atmel ไปถึงเวอร์ชัน 7 แล้วครับ ขนาดไฟล์ในการติดตั้ง 332.9MB + 183.1MB  ATMEL STUDIO7 เครื่องมือในการพัฒนาโปรแกรมสำหรับไมโครคอนโทรลเลอร์ AVR ปัจจุบันพัฒนามาถึง เวอร์ชัน 7 แล้วครับ และขั้นตอนต่อไปนี้แสดงถึงวิธีการนำโค้ดโปรแกรมจากหนังสือ AVR ทั้งเล่ม 1 และ 2 มาใช้กับ ATMEL STUDIO 7 แทน AVR Studio 4.xx ครับ  หลังจากที่ติดตั้งเสร็จ เปิดใช้งานครั้งแรกจะได้หน้าต่างดังรูป   ไปที่เมนู File->New->Project เพื่อสร้างไฟล์โปรเจคใหม่  เลือก "GCC Executable Project C/C++" กำหนดชื่อ Name: gccApp01 จากตัวอย่างกำหนดชื่อนี้ Location ที่เก็บไฟล์โปรเจค คลิกปุ่มคำสั่ง OK เลือกเบอร์ AVR ที่ใช้ จากตัวอย่างนี้เลือก ATmega16 เราจะได้ไฟล์โปรเจคพร้อมโค้ด main.c เริ่มต้นในการทำงาน ไปที่เมนู View->Solution Explorer หรือคลิกที่แทบ Solution Explorer (กรอบด้านขวา) คลิกไปที่ไฟล์ main.c คลิกเมาส์ขวาเลือก remove เพื่อที่จะนำไฟล์ main.c ออกจากโปรเจค คลิกปุ่มคำสั่ง Remove หรือจะลบก็คลิกปุ่ม Delete คลิกข...

คำถามคำสั่ง for() กับการวาง semicolon ในภาษา C

รูปภาพ
วันนี้มีคำถามเข้ามาใน inbox เกี่ยวกับภาษา C เลยนำมาแบ่งปันกันครับ   ต้องขออนุญาตสำหรับเจ้าของคำถามนะครับที่นำรูปมาลงไว้ ณ. ที่นี่  การที่จะเข้าใจความแตกต่างของ ";" (semicolon) วางไว้ข้างหน้ากับข้างหลังแตกต่างกันอย่างไร เราต้องเข้าใจคำสั่ง for ในภาษา C ก่อนครับ รูปแบบคำสั่ง for ในภาษา C เป็นดังนี้ for ( init; condition; increment ) {    statement(s); } init: ติดตั้งค่าเริ่มต้น ทำงานครั้งเดียวเมื่อเข้าลูป for จากนั้นไม่มีการทำงานอีกแล้ว condition: ตรวจสอบเงื่อนไขเมื่อมีการวนลูปในแต่ละรอบ จริง-ยังคงลูปต่อ เท็จ-ออกจากลูป increment: เพิ่มค่าตัวแปรหรือมีการเรียกใช้งานทุกครั้งหลังจากเกิดการทำงานในลูปแต่ละรอบ สรุปง่าย ๆ คือ ";" ใน for ใช้ในการคั้นเงื่อนไขครับ ใส่หน้าใส่หลัง ส่งผลให้เงื่อนไขมีการเปลี่ยนแปลงตำแหน่งครับ ยกตัวอย่างเช่น for (; i>0; i--)  init: ค่าเริ่มต้นเราไม่รู้ว่าคืออะไร หรือไม่กำหนดค่าเริ่มต้น เลยปล่อยให้ว่าง ๆ ไว้ condition: คือ i >0 ถ้า i มากกว่า 0 ก็ ลูปต่อไป increment: คือ i-- ลดค่า i ลงหนึ่งค่าทุก ๆ ครั้ง...

ลง XC8 เวอร์ชันใหม่ พร้อมกำหนดคอมไพเลอร์ให้ใช้ตัวใหม่แทนตัวเก่า

รูปภาพ
เราอาจจะถอนตัวเก่าออกไปแล้วก็ให้ไปลบ link ของตัวเก่าออก โดยไปที่เมนู Tools -> Options เลือกตัวเก่าพร้อมคลิกปุ่มคำสั่ง Remove กำหนดให้ Project เก่ารับรู้คอมไพเลอร์ตัวใหม่ ด้วยการเลือกคอมไพเลอร์ใหม่ ที่เมนู File -> Project Properties   เลือกคอมไพเลอร์เวอร์ชันใหม่