commit e5466cc1c590fd4c9c88aa6e76f2d0a641bed052 Author: James Devine Date: Tue Dec 20 21:59:11 2016 +0100 diff --git a/CosmicChannel0read b/CosmicChannel0read new file mode 100644 index 0000000..8e5f41d --- /dev/null +++ b/CosmicChannel0read @@ -0,0 +1,82 @@ +unsigned long start_time; +unsigned long stop_time; +unsigned long values[1000]; +const int SS_pin = 42; //tbc +const int SCK_pin = 44; +const int MISO_pin = 22; +const int MOSI_pin = 43; + +String intextbuf; +String extextbuf; +byte sendValue = 0xFF; // Value we are going to send +byte returnValue = 0; // Where we will store the value sent by the slave + + + +void setup() { + + digitalWrite(SS, HIGH); // Start with SS high + pinMode(SS_pin, OUTPUT); + pinMode(SCK_pin, OUTPUT); + pinMode(MISO_pin, INPUT); //this is the avalanche pin, not implemented yet + pinMode(MOSI_pin, OUTPUT); + + Serial.begin(115200); + + REG_ADC_MR = 0x10380080; // Free run as fast as you can + REG_ADC_CHER = 3; // Channels 0 and 1 + REG_ADC_CR = 2; // Start + Serial.print("Alive HV:"); + sendValue = 0x50; +Serial.println(sendValue); +returnValue = bitBang(sendValue); // Transmit data + +} + +void loop() { + unsigned int i; + //reads in on channel 0 + + start_time = micros(); + for(i=0;i<1000;i++){ + //while((ADC->ADC_ISR & 0x01)==0);; // wait for conversion + //values[i]=ADC->ADC_CDR[0];//reads ch 0 only + while((ADC->ADC_ISR & 0x02)==0); + values[i]=ADC->ADC_CDR[1];//get values + } + stop_time = micros(); + + Serial.print("Total time: "); + Serial.println(stop_time-start_time); + Serial.print("Average time per conversion: "); + Serial.println((float)(stop_time-start_time)/1000); + + Serial.println("Values: "); + for(i=0;i<1000;i++) { + Serial.println(values[i]); + } + + delay(2000); +} + + +byte bitBang(byte _send) // This function is what bitbangs the data +{ + + //reception isn't implemented in this version. + byte _receive = 0; + digitalWrite(SS_pin, LOW); // SS low + for(int i=0; i<8; i++) // There are 8 bits in a byte + { + digitalWrite(MOSI_pin, bitRead(_send, 7-i)); // Set MOSI + //delay(1); + digitalWrite(SCK_pin, HIGH); // SCK high + //bitWrite(_receive, i, digitalRead(MISO_pin)); // Capture MISO + digitalWrite(SCK_pin, LOW); // SCK low + //digitalWrite(MOSI_pin, LOW); // Set MOSI + + } + digitalWrite(SS_pin, HIGH); // SS high again + + //return _receive; // Return the received data +} \ No newline at end of file