Title: ใครรู้มั่ง ช่วบอกที Post by: pakapong16 on February 16, 2010, 04:24:50 PM ใช้โปรแกรม CCS C complie
Pic 16F877 complie แต่ไม่ผ่าน signed int16 V1,V2,.... max คือค่าดิจิตอลที่แปลงออกมา E1=(1/0.53); E2=(max/1.41); E3=pow(E2,E1); V1=max+8.96; V2=V1/0.21; V3=50; I=V2/V3; printf(lcd_putc,"\f A = %0.3f ",E3); printf(lcd_putc,"\m B= %0.3f ",V2); printf(lcd_putc,"\n C = %0.3f ",I); // แล้วไม่ผ่านตอนแสดง E3 ,V2, I Title: Re: ใครรู้มั่ง ช่วบอกที Post by: smitdh on February 16, 2010, 08:07:26 PM สงสัยว่าลืม #include <math.h> หรือเปล่าครับ
Title: Re: ใครรู้มั่ง ช่วบอกที Post by: pakapong16 on February 17, 2010, 07:26:20 AM ผมประกาศแล้วครับ
#include <16F877.h> #device ADC=10 #include <math.h> #include <stdlib.h> #include <stdio.h> #include <string.h> Title: Re: ใครรู้มั่ง ช่วบอกที Post by: smitdh on February 17, 2010, 08:25:00 PM ดูจากโค๊ดที่ให้มา E3,V2,I จะค้องประกาศเป็น float ด้วยนะครับ
Title: Re: ใครรู้มั่ง ช่วบอกที Post by: pakapong16 on February 22, 2010, 09:55:16 PM อ๋อ ได้แล้วครับ
ขอบคุณมากคับ ขอรบกวนพี่ smitdh เขียนโค๊ดนับเวลาให้ได้ไหมคับ ไปไม่ถูก อ่านแล้วก้อไม่เข้าใจ เอาสโคปจับ เอาต์พุตดูเวลาประมาณ 4-6 ms อ่ะคับ เขียนยังงัยให้มันเริ่มจับเวลาตั้งแต่มีอินพุตเข้ามา จนถึงสิ้นสุด แล้วให้โชว์เวลาที่จับนั้นอ่ะคับ Title: Re: ใครรู้มั่ง ช่วบอกที Post by: smitdh on February 23, 2010, 05:33:49 AM การจับเวลาให้นำ Timer1 ซึ่งเป็น timer/counter ขนาด 16-bit
ซึ่งเมื่อใช้ Xtal 4 Mhz (clock ภายใน = 1 MHz)และ prescaler เป็น 1 จะนับได้สูงสุด 65536 หรือ 65.5 ms //1). กำหนดค่า unsigned long CalTime; setup_timer_1(T1_INTERNAL | T1_DIV_BY_1); //2). เคลียร์ค่าเพื่อเริ่มนับ set_timer1(0); //Clear Timer1 //ส่วนที่ต้องการจับเวลา //3). อ่านค่าที่นับได้ CalTime=get_timer1(); printf("Cal Time=%lu\r\n",CalTime); ดูเพิ่มเติมที่ http://www.thaimicrotron.com/CCS-628/Timer/Timer1_2.htm Title: Re: ใครรู้มั่ง ช่วบอกที Post by: pakapong16 on March 10, 2010, 04:34:39 PM งงคับพี่
หากผมใช้ timer0 ความถี่ XTAL= 20 Mhz นับเวลา 6 ms ให้ได้ 6 ms. ตรงๆๆหรือใกล้เคียงนี้ ผมต้องใช้ prescale เท่าไหร่คับ แล้วค่าเหล่านี้ล่ะคับต้องกำหนดยังงัย cycle=(Td/Pr)*(20*10^6/4 )=256 Td = 256*(4/20*10^6)*PR Tdmax = 256*(4/20*10^6)*256 ;PR=256 Tdmax = 65536*(4/20*10^6) Tdmax = 262144/20*10^6 มันเกี่ยวไหมคับ Title: Re: ใครรู้มั่ง ช่วบอกที Post by: pakapong16 on March 12, 2010, 05:01:27 PM ถ้าใช้ความถี่ 20MHzล่ะคับพี่
ต้องใช้ prescale เท่าไหร่คับ |