Thai microtron community

Electronic Knowledge Base => Microcontoller & Electronics => Topic started by: mink50 on September 20, 2011, 08:24:04 PM



Title: ช่วยด้วยคับPWM 16F877 ADC
Post by: mink50 on September 20, 2011, 08:24:04 PM
ช่วยด้วยคับ ทำไมPICส่งผลไปแค่ครั้งเดียวอ่ะคับ คือมอเตอร์ผมมันหมุนคงที่อ่ะคับ PWM ไม่เปลี่ยนค่าเลย ผมต้องReset PICตลอดมันถึงจะส่งค่าไป
คือมันส่งค่าไปครั้งเดียวอ่ะคับ อยากให้มันส่งค่าไปตลอด จะเขียนโค้ดยังไงอ่ะคับ


#include <16F877.h>
#use delay(clock=1000000)
#fuses HS
#fuses NOCPD
#fuses NOWDT
#fuses NOPROTECT
#define  TxD         PIN_A0   
#define  RxD         PIN_A1   

void main(void)
{
int Dat;
    setup_ccp1(CCP_PWM);   // Configure CCP1 as a PWM
    setup_timer_2(T2_DIV_BY_4, 249, 1);
    set_pwm1_duty(Dat);
   
    setup_port_a(AN0);
      setup_adc(ADC_CLOCK_INTERNAL);
      set_adc_channel(0);

    while( TRUE ){
    Dat=read_adc();   //Loop here
    }
}
 


Title: Re: ช่วยด้วยคับPWM 16F877 ADC
Post by: s_engine on September 24, 2011, 04:57:09 PM
ช่วยด้วยคับ ทำไมPICส่งผลไปแค่ครั้งเดียวอ่ะคับ คือมอเตอร์ผมมันหมุนคงที่อ่ะคับ PWM ไม่เปลี่ยนค่าเลย ผมต้องReset PICตลอดมันถึงจะส่งค่าไป
คือมันส่งค่าไปครั้งเดียวอ่ะคับ อยากให้มันส่งค่าไปตลอด จะเขียนโค้ดยังไงอ่ะคับ


#include <16F877.h>
#use delay(clock=1000000)
#fuses HS
#fuses NOCPD
#fuses NOWDT
#fuses NOPROTECT
#define  TxD         PIN_A0  
#define  RxD         PIN_A1  

void main(void)
{
int Dat;
    setup_ccp1(CCP_PWM);   // Configure CCP1 as a PWM
    setup_timer_2(T2_DIV_BY_4, 249, 1);
    
    
    setup_port_a(AN0);
      setup_adc(ADC_CLOCK_INTERNAL);
      set_adc_channel(0);

    while( TRUE ){
    Dat=read_adc();   //Loop here
    set_pwm1_duty(Dat);
    }
}
 


Title: Re: ช่วยด้วยคับPWM 16F877 ADC
Post by: samarters on September 26, 2011, 09:47:19 AM
ทำไมกำหนด Tx Rx เป็น A0 A1
ของตัว 16F877 มันเองอยู่ C6 C7 ไม่ใช่หรือ แล้วจะอ่าน ADC ได้ไหมล่ะนั่น