Rev 4617 Rev 4633
Line 1... Line 1...
1 #include "main.h" 1 #include "main.h"
2   2  
3   3  
4 #define LED PIN_D7 4 #define LED PIN_D7
5   5  
6 #define RECORDS 100 6 #define RECORDS 1000 // length of buffer
-   7 #define NOISE 2 // noise treshold
7   8  
8 void main() -  
9 { -  
10   -  
11 int16 time, time_new; 9 int16 count, count_new;
12 int16 log[RECORDS]; 10 int16 log[RECORDS];
-   11 int16 record;
-   12  
-   13 #int_RDA
-   14 void RDA_isr(void) // Interrupt from received character
-   15 {
13 int16 n; 16 int16 n;
14 17
-   18 if(getc()=='r') // Send records
-   19 {
-   20 printf("%Lu,", record);
-   21 for (n=0; n<record; n++) printf("%Lu,", log[n]);
-   22 printf("0\n\r");
-   23 }
-   24 else
-   25 { // Reset counters
-   26 set_timer0(0);
-   27 count = 0;
-   28 count_new = 0;
-   29 record = 0;
-   30 }
-   31 }
-   32  
-   33  
-   34 void main()
-   35 {
15 setup_adc_ports(AN0_TO_AN7|VSS_VDD); 36 setup_adc_ports(AN0_TO_AN7|VSS_VDD);
16 setup_adc(ADC_CLOCK_DIV_2); 37 setup_adc(ADC_CLOCK_DIV_2);
17 setup_psp(PSP_DISABLED); 38 setup_psp(PSP_DISABLED);
18 setup_spi(SPI_SS_DISABLED); 39 setup_spi(SPI_SS_DISABLED);
19 setup_wdt(WDT_OFF); 40 setup_wdt(WDT_OFF);
Line 23... Line 44...
23 setup_timer_3(T3_DISABLED|T3_DIV_BY_1); 44 setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
24 setup_ccp1(CCP_OFF); 45 setup_ccp1(CCP_OFF);
25 setup_comparator(NC_NC_NC_NC); 46 setup_comparator(NC_NC_NC_NC);
26 setup_vref(FALSE); 47 setup_vref(FALSE);
27   48  
28 output_low(LED); 49 output_low(LED);
29 /* 50  
30 while(true) -  
31 { -  
32 output_low(LED); 51 enable_interrupts(INT_RDA);
33 delay_ms(1); -  
34 output_high(LED); -  
35 delay_ms(1); -  
36 printf("%u\n\r", 0x55); 52 enable_interrupts(GLOBAL);
37 } -  
38 //*/ -  
39 n=0; 53 record = 0;
40 while(true) 54 while(true)
41 { 55 {
42 set_timer0(0); 56 set_timer0(0);
43 time = 0; 57 count = 0;
44 time_new = 0; 58 count_new = 0;
45 while(time_new == 0) 59 while(count_new == 0) // waiting for a new radiation event
46 { 60 {
47 time_new=get_timer0(); 61 count_new=get_timer0();
48 } 62 }
49 output_high(LED); 63 output_high(LED);
50 64
51 while(time != time_new) 65 while(count != count_new) // waiting for the end of radiation event
52 { 66 {
53 time=time_new; 67 count=count_new;
54 time_new=get_timer0(); 68 count_new=get_timer0();
55 delay_us(5); 69 delay_us(5);
56 } 70 }
57 71
58 if (time>3){ log[n++]=time;} -  
59 if (n==RECORDS) -  
60 { -  
61 for (n=0; n<RECORDS; n++) printf("%Lu,", log[n]); 72 if ((record<RECORDS)&&(count>NOISE)){ log[record++]=count;} // Record radiation event
62 printf("\n\r"); -  
63 n = 0; -  
64 } 73  
65 output_low(LED); 74 output_low(LED);
66 } 75 }
67 76
68 } 77 }