pakapong16
Jr. Member
Offline
Posts: 33
|
|
« on: December 17, 2009, 05:32:06 PM » |
|
รบกวนพี่ s_engine หรือ smitdh ทีครับ
เพราะผมลองป้อนอินพุต DC ผ่าน VR ปรับค่าจ่ายเข้ากับ MCU แล้วปรากฏว่า
ป้อนค่าอินพุตเท่ากัน แต่อ่านค่าออกมาไม่เท่ากัน ผมไม่ได้เปลี่ยนค่าอินพุตเลย
เพียงแต่กดปุ่ม รีเช็ทให้ mcu อ่านค่าอีกที มันเป็นที่อะไรครับ
หรือว่า A/D ยังทำงานในครั้งแรกไม่เสร็จแล้วส่งค่ามาแสดงเลย
มีผลไหมครับ และถ้าผมเขียนโค๊ดเช็คว่า A/D ทำงานเสร็จรึยังนี้ต้องเขียนยังงัยครับ
|
|
|
Logged
|
|
|
|
s_engine
|
|
« Reply #1 on: December 17, 2009, 09:55:16 PM » |
|
ลองเอาโค้ดมาแปะ ดู หน่อย
ได้วงจรที่ต่อด้วยยิ่งดี นะครับ
|
|
|
Logged
|
|
|
|
smitdh
Administrator
Hero Member
Offline
Gender:
Posts: 381
อาจารย์ที่ปรึกษา
|
|
« Reply #2 on: December 18, 2009, 12:39:50 AM » |
|
เมื่อเริ่มจ่ายไฟให้ MCU หรือเมื่อ Reset MCU ยังไม่ควรติดต่อกับ I/O ในทันทีครับ ควรจะ delay สัก 100 ms ก่อน (สำหรับอุปกรณ์ทั่วๆไป) ลองเพิ่มทำสั่ง delay_ms(100); ไว้ใน main ก่อนที่จะใช้คำสั่ง A/D ครับ
|
|
|
Logged
|
|
|
|
pakapong16
Jr. Member
Offline
Posts: 33
|
|
« Reply #3 on: December 18, 2009, 06:19:12 PM » |
|
lcd_init(); delay_ms(1000); start=0; max1=0; printf(lcd_putc,"\fTEST ADC"); printf(lcd_putc,"\nREADY..."); delay_ms(2500); printf(lcd_putc,"\fTEST ADC"); printf(lcd_putc,"\nADC1 = "); delay_ms(100);
while (TRUE){
set_adc_channel(1); delay_ms(2); ADC1 = Read_ADC(); start=ADC1; if(start>max1) { max1=start; printf(lcd_putc,"\fTEST ADC"); printf(lcd_putc,"\nADC1 = %ld",max1); delay_ms(100);
|
|
|
Logged
|
|
|
|
s_engine
|
|
« Reply #4 on: December 20, 2009, 03:15:19 PM » |
|
ตอนนี้ทำงานได้หรือยังครับ
|
|
|
Logged
|
|
|
|
pakapong16
Jr. Member
Offline
Posts: 33
|
|
« Reply #5 on: December 21, 2009, 10:50:41 AM » |
|
มันก้อทำงานได้ครับ
แต่ค่า output แต่ละครั้งไม่ตรงกัน และไม่ใกล้เคียงเลย
พอจะมีวิธีแก้ไขอะไรได้ไหมครับ
|
|
|
Logged
|
|
|
|
s_engine
|
|
« Reply #6 on: December 21, 2009, 08:59:29 PM » |
|
ฮาร์ด แวร์ ต่ออย่างไร ใช้ R แบบปรับค่าได้หรือ ปล่าว ลองปรับ ค่า ขึ้น ลง หรือยัง ให้เอา function ที่เอาค่าสูงสุดออก โดยให้แสดงค่า แบบ ตลอดเวลา แล้วลองปรับ R ดูผล ของ ค่าที่ได้ ตั้ง R ไว้ตำแหน่งเดิม แล้วไป รีเซต pic ปล่อยไว้ มันก็จะอ่าน ค่าแรก ก็คือ ค่าสุดท้ายก่อนกดรีเซต ดูว่าตรงกันไหม แรงดัน อนาลอค ที่จ่ายให้ pic อยู่ในช่วง 0-5 V หรือปล่าว ห้ามเกิน โดยเด็ดขาด ลองดูอีกทีนะ ทำไปช้าๆ เริ่มไปทีละนิด เพิ่มไปทีละส่วน เอาให้ work ไปทีละอย่าง
|
|
|
Logged
|
|
|
|
pakapong16
Jr. Member
Offline
Posts: 33
|
|
« Reply #7 on: December 22, 2009, 01:14:56 AM » |
|
ขอบคุณครับ
|
|
|
Logged
|
|
|
|
|