Recent Posts

Pages: [1] 2 3 ... 10
2
AVR and Arduino / Re: Arduino MEGA328P
« Last post by tha on July 19, 2019, 09:21:54 am »
เอาบทไหนต่อกันดีหล่ะพวกเรา I/O PORT ใช่ใหมยังค้างอยู่ คงไม่ก่อนวันจันทร์ เดี๋ยวจะดูทบทวนก่อนสักหน่อย มันยุ่งตอนที่มันเกี่ยวพันกับบทอื่น ทำให้ยกตัวอย่างยาก เพราะเรายังไม่ได้ศึกษาในบทนั้น แปลๆไปก่อนใช่ใหม ยังไม่ต้องยกตัวอย่าง พอเราแปลบทนั้นแล้วค่อยยก อย่างนี้ดีใหม หนังสือ AVR ก็ขายไปซะแล้ว เลยศึกษาบทอื่นก่อนไม่ได้เลย
3
AVR and Arduino / Re: Arduino MEGA328P
« Last post by tha on July 18, 2019, 03:47:00 pm »
ตอนนี้บอร์ด(เจ้าสวิทช์แดง)ของเรา สัญญานนาฬิกาตั้งเป็น External Clock อยู่ใช่ใหม คราวนี้เรามาลองตั้งสัญญานนาฬิกากลับไปเป็น Low Power Crystal Oscillator เพื่อกลับไปใช้ crystal เหมือนเดิม (ดูโพสต์นี้แถวที่10 13.3. Low Power Crystal Oscillator ประกอบ)

ทีนี้เราก็มาดูว่า Low Power Crystal Oscillator  (ดูโพสต์นี้แถวที่ 10 ประกอบนะ) ว่า บิท CKSEL[0] มีค่าเท่าไหร่ บิท CKSEL[3:1] มีค่าเท่าไหร่ SUT[1:0] จะเอาค่าเท่าไหร่ดี ก็ดูในตาราง
           CKSEL[0] = 1
          CKSEL[3:1] = 111
          SUT[1:0]    = 01        จะเลือกเปิด brown out detection enable ตรวจจับว่าโวลท์ขึ้นมาสูงถึงระดับที่ตั้งไว้แล้วหรือยัง จะตั้งไว้ 4.3v ตั้งได้ที่ fuse bits(ด้านบน) ก็จะได้ค่า extended fuse bits = 0xFC (ดูโพสต์นี้แถวที่ 13 ประกอบ) เพราะจะกลับมาใช้ power supply 5v

ส่วนบิท CKSEL[0], CKSEL[3:1], SUT[1:0] อยู่ตำแหน่งไหนใน fuse bits (fuse low byte) ก็ดูที่ตาราง fuse bits (ดูโพสต์นี้แถวที่ 13 ประกอบนะ) เราก็จะได้ค่า
                                                          D       F
           fuse low byte = 0xDF = 0b1101 1111  ใช่ใหม



กด program ไป คราวนี้เราก็มาบัดกรี crystal 16MHz กลับคืนไปที่บอร์ดเจ้าสวิทช์แดง ลองใส่ไฟ power supply 5v ไป บอร์ดก็สามารถทำงานได้เป็นปกติ แต่ไฟกระพริบถี่ เราก็แก้เวลาให้ตรงก็เสร็จ

Quote
#define F_CPU 16000000UL    // set to 16000000Mhz because it effect to delay.h
4
AVR and Arduino / Re: Arduino MEGA328P
« Last post by tha on July 18, 2019, 04:59:42 am »
13.9. 13.9. Timer/Counter Oscillator นี่คงจะใช้ให้เป็นประโยชน์ เมื่อเราใช้ฟังชั่น Timer/Counter คงให้ถึงบท Timer/Counter ก่อนถึงจะทำตัวอย่างได้ ตอนนี้คงจะจนปํญญา ขอผ่านไปก่อนเด้อ
5
AVR and Arduino / Re: Arduino MEGA328P
« Last post by tha on July 18, 2019, 04:38:47 am »
กราวน์ก็ต่อถึงกันด้วยนะ พอดีใช้ power supply ร่วมกันอยู่แล้ว เลยต่อกราวน์ถึงกัน ท่านใดบอกมานะ มีจุดไหนไม่ถูกต้องโปรดชี้แนะด้วยครับ
6
AVR and Arduino / Re: Arduino MEGA328P
« Last post by tha on July 18, 2019, 04:23:01 am »
คราวนี้ก็เอาสายมาใส่ให้ขา CLKO(PB0) ของบอร์ดเจ้าสวิทช์ดำ มาใส่เข้าที่ขา EXTCLK(XTAL1) ของบอร์ดเจ้าสวิทช์แดง คราวนี้บอร์ดเจ้าสวิทช์แดงก็มี external clock 2MHz แล้ว คราวนี้เรามาแก้โปรแกรม

Quote
#define F_CPU 2000000UL    // set to 2000000Mhz because it effect to delay.h

ตรงนี้ให้เวลามันตรง คอมไพล์แล้วโปรแกรม hex ไฟล์เข้าไปใหม่ ก็สามารถทำงานไฟกระพริบได้ปกติครับ

7
AVR and Arduino / Re: Arduino MEGA328P
« Last post by tha on July 18, 2019, 03:57:37 am »
คราวนี้ลองเอา seleae logic analyzer มาวัดที่ขา CLKO(PB0) ดู ไม่ได้ใช้มานานออกจะลืมๆ ลองตั้ง sample rate 500Ks/s ดู วัดคลื่นได้ 203.7Hz เอง ไม่น่าจะถูกนะ



 ลองตั้ง sample rate 16Ms/s ดู ขึ้นเป็นแบบนี้



งงไปตั้งนาน นึกว่าใช้ไม่ได้แล้ว พอลองเอาเม้าส์ไปจี้จอ แล้วหมุนเม้าส์ ปรากฎว่าได้รูปคลื่น 2MHz พอดี ตกลงว่าถูกนะ

8
AVR and Arduino / Re: Arduino MEGA328P
« Last post by tha on July 18, 2019, 03:32:48 am »
คราวนี้เราจะเอาบอร์ดเจ้าสวิทช์ดำ(บอร์ด ATmega328p อีกบอร์ด)มาทำเป็นสัญญานนาฬิกาภายนอกให้กับบอร์ดเจ้าสวิทช์แดง
คราวนี้เราก็มาตั้งให้เป็น Full Swing Crystal Oscillator เลย รูปคลื่นสัญญานนาฬิกาจะได้ดีๆ
คราวนี้มากดถูกที่ CKDIV8 เพื่อให้หารสัญญานนาฬิกาลงมา 8 คือจาก 16MHz ลงเป็น 2MHz
คราวนี้มากดถูกที่ CKOUT  เพื่อให้มีสัญญานนาฬิกาออกมาที่ขา CLKO(PB0)
ส่วนบิท CKDIV8, CKOUT, CKSEL[3:0], SUT[1:0] อยู่ตำแหน่งไหนใน fuse bits (fuse low byte) ก็ดูที่ตาราง fuse bits (ดูโพสต์นี้แถวที่ 13 ประกอบนะ) เราก็จะได้ค่า
           fuse low byte = 0x37 = 0b0000 0111 ใช่ใหม



คราวนี้ก็กดโปรแกรมไป
9
AVR and Arduino / Re: Arduino MEGA328P
« Last post by tha on July 18, 2019, 03:09:19 am »
ตอนนี้บอร์ด(เจ้าสวิทช์แดง)ของเรา สัญญานนาฬิกาตั้งเป็น 128kHz Internal Oscillator อยู่ใช่ใหม คราวนี้เรามาลองตั้งสัญญานนาฬิกาเป็น External Clock ดูบ้าง(ดูโพสต์นี้แถวที่11 13.8. External Clock ประกอบ)

ทีนี้เราก็มาดูว่า External Clock  (ดูโพสต์นี้แถวที่ 11 ประกอบนะ) ว่า บิท CKSEL[3:0] มีค่าเท่าไหร่ SUT[1:0] จะเอาค่าเท่าไหร่ดี ก็ดูในตาราง
          CKSEL[3:0] = 0000
          SUT[1:0]    = 00        จะเลือกเปิด brown out detection enable ตรวจจับว่าโวลท์ขึ้นมาสูงถึงระดับที่ตั้งไว้แล้วหรือยัง จะตั้งไว้ 2.7v ตั้งได้ที่ fuse bits(ด้านบน) ก็จะได้ค่า extended fuse bits = 0xFD (ดูโพสต์นี้แถวที่ 13 ประกอบ) จะตั้งให้เป็น 4.3v ก็ได้เพราะจะกลับมาใช้ power supply 5v

ส่วนบิท CKSEL[3:0], SUT[1:0] อยู่ตำแหน่งไหนใน fuse bits (fuse low byte) ก็ดูที่ตาราง fuse bits (ดูโพสต์นี้แถวที่ 13 ประกอบนะ) เราก็จะได้ค่า
           fuse low byte = 0xC0 = 0b1100 0000 ใช่ใหม



แล้วกด program ไป แล้วลอง read ดู จะขึ้น
 Entering programming mode.. FAILED!
คราวนี้มันจะติดต่อกับ ET-AVR ISP mk-II ไม่ได้ เพราะสัญญานนาฬิกาเปลี่ยนเป็น External Clock แล้ว แต่เรายังไม่ได้ใส่สัญญานนาฬิกา External Clock เข้าที่ขา EXTCLK(XTAL1) ให้มัน

คราวนี้ก็ถอดไฟออก แล้วบัดกรีเอาสายต่อจากขา EXTCLK(XTAL1) ออกมา

เปลี่ยน programming mode and target setting จาก 6.478kHz เป็น 125kHz เหมือนเดิมด้วย
10
ผมมีอุปกรณ์ตัวหนึ่งที่ควบคุมด้วย serial TTL       serial TTL ---RelayModule  แต่อยากเเอามาควบคุมด้วยมือถือผ่าน wifi
พอดีไปเห็นโมดูลตัวนี้มา

DT-06 WiFi Serial Port Transparent Transmission Module
TTL to WiFi Compatible with Bluetooth HC-06



ไม่ทราบว่าจะเอามารับข้อมูล wifi->serial TTL   ----> serial TTL ---RelayModule
แบบนี้ได้หรือไม่ครับ มีใครเคยใช้งานทำนองนี้ไหมครับ

ขอบคุณครับ
Pages: [1] 2 3 ... 10