Rev Author Line No. Line
1383 kaklik 1 #include "main.h"
1423 kaklik 2  
1451 kaklik 3 #define REV "$Rev$"
1450 kaklik 4  
1423 kaklik 5 unsigned int32 section[4];
6 unsigned int32 time; // pocitadlo preteceni casovace
7  
1435 kaklik 8 #Define INORDER 1
1423 kaklik 9  
10 #int_RTCC
11 void RTCC_isr(void) // preruseni od pretekleho casovace
12 {
13 time++;
14 }
15  
1383 kaklik 16 #define LCD_ENABLE_PIN PIN_E0
17 #define LCD_RS_PIN PIN_E1
18 #define LCD_RW_PIN PIN_E2
19 #define LCD_DATA4 PIN_D4
20 #define LCD_DATA5 PIN_D5
21 #define LCD_DATA6 PIN_D6
22 #define LCD_DATA7 PIN_D7
23  
24 #include <lcd.c>
25  
1446 kaklik 26 #define BUTTON1 PIN_D0
27 #define BUTTON2 PIN_D1
28 #define BUTTON3 PIN_D2
1423 kaklik 29 #define BUTTON4 PIN_D3
1383 kaklik 30  
1446 kaklik 31 #define START1 PIN_B0
32 #define STOP1 PIN_B1
33 #define START2 PIN_B2
34 #define STOP2 PIN_B3
35 #define START3 PIN_B4
36 #define STOP3 PIN_B5
37 #define START4 PIN_B6
38 #define STOP4 PIN_B7
39  
1423 kaklik 40 #define BEEPER PIN_C0
41  
42 unsigned int32 run;
43  
1383 kaklik 44 // Includes all USB code and interrupts, as well as the CDC API
45 #include <usb_cdc.h>
46  
1423 kaklik 47 void beep(int16 period)
48 {
49 while(period){
50 output_toggle(BEEPER);
51 delay_us(800);
52 period--;
53 }
54 }
1383 kaklik 55  
1435 kaklik 56 void main()
57 {
1383 kaklik 58 setup_adc_ports(NO_ANALOGS|VSS_VDD);
1423 kaklik 59 port_b_pullups(TRUE);
1383 kaklik 60 setup_adc(ADC_OFF);
61 setup_psp(PSP_DISABLED);
62 setup_spi(SPI_SS_DISABLED);
63 setup_wdt(WDT_OFF);
1435 kaklik 64 setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
1383 kaklik 65 setup_timer_1(T1_DISABLED);
66 setup_timer_2(T2_DISABLED,0,1);
67 setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
68 setup_comparator(NC_NC_NC_NC);
69 setup_vref(FALSE);
1435 kaklik 70 enable_interrupts(INT_TIMER0);
1439 kaklik 71 enable_interrupts(GLOBAL);
1383 kaklik 72  
1423 kaklik 73 lcd_init();
1383 kaklik 74 usb_init();
75  
76 lcd_gotoxy(1,1);
1424 kaklik 77 printf(lcd_putc,"\f STOPWATCH01A");
1423 kaklik 78 lcd_gotoxy(1,2);
1450 kaklik 79 printf(lcd_putc," Kaklik 2010");
1423 kaklik 80 delay_ms(1000);
1448 kaklik 81  
82 while (TRUE)
83 {
84  
85 printf(lcd_putc,"\fWaiting for PC... ");
1450 kaklik 86 while(!usb_cdc_connected()); // pockej nez se pripoji seriovy port PC
1424 kaklik 87 printf(lcd_putc,"\f PC connected...");
1423 kaklik 88 beep(10);
1383 kaklik 89  
1423 kaklik 90 run=0;
1448 kaklik 91  
92 while(usb_cdc_connected()) // pockej nez se pripoji seriovy port PC
93 {
1450 kaklik 94 run++;
95 section[0] = 0;
96 section[1] = 0;
97 section[2] = 0;
98 section[3] = 0;
99  
1452 kaklik 100 printf(lcd_putc,"\f\nSTART TEST");
1446 kaklik 101  
1450 kaklik 102 while(input(BUTTON1)) // ceka na zmacknuti startovaciho tlacitka
103 if(!input(BUTTON4))
104 {
1452 kaklik 105 printf(lcd_putc,"\f\n ESC");
1450 kaklik 106 while(input(BUTTON3))
107 {
108 lcd_gotoxy(1,1);
109 printf(lcd_putc,"%1u %1u %1u %1u %1u %1u %1u %1u",input(START1),input(STOP1),input(START2), input(STOP2),input(START3),input(STOP3),input(START4),input(STOP4));
110 delay_ms(100);
111 }
1452 kaklik 112 printf(lcd_putc,"\f\nSTART TEST");
1450 kaklik 113 }
1446 kaklik 114 printf(lcd_putc,"\f\n STOP"); //
1383 kaklik 115  
1450 kaklik 116 // mereni casu ve ctyrech usecich
1446 kaklik 117 while((!input(START1)) && (input(BUTTON2))); // cekame na tlacitko stop nebo na preruseni paprsku
1435 kaklik 118 time = 0;
119 set_timer0(0);
1450 kaklik 120 while((!input(STOP1)) && (input(BUTTON2)))
1446 kaklik 121 section[0] = (time << 16) + get_timer0();
1450 kaklik 122  
123 while((!input(START2)) && (input(BUTTON2))); // cekame na tlacitko stop nebo na preruseni paprsku
124 time = 0;
125 set_timer0(0);
126 while((!input(STOP2)) && (input(BUTTON2)))
127 section[1] = (time << 16) + get_timer0();
128  
129 while((!input(START3)) && (input(BUTTON2))); // cekame na tlacitko stop nebo na preruseni paprsku
130 time = 0;
131 set_timer0(0);
132 while((!input(STOP3)) && (input(BUTTON2)))
133 section[2] = (time << 16) + get_timer0();
134  
135 while((!input(START4)) && (input(BUTTON2))); // cekame na tlacitko stop nebo na preruseni paprsku
136 time = 0;
137 set_timer0(0);
138 while((!input(STOP4)) && (input(BUTTON2)))
139 section[3] = (time << 16) + get_timer0();
140  
1448 kaklik 141 // odesli namerene hodnoty
1493 kaklik 142 printf(usb_cdc_putc, "\n\r %7lu %7.1f %7.1f %7.1f %7.1f", run, section[0]/15.625, section[1]/15.625, section[2]/15.625, section[3]/15.625); //konstanta je kvuli prevodu do rozzumnych jednotek [ms]
1423 kaklik 143 }
1448 kaklik 144 }
1383 kaklik 145 }