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