คืนนี้ก็ทำงานที่แล็บอีกละ พรุ่งนี้ก็อีกคืนนึง เป็น 3 คืนติดในรอบ 1 อาทิตย์ ก็โอเค แต่ที่เซ็งที่สุดคือทำไม code ของ pulse width modulator มันไม่ทำงาน เราพยายามจะใช้ clock 2 ตัว โดยแต่ละตัวจะมี pulse ยาว 1.5 msec เอาไว้ควบคุม servo motor ทีนี้ clock ตัวแรกทำงาน แต่ตัวที่ 2 มันไม่... นั่งจ้องมันอยู่ราวๆ ชั่วโมงครึ่ง ก็ยอมแพ้แล้วกลับบ้าน โค้ดตรงส่วนนี้ก็มีดังนี้
PWMCLK = 0x11; //สำหรับ enable clock mode ของ PWM... มีทั้งหมด 8 port ในนี้ enable port 0 กับ 4
PWMPOL = 0x11; //กำหนดให้ port 0 กับ 4 เริ่มต้องด้วย high signal
PWMPRCLK = 0x77; //หาร bus signal ด้วย 128 สำหรับทั้ง 2 port (ได้เป็น clock A กับ clock B)
PWMSCLA = 0x8D; //หาร clock A ด้วย 8D (whatever number that is ขี้เกียจแปลงกลับเป็น dec) => clock SA
PWMSCLB = 0x8D; //หาร clock B ด้วย 8D => clock SB
PWMPER0 = 0x02; //หาร clock SA ด้วย 2 => clock ของ port 0
PWMDUT0 = 0x01; //duty cycle ของ port 0 เท่ากับครึ่งหนึ่งของ period
PWMPER4 = 0x02; //หาร clock SB ด้วย 2 => clock ของ port 4
PWMDUT4 = 0x01; //duty cycle ของ port 4 เท่ากับครึ่งหนึ่งของ period
PWME = 0x11; //enable pulse width modulator port 0 กับ 4
ทีนี้ ก็ใช้ pulse width modulator port 0 กับ 4 นี่แหละ แต่ดั๊น... port 0 ใช้ได้ port 4 no signal ... flat line... เอ่อ
เซ็ง... ยังไงก็ต้องแก้ปัญหานี้ให้ได้ภายในพรุ่งนี้ ไม่งั้นหุ่นยนต์ก็วิ่งไม่ได้ เลี้ยวไม่ได้ เซ็ง....
เมื่อวานก็พึ่งส่ง purchase request ซื้อ IR sensor 4 ตัว แง่ง แพงจริงๆ แล้วก็ได้ photoresistor มาแล้ว ซึ่งก็ต้องเอาไปทำเป็น color sensor... เอ่อ... ชีวิต ...
ปัญหาเยอะจริง เมื่อวานพึ่งนึกได้ว่าไม่มี battery holder เอ่อ ก็เลยต้องไปซื้อวันนี้ ตกเย็นวันนี้พึ่งนึกได้ว่าแล้วจะยึด battery กับ chassis ยังไง ก็คงใช้สกอตเทปชั่วคราวไปก่อน แต่อันจริงก็ต้องหาตัวอะไรมายึด ทีนี้ถ้าไม่ไปทำเองก็คงต้องซื้อ ไว้ค่อยคิดละกัน
agenda สำหรับพรุ่งนี้
- test servo motor โดยใช้ signal จาก microcontroller
- แก้ให้ใช้ dual clock ได้ แล้วสร้าง function สำหรับให้หุ่นยนต์เดินหน้าถอยหลังได้ ส่วนเลี้ยว 90 องศาก็คงต้องมานั่งทดลองกันดู
PWMCLK = 0x11; //สำหรับ enable clock mode ของ PWM... มีทั้งหมด 8 port ในนี้ enable port 0 กับ 4
PWMPOL = 0x11; //กำหนดให้ port 0 กับ 4 เริ่มต้องด้วย high signal
PWMPRCLK = 0x77; //หาร bus signal ด้วย 128 สำหรับทั้ง 2 port (ได้เป็น clock A กับ clock B)
PWMSCLA = 0x8D; //หาร clock A ด้วย 8D (whatever number that is ขี้เกียจแปลงกลับเป็น dec) => clock SA
PWMSCLB = 0x8D; //หาร clock B ด้วย 8D => clock SB
PWMPER0 = 0x02; //หาร clock SA ด้วย 2 => clock ของ port 0
PWMDUT0 = 0x01; //duty cycle ของ port 0 เท่ากับครึ่งหนึ่งของ period
PWMPER4 = 0x02; //หาร clock SB ด้วย 2 => clock ของ port 4
PWMDUT4 = 0x01; //duty cycle ของ port 4 เท่ากับครึ่งหนึ่งของ period
PWME = 0x11; //enable pulse width modulator port 0 กับ 4
ทีนี้ ก็ใช้ pulse width modulator port 0 กับ 4 นี่แหละ แต่ดั๊น... port 0 ใช้ได้ port 4 no signal ... flat line... เอ่อ
เซ็ง... ยังไงก็ต้องแก้ปัญหานี้ให้ได้ภายในพรุ่งนี้ ไม่งั้นหุ่นยนต์ก็วิ่งไม่ได้ เลี้ยวไม่ได้ เซ็ง....
เมื่อวานก็พึ่งส่ง purchase request ซื้อ IR sensor 4 ตัว แง่ง แพงจริงๆ แล้วก็ได้ photoresistor มาแล้ว ซึ่งก็ต้องเอาไปทำเป็น color sensor... เอ่อ... ชีวิต ...
ปัญหาเยอะจริง เมื่อวานพึ่งนึกได้ว่าไม่มี battery holder เอ่อ ก็เลยต้องไปซื้อวันนี้ ตกเย็นวันนี้พึ่งนึกได้ว่าแล้วจะยึด battery กับ chassis ยังไง ก็คงใช้สกอตเทปชั่วคราวไปก่อน แต่อันจริงก็ต้องหาตัวอะไรมายึด ทีนี้ถ้าไม่ไปทำเองก็คงต้องซื้อ ไว้ค่อยคิดละกัน
agenda สำหรับพรุ่งนี้
- test servo motor โดยใช้ signal จาก microcontroller
- แก้ให้ใช้ dual clock ได้ แล้วสร้าง function สำหรับให้หุ่นยนต์เดินหน้าถอยหลังได้ ส่วนเลี้ยว 90 องศาก็คงต้องมานั่งทดลองกันดู