Pages: [1]   Go Down
Print
Author Topic: ถ้าต้องการเขียนโค๊ดเช็คว่า A/D ทำงานเสร็ŧ  (Read 10852 times)
0 Members and 6 Guests are viewing this topic.
pakapong16
Jr. Member
**
Offline 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
Sr. Member
****
Offline Offline

Posts: 187


« Reply #1 on: December 17, 2009, 09:55:16 PM »

ลองเอาโค้ดมาแปะ ดู หน่อย

ได้วงจรที่ต่อด้วยยิ่งดี นะครับ
Logged
smitdh
Administrator
Hero Member
*****
Offline Offline

Gender: Male
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 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
Sr. Member
****
Offline Offline

Posts: 187


« Reply #4 on: December 20, 2009, 03:15:19 PM »

ตอนนี้ทำงานได้หรือยังครับ
Logged
pakapong16
Jr. Member
**
Offline Offline

Posts: 33


« Reply #5 on: December 21, 2009, 10:50:41 AM »

มันก้อทำงานได้ครับ

แต่ค่า output แต่ละครั้งไม่ตรงกัน และไม่ใกล้เคียงเลย

พอจะมีวิธีแก้ไขอะไรได้ไหมครับ
Logged
s_engine
Sr. Member
****
Offline Offline

Posts: 187


« 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 Offline

Posts: 33


« Reply #7 on: December 22, 2009, 01:14:56 AM »

ขอบคุณครับ
Logged
Pages: [1]   Go Up
Print
 
Jump to: