From b27539a4659fe8ec27c200dd39f9c776d71b38d3 Mon Sep 17 00:00:00 2001 From: James Devine Date: Thu, 4 Jul 2019 20:22:45 +0000 Subject: [PATCH] --- detectorxcal | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 detectorxcal diff --git a/detectorxcal b/detectorxcal new file mode 100644 index 0000000..f7a5aa8 --- /dev/null +++ b/detectorxcal @@ -0,0 +1,129 @@ +//drive the dac channels + +/* + Crude code to get the Cosmic Pi up and running, spits out events (coincidence on both channels, after setting the HV to about 28V + and the DAC to 22F (whatever that is). + Makes the light blink (it's not very bright) and prints the event number. + Rate on the test unit seems reasonable, we'll test this against a proper setup over the next few weeks + To be re-written using interrupts for production code. + */ + +// the setup function runs once when you press reset or power the board +byte smallpart; +byte bigpart; +int x = 0; //cosmic counter + +#include + int HVVal = 0xFE; +void setup() { + // initialize digital pin LED_BUILTIN as an output. + pinMode(PA6, OUTPUT); + pinMode(PA4, OUTPUT); + pinMode(PA5, OUTPUT); + Serial.begin(9600); + +//config SPI pins + pinMode(PC7, OUTPUT); + pinMode(PC8, OUTPUT); + pinMode(PC3, OUTPUT); + pinMode(PB13, OUTPUT); + + //set input pins + pinMode(PC12, INPUT); + pinMode(PC11, INPUT); + pinMode(PB10, INPUT); + + + + digitalWrite(PC7, LOW); + setHV(0xAD); + digitalWrite(PC7, HIGH); + + digitalWrite(PC8, LOW); + setHV(0xAD); + digitalWrite(PC8, HIGH); + HVVal= HVVal+10; + + Wire.setSDA(PB7); + Wire.setSCL(PB8); + Wire.begin(); +smallpart = 0x2F; //the lsb part +bigpart = 0x02; // the msb part of the dac value + + Serial.write("Hello "); +// Serial.write(HVVal); + + //digitalWrite(PA5, HIGH); // turn the LED on (HIGH is the voltage level) + delay(1000); // wait for a second + digitalWrite(PA5, LOW); // turn the LED off by making the voltage LOW + //delay(10000); + +int address = 0x60; + + + Wire.beginTransmission(address); + Wire.write(B00001000); // sends five bytes + Wire.write(bigpart); // sends one byte + Wire.write(smallpart); + Wire.endTransmission(); + + Wire.beginTransmission(address); + Wire.write(B00000000); // sends five bytes + Wire.write(bigpart); // sends one byte + Wire.write(smallpart); + Wire.endTransmission(); + + + Serial.write("transmitted "); + + Serial.write(" looping "); + +} + +// the loop function runs over and over again forever + +void loop() { + + + //debounce loop + if (digitalRead(PB10) == 0) { + //Serial.write("0"); + if (digitalRead(PB10) == 1) { + //low to high print x + //Serial.write("x"); + Serial.println(x); + x++; + digitalWrite(PA5, HIGH); + delay(200); + digitalWrite(PA5, LOW); + } + } + + /*if PC11 == LOW { + Serial.write("1"); + + if PC11 == HIGH { + //low to high print x + Serial.write("y"); + } + } + */ +//smallpart--; +} + +// set the two HV supplies +byte setHV(byte _send) // This function is what bitbangs the data +{ + for(int i=0; i<8; i++) // There are 8 bits in a byte + { + digitalWrite(PC3, bitRead(_send, 7-i)); // Set MOSI + //delay(1); + digitalWrite(PB13, HIGH); // SCK high + //bitWrite(_receive, i, digitalRead(MISO_pin)); // Capture MISO + digitalWrite(PB13, LOW); // SCK low + //digitalWrite(MOSI_pin, LOW); // Set MOSI + + } + //digitalWrite(SS_pin[j], HIGH); // SS high again + } + //return _receive; // Return the received data \ No newline at end of file