Last active
October 16, 2016 15:05
-
-
Save pingud98/d3c632766526d744041041de45852102 to your computer and use it in GitHub Desktop.
Cosmic Pi Trigger Threshold test
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <Wire.h> | |
//this test works when testing with boards 1 and 2 | |
//set the threshold as a 1 time value, max is 3.3V (voltage reference removed from protos) | |
//crashes due to 50Hz noise | |
//input thresholds not checked 100% | |
//minimum input signal duration 40ns for coincidence. | |
//at 40ns incident coincidence the output lasts for 150ns - plenty for the DUE to capture. | |
//Hardware is more reliable than DUE's noise immunity. | |
//Note the MAX5387LAUD+ doesn't support I2C readback. | |
//detailed threshold calibration could be done, but our signal generator doesn't plug in very well. | |
//using DAC would be a nice option for checking the thresholds. | |
void setup() { | |
// put your setup code here, to run once: | |
pinMode(48, OUTPUT); //used to inject 3.3V signals if required with jumpers | |
pinMode(49, OUTPUT); //used to inject as well | |
pinMode(35, OUTPUT); //setup for the MAX5387 - later set to 0. signal PA0 | |
pinMode(36, OUTPUT);//setup for the MAX5387 - later set to 0. signal PA1 | |
pinMode(37, OUTPUT);//setup for the MAX5387 - later set to 0. signal PA2 | |
pinMode(A1, INPUT); //make sure the input pins are in high impedance mode | |
pinMode(A2, INPUT);//make sure the input pins are in high impedance mode | |
digitalWrite(35, LOW);//configure the address of the MAX5387 pot | |
digitalWrite(36, LOW);//configure the address of the MAX5387 pot | |
digitalWrite(37, LOW);//configure the address of the MAX5387 pot | |
//pinMode(38, INPUT); //optional high impedance mode for strigA - note forcing signal high doesn't really work. | |
//pinMode(39, INPUT);//optional high impedance mode for strigB - note forcing signal high doesn't really work. | |
pinMode(5, INPUT); //set the interrupt pin for trigger as high impedance, probably not required | |
attachInterrupt(38, striga, RISING); //interrupt on STRIGA | |
attachInterrupt(39, strigb, RISING); //interrupt on STRIGB | |
attachInterrupt(5, realint, RISING); //interrupt on the real trigger - note rising, | |
//setup the serial for debug | |
Serial.begin(9600); | |
//setup the MAX5387 pot | |
Wire.begin(); | |
Serial.print("MAX5387 Address "); | |
Serial.print(0x28, HEX); | |
Wire.beginTransmission(byte(0x28)); // transmit to device #112 | |
Wire.write(byte(B00010011)); | |
Wire.write(byte(0x50));// sets register pointer to echo #1 register (0x02) | |
Wire.endTransmission(); // stop transmitting | |
Serial.println("threshold set to 0x50"); //note that this is manually updated by the human! | |
} | |
//interrupt routine for event on STRIGA signal (channel A high) | |
void striga(){ | |
Serial.print("a"); | |
} | |
//interrupt routine for event on STRIGB signal (channel B high) | |
void strigb(){ | |
Serial.println("b"); | |
} | |
//interrupt routine for event on TRIG signal (AND output high) | |
void realint(){ | |
Serial.println("real"); | |
} | |
void loop() { | |
// put your main code here, to run repeatedly: | |
//nothing to do here at the moment. | |
//delay(100); | |
//digitalWrite(48, HIGH); //3.3v signal injections via pins 48 and 49 if required. | |
//digitalWrite(49, HIGH); | |
//digitalWrite(48, LOW); | |
//digitalWrite(49, LOW); | |
//delay(1000); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment