Rev 3304 Rev 3305
1 #include ".\main.h" 1 #include ".\main.h"
2   2  
3 #define LED1 PIN_C6 //CHANGE PIN_XX TO YOUR LED PIN NUMBER 3 #define LED1 PIN_C6 //CHANGE PIN_XX TO YOUR LED PIN NUMBER
4 #define LED2 PIN_C5 //CHANGE PIN_XX TO YOUR LED PIN NUMBER 4 #define LED2 PIN_C5 //CHANGE PIN_XX TO YOUR LED PIN NUMBER
5 #define LED3 PIN_C4 //CHANGE PIN_XX TO YOUR LED PIN NUMBER 5 #define LED3 PIN_C4 //CHANGE PIN_XX TO YOUR LED PIN NUMBER
6 #define LED4 PIN_D3 //CHANGE PIN_XX TO YOUR LED PIN NUMBER 6 #define LED4 PIN_D3 //CHANGE PIN_XX TO YOUR LED PIN NUMBER
7   7  
8 #define S1 PIN_B0 //Raw up 8 #define S1 PIN_B0 //Raw up
9 #define S2 PIN_B1 //Raw down 9 #define S2 PIN_B1 //Raw down
10 #define S3 PIN_D0 //Fine up 10 #define S3 PIN_D0 //Fine up
11 #define S4 PIN_D1 //Fine down 11 #define S4 PIN_D1 //Fine down
12   12  
13 #define BEEP PIN_D2 //piezo beeper 13 #define BEEP PIN_D2 //piezo beeper
14   14  
15 #define LCD_ENABLE_PIN PIN_E0 //// 15 #define LCD_ENABLE_PIN PIN_E0 ////
16 #define LCD_RS_PIN PIN_E1 //// 16 #define LCD_RS_PIN PIN_E1 ////
17 #define LCD_RW_PIN PIN_E2 //// 17 #define LCD_RW_PIN PIN_E2 ////
18 #define LCD_DATA4 PIN_D4 //// 18 #define LCD_DATA4 PIN_D4 ////
19 #define LCD_DATA5 PIN_D5 //// 19 #define LCD_DATA5 PIN_D5 ////
20 #define LCD_DATA6 PIN_D6 //// 20 #define LCD_DATA6 PIN_D6 ////
21 #define LCD_DATA7 PIN_D7 21 #define LCD_DATA7 PIN_D7
22 #include <lcd.c> 22 #include <lcd.c>
23   23  
24 #define OUTPUT_ENABLE PIN_B5 24 #define OUTPUT_ENABLE PIN_B5
25   25  
26   26  
27 //#define MAXDUTY (int16)160 // 50 kHz 27 //#define MAXDUTY (int16)160 // 50 kHz
28 #define MAXDUTY (int16)400 // 20 kHz 28 #define MAXDUTY (int16)400 // 20 kHz
29 //#define MAXDUTY (int16)800 // 10 kHz 29 //#define MAXDUTY (int16)800 // 10 kHz
30 #define HALFDUTY (int16)MAXDUTY/2 30 #define HALFDUTY (int16)MAXDUTY/2
31 //#define DIVISOR 199 // 10 kHz 31 //#define DIVISOR 199 // 10 kHz
32 #define DIVISOR 99 // 20 kHz 32 #define DIVISOR 99 // 20 kHz
33 //#define DIVISOR 39 // 50 kHz 33 //#define DIVISOR 39 // 50 kHz
34   34  
35 #define MAX_OUTPUT 1000 35 #define MAX_OUTPUT 1000
36   36  
37 void sound_beep( unsigned int lenght, int16 frequency) 37 void sound_beep( unsigned int lenght, int16 frequency)
38 { 38 {
39 unsigned int i; 39 unsigned int i;
40 40
41 for(i=0;i<=lenght;i++) 41 for(i=0;i<=lenght;i++)
42 { 42 {
43 output_toggle(BEEP); 43 output_toggle(BEEP);
44 delay_us(1/frequency); 44 delay_us(1/frequency);
45 } 45 }
46 } 46 }
47   47  
48 void main() 48 void main()
49 { 49 {
50 unsigned int16 setpoint=43; 50 unsigned int16 setpoint=43;
51 unsigned int16 napeti; 51 unsigned int16 napeti;
52 unsigned int1 button_press; // semafor pro cteni tlacitek 52 unsigned int1 button_press; // semafor pro cteni tlacitek
53   53  
54 setup_adc_ports(sAN0|VSS_VREF); 54 setup_adc_ports(sAN0|VSS_VREF);
55 setup_adc(ADC_CLOCK_DIV_2); 55 setup_adc(ADC_CLOCK_DIV_32);
56 setup_spi(SPI_SS_DISABLED); 56 setup_spi(SPI_SS_DISABLED);
57 setup_timer_0(RTCC_EXT_L_TO_H|RTCC_DIV_1); 57 setup_timer_0(RTCC_EXT_L_TO_H|RTCC_DIV_1);
58 setup_timer_1(T1_DISABLED); 58 setup_timer_1(T1_DISABLED);
59 setup_timer_2(T2_DIV_BY_1,DIVISOR,1); 59 setup_timer_2(T2_DIV_BY_1,DIVISOR,1);
60 setup_ccp1(CCP_PWM); 60 setup_ccp1(CCP_PWM);
61 setup_ccp2(CCP_PWM); 61 setup_ccp2(CCP_PWM);
62 set_pwm1_duty(HALFDUTY); 62 set_pwm1_duty(HALFDUTY);
63 set_pwm2_duty(MAXDUTY); 63 set_pwm2_duty(MAXDUTY);
64 setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard 64 setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
65 setup_oscillator(OSC_8MHZ); 65 setup_oscillator(OSC_8MHZ);
66   66  
-   67 // enable_interrupts(GLOBAL);
-   68  
67 output_high(LED1); 69 output_high(LED1);
68 output_high(LED2); 70 output_high(LED2);
69 output_high(LED3); 71 output_high(LED3);
70 output_high(LED4); 72 output_high(LED4);
71 output_low(BEEP); 73 output_low(BEEP);
72   74  
73 lcd_init(); 75 lcd_init();
74 set_adc_channel(0); 76 set_adc_channel(0);
75 77
76 lcd_gotoxy(1,1); 78 lcd_gotoxy(1,1);
77 lcd_putc("HVPS01A"); 79 lcd_putc("HVPS01A");
78 lcd_gotoxy(1,2); 80 lcd_gotoxy(1,2);
79 lcd_putc(" MLAB.cz"); 81 lcd_putc(" MLAB.cz");
80 Delay_ms(1000); 82 Delay_ms(1000);
81 83
82 lcd_putc("\f"); 84 lcd_putc("\f");
83   85  
-   86 //read_adc(ADC_START_ONLY);
84 87
85 while(true) 88 while(true)
86 { 89 {
87 napeti = read_adc(); 90 napeti = read_adc();
88 if(input(OUTPUT_ENABLE)) 91 if(input(OUTPUT_ENABLE))
89 { 92 {
90 if (napeti <= setpoint) 93 if (napeti <= setpoint)
91 { 94 {
92 set_pwm2_duty((int16)255); // zapnuti menice 95 set_pwm2_duty((int16)255); // zapnuti menice
93 output_low(LED2); 96 output_low(LED2);
94 } 97 }
95 else // vypnuti menice 98 else // vypnuti menice
96 { 99 {
97 set_pwm2_duty((int16)MAXDUTY); 100 set_pwm2_duty((int16)MAXDUTY);
98 output_high(LED2); 101 output_high(LED2);
99 } 102 }
100   103  
101 } 104 }
102 else 105 else
103 { 106 {
104 set_pwm2_duty((int16)MAXDUTY); 107 set_pwm2_duty((int16)MAXDUTY);
105 output_high(LED2); 108 output_high(LED2);
106 } 109 }
107 110
108 lcd_gotoxy(1,1); 111 lcd_gotoxy(1,1);
109 printf(lcd_putc,"%4lu",napeti); 112 printf(lcd_putc,"%4lu",napeti);
110 lcd_gotoxy(1,2); 113 lcd_gotoxy(1,2);
111   114  
112 if(input(OUTPUT_ENABLE))printf(lcd_putc,"Set:%lu "setpoint); 115 if(input(OUTPUT_ENABLE))printf(lcd_putc,"Set:%lu "setpoint);
113 else printf(lcd_putc,"DISABLED"); 116 else printf(lcd_putc,"DISABLED");
114   117  
115 if(button_press==false ) // tlacitka se ctou znovu pouze pokud v redchozim cyklu nebyla zmacknuta. 118 if(button_press==false ) // tlacitka se ctou znovu pouze pokud v redchozim cyklu nebyla zmacknuta.
116 { 119 {
117 if(!input(S1)) 120 if(!input(S1))
118 { 121 {
119 delay_ms(20); 122 delay_ms(20);
120 if(!input(S1)) 123 if(!input(S1))
121 { 124 {
122 button_press=true; 125 button_press=true;
123 sound_beep(100,700); 126 sound_beep(100,700);
124 if(setpoint < (MAX_OUTPUT-5) )setpoint+=5; 127 if(setpoint < (MAX_OUTPUT-5) )setpoint+=5;
125 } 128 }
126 } 129 }
127   130  
128 if(!input(S2)) 131 if(!input(S2))
129 { 132 {
130 delay_ms(20); 133 delay_ms(20);
131 if(!input(S2)) 134 if(!input(S2))
132 { 135 {
133 button_press=true; 136 button_press=true;
134 sound_beep(100,600); 137 sound_beep(100,600);
135 if(setpoint > 0x05 ) setpoint-=5; 138 if(setpoint > 0x05 ) setpoint-=5;
136 } 139 }
137 } 140 }
138   141  
139 if(!input(S3)) 142 if(!input(S3))
140 { 143 {
141 delay_ms(20); 144 delay_ms(20);
142 if(!input(S3)) 145 if(!input(S3))
143 { 146 {
144 button_press=true; 147 button_press=true;
145 sound_beep(100,500); 148 sound_beep(100,500);
146 if(setpoint < MAX_OUTPUT )setpoint++; 149 if(setpoint < MAX_OUTPUT )setpoint++;
147 } 150 }
148 } 151 }
149   152  
150 if(!input(S4)) 153 if(!input(S4))
151 { 154 {
152 delay_ms(20); 155 delay_ms(20);
153 if(!input(S4)) 156 if(!input(S4))
154 { 157 {
155 button_press=true; 158 button_press=true;
156 sound_beep(100,400); 159 sound_beep(100,400);
157 if(setpoint > 0x00 ) setpoint--; 160 if(setpoint > 0x00 ) setpoint--;
158 } 161 }
159 } 162 }
160 } 163 }
161 164
162 if ( input(S1) && input(S2) && input(S3) && input(S4) ) button_press=false; 165 if ( input(S1) && input(S2) && input(S3) && input(S4) ) button_press=false;
163 output_toggle(LED1); 166 output_toggle(LED1);
164 } 167 }
165   168  
166 } 169 }