81 lines
2.5 KiB
Text
81 lines
2.5 KiB
Text
|
|
uint16_t bufa; // 4 buffers of 256 readings
|
||
|
|
uint16_t bufb; // 4 buffers of 256 readings
|
||
|
|
bool firstrun = 0;
|
||
|
|
int t; //time since last event
|
||
|
|
float maxcount;
|
||
|
|
float slowfreq; //second frequency measure,
|
||
|
|
//int f;
|
||
|
|
int evt; //event
|
||
|
|
void setup() {
|
||
|
|
Serial.begin(115200);
|
||
|
|
Serial.println("Cosmic Pi Status: Alive");
|
||
|
|
int t = analogRead(0);
|
||
|
|
pinMode(13, OUTPUT);
|
||
|
|
//int evt; //events
|
||
|
|
|
||
|
|
ADC->ADC_MR |= 0x80; // these lines set free running mode on adc 4 and adc 6 (pin A0 and A1 - see Due Pinout Diagram thread)
|
||
|
|
ADC->ADC_CR = 2;
|
||
|
|
ADC->ADC_CHER = 0x50; // this is (1<<7) | (1<<6) for adc 3 and adc 6
|
||
|
|
evt=0;
|
||
|
|
//f = 1;
|
||
|
|
maxcount = 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
void loop() {
|
||
|
|
int q0 = 0, q1 = 0;
|
||
|
|
int a1, a3;
|
||
|
|
//for (int i = 0; i < 5000; i++) {
|
||
|
|
while ((ADC->ADC_ISR & 0x50) != 0x50); // wait for two conversions (pin A3[4] and A1[6])
|
||
|
|
a1 = ADC->ADC_CDR[4]; // read data on A3 pin
|
||
|
|
a3 = ADC->ADC_CDR[6]; // read data on A1 pin
|
||
|
|
bufa = a1;
|
||
|
|
bufb = a3;
|
||
|
|
if (bufb > 600) { //software trigger threshold
|
||
|
|
if (bufa > 600) { //software trigger threshold
|
||
|
|
t=millis()-t;
|
||
|
|
if (t > 0) {
|
||
|
|
//f =((f+(1000/t))/2);
|
||
|
|
Serial.print("Cosmic Pi coincidence trigger event. Potential cosmic rays caught so far: "); Serial.print(evt); Serial.print(". Time since last event in ms: "); Serial.print(t); Serial.print(" Frequency: ");
|
||
|
|
//Serial.println(f);
|
||
|
|
maxcount = maxcount + (t/1000);
|
||
|
|
slowfreq = (1/(maxcount/evt));
|
||
|
|
//Serial.println(maxcount);
|
||
|
|
Serial.print(slowfreq);
|
||
|
|
Serial.println(" Hz");
|
||
|
|
evt++;
|
||
|
|
t=millis();
|
||
|
|
digitalWrite(13,HIGH);
|
||
|
|
delay(5);
|
||
|
|
digitalWrite(13,LOW);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
//q0+=a1;
|
||
|
|
//q1+=a3;
|
||
|
|
//}
|
||
|
|
//t = micros() - t;
|
||
|
|
//Serial.print("5000 pairs of conversions in ");Serial.print(t);Serial.println(" micros");
|
||
|
|
//Serial.print("A0 total:");Serial.println(q0);
|
||
|
|
//Serial.print("A1 total:");Serial.println(q1);
|
||
|
|
//Serial.print("A0:");Serial.println("A1:");
|
||
|
|
/*if (firstrun) {
|
||
|
|
for (int i = 0; i < 5000; i++) {
|
||
|
|
if (bufb[i] > 920) { //software trigger
|
||
|
|
if (bufa[i] > 920) { //software trigger
|
||
|
|
//evt++;
|
||
|
|
Serial.print(evt);Serial.print(" Time since last trigger ");Serial.print(t);Serial.println(" micros");
|
||
|
|
//for (int j = i - 10; j < i + 40; j++) {
|
||
|
|
// Serial.print(j); Serial.print("; "); Serial.print(bufa[j]); Serial.print("; "); Serial.print(bufb[j]); Serial.println(";");
|
||
|
|
//}
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
t=micros();
|
||
|
|
}
|
||
|
|
firstrun = 1;
|
||
|
|
*/
|
||
|
|
}
|
||
|
|
|
||
|
|
|