Hardware IO control: mirrors, lock in

Committer:
mbedalvaro
Date:
Mon Oct 17 13:23:06 2011 +0000
Revision:
0:c19dc1d8b225
I wonder if perhaps it would be better to avoid a hardwareIO object, and instead have a set of global hardware functions... I think I will do this in the next revisions of this library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbedalvaro 0:c19dc1d8b225 1 #include "hardwareIO.h"
mbedalvaro 0:c19dc1d8b225 2
mbedalvaro 0:c19dc1d8b225 3 HardwareIO IO; // preintantiation of cross-file global object IO
mbedalvaro 0:c19dc1d8b225 4
mbedalvaro 0:c19dc1d8b225 5 // -------------------------------------- (0) SETUP ALL IO (call this in the setup() function in main program)
mbedalvaro 0:c19dc1d8b225 6
mbedalvaro 0:c19dc1d8b225 7 Serial pc(USBTX, USBRX); // tx, rx
mbedalvaro 0:c19dc1d8b225 8
mbedalvaro 0:c19dc1d8b225 9 SPI spiDAC(MOSI_PIN, MISO_PIN, SCK_PIN); // mosi, miso, sclk
mbedalvaro 0:c19dc1d8b225 10 DigitalOut csDAC(CS_DAC_MIRRORS);
mbedalvaro 0:c19dc1d8b225 11
mbedalvaro 0:c19dc1d8b225 12 DigitalOut Laser_Red(LASER_RED_PIN);
mbedalvaro 0:c19dc1d8b225 13 DigitalOut Laser_Green(LASER_GREEN_PIN);
mbedalvaro 0:c19dc1d8b225 14 DigitalOut Laser_Blue(LASER_BLUE_PIN);
mbedalvaro 0:c19dc1d8b225 15
mbedalvaro 0:c19dc1d8b225 16 void HardwareIO::init(void) {
mbedalvaro 0:c19dc1d8b225 17 Laser_Red = 1;
mbedalvaro 0:c19dc1d8b225 18 Laser_Green = 0;
mbedalvaro 0:c19dc1d8b225 19 Laser_Blue = 0;
mbedalvaro 0:c19dc1d8b225 20
mbedalvaro 0:c19dc1d8b225 21 //Serial Communication setup:
mbedalvaro 0:c19dc1d8b225 22 pc.baud(115200);//921600);
mbedalvaro 0:c19dc1d8b225 23
mbedalvaro 0:c19dc1d8b225 24 // Setup for lock-in amplifier and pwm references:
mbedalvaro 0:c19dc1d8b225 25 lockin.init();
mbedalvaro 0:c19dc1d8b225 26
mbedalvaro 0:c19dc1d8b225 27 // Setup the spi for 8 bit data, high steady state clock,
mbedalvaro 0:c19dc1d8b225 28 // second edge capture, with a 10MHz clock rate
mbedalvaro 0:c19dc1d8b225 29 csDAC = 1;
mbedalvaro 0:c19dc1d8b225 30 spiDAC.format(16,0);
mbedalvaro 0:c19dc1d8b225 31 spiDAC.frequency(16000000);
mbedalvaro 0:c19dc1d8b225 32
mbedalvaro 0:c19dc1d8b225 33 // default initial mirror position:
mbedalvaro 0:c19dc1d8b225 34 writeOutX(CENTER_AD_MIRROR_X);
mbedalvaro 0:c19dc1d8b225 35 writeOutY(CENTER_AD_MIRROR_Y);
mbedalvaro 0:c19dc1d8b225 36 }
mbedalvaro 0:c19dc1d8b225 37
mbedalvaro 0:c19dc1d8b225 38 //write on the first DAC, output A (mirror X)
mbedalvaro 0:c19dc1d8b225 39 void HardwareIO::writeOutX(int value){
mbedalvaro 0:c19dc1d8b225 40 if(value > MAX_AD_MIRRORS) value = MAX_AD_MIRRORS;
mbedalvaro 0:c19dc1d8b225 41 if(value < MIN_AD_MIRRORS) value = MIN_AD_MIRRORS;
mbedalvaro 0:c19dc1d8b225 42
mbedalvaro 0:c19dc1d8b225 43 value |= 0x7000;
mbedalvaro 0:c19dc1d8b225 44 value &= 0x7FFF;
mbedalvaro 0:c19dc1d8b225 45
mbedalvaro 0:c19dc1d8b225 46 csDAC = 0;
mbedalvaro 0:c19dc1d8b225 47 spiDAC.write(value);
mbedalvaro 0:c19dc1d8b225 48 csDAC = 1;
mbedalvaro 0:c19dc1d8b225 49 }
mbedalvaro 0:c19dc1d8b225 50
mbedalvaro 0:c19dc1d8b225 51 //write on the first DAC, output B (mirror Y)
mbedalvaro 0:c19dc1d8b225 52 void HardwareIO::writeOutY(int value){
mbedalvaro 0:c19dc1d8b225 53 if(value > MAX_AD_MIRRORS) value = MAX_AD_MIRRORS;
mbedalvaro 0:c19dc1d8b225 54 if(value < MIN_AD_MIRRORS) value = MIN_AD_MIRRORS;
mbedalvaro 0:c19dc1d8b225 55
mbedalvaro 0:c19dc1d8b225 56 value |= 0xF000;
mbedalvaro 0:c19dc1d8b225 57 value &= 0xFFFF;
mbedalvaro 0:c19dc1d8b225 58
mbedalvaro 0:c19dc1d8b225 59 csDAC = 0;
mbedalvaro 0:c19dc1d8b225 60 spiDAC.write(value);
mbedalvaro 0:c19dc1d8b225 61 csDAC = 1;
mbedalvaro 0:c19dc1d8b225 62 }
mbedalvaro 0:c19dc1d8b225 63
mbedalvaro 0:c19dc1d8b225 64 void HardwareIO::setRedPower(int powerValue){
mbedalvaro 0:c19dc1d8b225 65 if(powerValue > 0){
mbedalvaro 0:c19dc1d8b225 66 lockin.setLaserPower(true);
mbedalvaro 0:c19dc1d8b225 67 }
mbedalvaro 0:c19dc1d8b225 68 else{
mbedalvaro 0:c19dc1d8b225 69 lockin.setLaserPower(false);
mbedalvaro 0:c19dc1d8b225 70 }
mbedalvaro 0:c19dc1d8b225 71 }
mbedalvaro 0:c19dc1d8b225 72 void HardwareIO::setGreenPower(int powerValue){
mbedalvaro 0:c19dc1d8b225 73 if(powerValue > 0){
mbedalvaro 0:c19dc1d8b225 74 Laser_Green = 1;
mbedalvaro 0:c19dc1d8b225 75 }
mbedalvaro 0:c19dc1d8b225 76 else{
mbedalvaro 0:c19dc1d8b225 77 Laser_Green = 0;
mbedalvaro 0:c19dc1d8b225 78 }
mbedalvaro 0:c19dc1d8b225 79 }
mbedalvaro 0:c19dc1d8b225 80 void HardwareIO::setBluePower(int powerValue){
mbedalvaro 0:c19dc1d8b225 81 if(powerValue > 0){
mbedalvaro 0:c19dc1d8b225 82 Laser_Blue = 1;
mbedalvaro 0:c19dc1d8b225 83 }
mbedalvaro 0:c19dc1d8b225 84 else{
mbedalvaro 0:c19dc1d8b225 85 Laser_Blue = 0;
mbedalvaro 0:c19dc1d8b225 86 }
mbedalvaro 0:c19dc1d8b225 87 }