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