Rev Author Line No. Line
3295 kaklik 1 #include "vn.h"
3253 kakl 2  
3  
4 //#define MAXDUTY (int16)160 // 50 kHz
5 #define MAXDUTY (int16)400 // 20 kHz
6 //#define MAXDUTY (int16)800 // 10 kHz
7 #define HALFDUTY (int16)MAXDUTY/2
8 //#define DIVISOR 199 // 10 kHz
9 #define DIVISOR 99 // 20 kHz
10 //#define DIVISOR 39 // 50 kHz
11  
12 #define regreseM (2.02)
13 #define regreseN (-451)
14  
15 void main()
16 {
17  
18 setup_adc_ports(sAN0|VSS_VDD);
19 setup_adc(ADC_CLOCK_DIV_2);
20 setup_spi(SPI_SS_DISABLED);
21 setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
22 setup_timer_1(T1_DISABLED);
23 setup_timer_2(T2_DIV_BY_1,DIVISOR,1);
24 setup_ccp1(CCP_PWM);
25 setup_ccp2(CCP_PWM);
26 set_pwm1_duty(HALFDUTY);
27 set_pwm2_duty(MAXDUTY);
28 setup_comparator(NC_NC_NC_NC);
29 setup_oscillator(OSC_8MHZ);
30  
31 set_adc_channel(0);
32 delay_ms(500);
33  
34 unsigned int16 reg;
35 float given;
36 printf("Cvak\r\n");
37  
38 reg=400;
39 given=regreseM*reg+regreseN;
40  
41 while(true)
42 {
43 unsigned int16 value;
44  
45 value = read_adc();
46 if(kbhit())
47 {
48 char c;
49  
50 set_pwm2_duty((int16)MAXDUTY);
51 c=getc();
52  
53 if(c=='u')
54 {
55 if (reg<600) reg++;
56 printf("up*");
57 }
58  
59 if(c=='d')
60 {
61 if (reg>250) reg--;
62 printf("down*");
63 }
64  
65 if((c>='a')&&(c<='z'))
66 {
67 given=regreseM*reg+regreseN;
68 printf("reg: %Lu\r\n",reg);
69 }
70 }
71  
72 if (value >= given)
73 {
74 set_pwm2_duty((int16)MAXDUTY);
75 }
76 else
77 {
78 set_pwm2_duty((int16)255);
79 }
80 delay_us(200);
81 }
82 }