Treehouse Mbed Team / Mbed 2 deprecated APS_DCM1SL

Dependencies:   mbed

Committer:
mfwic
Date:
Fri Dec 07 17:39:01 2018 +0000
Revision:
10:6c3233b03658
Parent:
9:816b9a4e4f21
Child:
11:01dcfb29fbc4
Fixed LUT for row values >= 332. It was due to the code that was meant to convert from decimal to thermometer code. The LUT has the thermometer code in it so no conversion necessar; Added individual voltage correction factors for the 3 input voltages.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mfwic 0:44a3005d4f20 1 //-------------------------------------------------------------------------------
mfwic 0:44a3005d4f20 2 //
mfwic 0:44a3005d4f20 3 // Treehouse Designs Inc.
mfwic 0:44a3005d4f20 4 // Colorado Springs, Colorado
mfwic 0:44a3005d4f20 5 //
mfwic 0:44a3005d4f20 6 // Copyright (c) 2016 by Treehouse Designs Inc.
mfwic 0:44a3005d4f20 7 // Copyright (c) 2018 by Agility Power Systems Inc.
mfwic 0:44a3005d4f20 8 //
mfwic 0:44a3005d4f20 9 // This code is the property of Treehouse Designs, Inc. (Treehouse) and
mfwic 0:44a3005d4f20 10 // Agility Power Systems Inc. (Agility) and may not be redistributed
mfwic 0:44a3005d4f20 11 // in any form without prior written permission from
mfwic 0:44a3005d4f20 12 // both copyright holders, Treehouse and Agility.
mfwic 0:44a3005d4f20 13 //
mfwic 0:44a3005d4f20 14 // The above copyright notice and this permission notice shall be included in
mfwic 0:44a3005d4f20 15 // all copies or substantial portions of the Software.
mfwic 0:44a3005d4f20 16 //
mfwic 0:44a3005d4f20 17 //
mfwic 0:44a3005d4f20 18 //-------------------------------------------------------------------------------
mfwic 0:44a3005d4f20 19 //
mfwic 0:44a3005d4f20 20 // REVISION HISTORY:
mfwic 0:44a3005d4f20 21 //
mfwic 0:44a3005d4f20 22 // $Author: $
mfwic 0:44a3005d4f20 23 // $Rev: $
mfwic 0:44a3005d4f20 24 // $Date: $
mfwic 0:44a3005d4f20 25 // $URL: $
mfwic 0:44a3005d4f20 26 //
mfwic 0:44a3005d4f20 27 //-------------------------------------------------------------------------------
mfwic 0:44a3005d4f20 28
mfwic 0:44a3005d4f20 29 #include "mbed.h"
mfwic 0:44a3005d4f20 30 #include "globals.h"
mfwic 0:44a3005d4f20 31 #include "boards.h"
mfwic 0:44a3005d4f20 32 #include "all_io.h"
mfwic 0:44a3005d4f20 33 #include "serial.h"
mfwic 0:44a3005d4f20 34 #include "stdio.h"
mfwic 0:44a3005d4f20 35 #include "parameters.h"
mfwic 4:db38665c3727 36 #include "lut.h"
mfwic 0:44a3005d4f20 37
mfwic 0:44a3005d4f20 38 unsigned int boardEnableBits;
mfwic 0:44a3005d4f20 39
mfwic 6:39442d493098 40 /*******************************************************************************
mfwic 6:39442d493098 41 delay
mfwic 6:39442d493098 42 *******************************************************************************/
mfwic 0:44a3005d4f20 43 void delay(long ticks)
mfwic 0:44a3005d4f20 44 {
mfwic 0:44a3005d4f20 45 long i;
mfwic 0:44a3005d4f20 46 for(i=0;i<ticks;i++);
mfwic 0:44a3005d4f20 47 }
mfwic 0:44a3005d4f20 48
mfwic 6:39442d493098 49 /*******************************************************************************
mfwic 6:39442d493098 50 setBoardEnables
mfwic 6:39442d493098 51 *******************************************************************************/
mfwic 6:39442d493098 52 //void setBoardEnables(unsigned int enableBits[])
mfwic 6:39442d493098 53 unsigned int setBoardEnables(unsigned int tCode)
mfwic 0:44a3005d4f20 54 {
mfwic 8:d3d7dca419b3 55 //unsigned int i = 0;
mfwic 8:d3d7dca419b3 56 //unsigned int boardTcode = 0;
mfwic 0:44a3005d4f20 57 // Default is all boards OFF
mfwic 6:39442d493098 58 //unsigned int boardTcode = ALLOFF;
mfwic 6:39442d493098 59
mfwic 10:6c3233b03658 60 //dec2therm_fix(tCode, (unsigned int)BOARDS_THERMCODE_WIDTH);
mfwic 6:39442d493098 61
mfwic 8:d3d7dca419b3 62 //for (i = 0; i < MAX_BOARDS; i++){
mfwic 8:d3d7dca419b3 63 // // 0 == enabled
mfwic 8:d3d7dca419b3 64 // boardTcode = (thermCode[i] & (1 << i));
mfwic 8:d3d7dca419b3 65 //}
mfwic 6:39442d493098 66
mfwic 6:39442d493098 67 //wr_out = boardTcode;
mfwic 6:39442d493098 68 wr_out = tCode;
mfwic 6:39442d493098 69 //return boardTcode;
mfwic 6:39442d493098 70 return tCode;
mfwic 0:44a3005d4f20 71 }
mfwic 0:44a3005d4f20 72
mfwic 6:39442d493098 73 /*******************************************************************************
mfwic 6:39442d493098 74 setBoardWeights
mfwic 6:39442d493098 75 *******************************************************************************/
mfwic 6:39442d493098 76 //void setBoardWeights(unsigned int enableWeights[])
mfwic 6:39442d493098 77 unsigned int setBoardWeights(unsigned int bCode)
mfwic 0:44a3005d4f20 78 {
mfwic 8:d3d7dca419b3 79 //unsigned int i = 0;
mfwic 8:d3d7dca419b3 80 //unsigned int boardBcode = 0;
mfwic 6:39442d493098 81
mfwic 10:6c3233b03658 82 //dec2bin_fix(bCode, WEIGHT_BIN_WIDTH);
mfwic 0:44a3005d4f20 83
mfwic 8:d3d7dca419b3 84 //for (i = 0; i <= WEIGHT_BIN_WIDTH; i++){
mfwic 8:d3d7dca419b3 85 // // 0 == enabled
mfwic 8:d3d7dca419b3 86 // boardBcode = (binCode[i] & (1 << i));
mfwic 8:d3d7dca419b3 87 //}
mfwic 6:39442d493098 88 //en_out = boardBcode;
mfwic 6:39442d493098 89 en_out = bCode;
mfwic 0:44a3005d4f20 90 toggleLatchSignal();
mfwic 6:39442d493098 91 //return boardBcode;
mfwic 6:39442d493098 92 return bCode;
mfwic 0:44a3005d4f20 93 }
mfwic 0:44a3005d4f20 94
mfwic 6:39442d493098 95 /*******************************************************************************
mfwic 6:39442d493098 96 toggleLatchSignal
mfwic 6:39442d493098 97 *******************************************************************************/
mfwic 0:44a3005d4f20 98 void toggleLatchSignal(void){
mfwic 0:44a3005d4f20 99 extchlat = OFF;
mfwic 0:44a3005d4f20 100 extchlat = ON;
mfwic 0:44a3005d4f20 101 extchlat = OFF;
mfwic 0:44a3005d4f20 102 }
mfwic 6:39442d493098 103
mfwic 6:39442d493098 104 /*******************************************************************************
mfwic 6:39442d493098 105 initDACs
mfwic 6:39442d493098 106 *******************************************************************************/
mfwic 0:44a3005d4f20 107 void initDACs(void)
mfwic 0:44a3005d4f20 108 {
mfwic 1:9f8583ba2431 109 //setupDacInit();
mfwic 1:9f8583ba2431 110 //sendDACs(dinitbits);
mfwic 0:44a3005d4f20 111 }
mfwic 1:9f8583ba2431 112
mfwic 1:9f8583ba2431 113 /************************************************************
mfwic 1:9f8583ba2431 114 * Routine: checkRange
mfwic 1:9f8583ba2431 115 * Input: setval
mfwic 1:9f8583ba2431 116 * limlo -- low limit
mfwic 1:9f8583ba2431 117 * limhi -- high limit
mfwic 1:9f8583ba2431 118 * Returns: 1 if entry validates and is written
mfwic 1:9f8583ba2431 119 * 0 if entry fails
mfwic 1:9f8583ba2431 120 * -1 if it slips past
mfwic 1:9f8583ba2431 121 * Description:
mfwic 1:9f8583ba2431 122 * Checks if setvalue is between the given limits.
mfwic 1:9f8583ba2431 123 *
mfwic 1:9f8583ba2431 124 **************************************************************/
mfwic 1:9f8583ba2431 125 int checkRange(int setvalue, int limlo, int limhi)
mfwic 1:9f8583ba2431 126 {
mfwic 6:39442d493098 127 if ((setvalue >= limlo) && (setvalue <= limhi)){
mfwic 1:9f8583ba2431 128 return 1;
mfwic 6:39442d493098 129 }else{
mfwic 1:9f8583ba2431 130 showRangeError(0, 0, setvalue);
mfwic 1:9f8583ba2431 131 return 0;
mfwic 1:9f8583ba2431 132 }
mfwic 4:db38665c3727 133 }
mfwic 4:db38665c3727 134
mfwic 6:39442d493098 135 /*******************************************************************************
mfwic 6:39442d493098 136 startConverter
mfwic 6:39442d493098 137 *******************************************************************************/
mfwic 4:db38665c3727 138 // RK: ch[i][reg].enabled has not been used correctly yet. Need to modify that code.
mfwic 4:db38665c3727 139 void startConverter(unsigned int reg)
mfwic 4:db38665c3727 140 {
mfwic 6:39442d493098 141 //unsigned int i;
mfwic 4:db38665c3727 142 //float period;
mfwic 4:db38665c3727 143 running = TRUE;
mfwic 4:db38665c3727 144
mfwic 6:39442d493098 145 //unsigned int boardsEnabled = 0;
mfwic 6:39442d493098 146 //char stemp[50];
mfwic 4:db38665c3727 147
mfwic 6:39442d493098 148 //for (i = 0; i < MAX_BOARDS; i++){
mfwic 6:39442d493098 149 // //if (ch[i][reg].enabled == 1)
mfwic 6:39442d493098 150 // //{
mfwic 6:39442d493098 151 // // Set the corresponding bit
mfwic 6:39442d493098 152 // boardsEnabled |= (1 << i);
mfwic 6:39442d493098 153 //
mfwic 6:39442d493098 154 // sprintf(stemp, "\n\rBoard %d RUNNING", i + 1);
mfwic 6:39442d493098 155 // sendSerial(stemp);
mfwic 6:39442d493098 156 // //}
mfwic 6:39442d493098 157 //}
mfwic 4:db38665c3727 158 // Invert the bits because 0 == enabled on the SPI write
mfwic 4:db38665c3727 159 //boardsEnabled = ~boardsEnabled;
mfwic 4:db38665c3727 160
mfwic 4:db38665c3727 161 // Fire in the hole!
mfwic 6:39442d493098 162 wr_out_code = setBoardEnables(reg);
mfwic 6:39442d493098 163
mfwic 6:39442d493098 164 sprintf(strbuf, "\r\nConverter started");
mfwic 6:39442d493098 165 sendSerial(strbuf);
mfwic 4:db38665c3727 166
mfwic 4:db38665c3727 167 //setupRunVoltages();
mfwic 4:db38665c3727 168 //currentRegister = reg;
mfwic 4:db38665c3727 169 //pulser.attach_us(&pulserInt, period);
mfwic 4:db38665c3727 170 }
mfwic 4:db38665c3727 171
mfwic 6:39442d493098 172 /*******************************************************************************
mfwic 6:39442d493098 173 stopConverter - stop the converter and set outputs to 0
mfwic 6:39442d493098 174 *******************************************************************************/
mfwic 4:db38665c3727 175 void stopConverter(void)
mfwic 4:db38665c3727 176 {
mfwic 4:db38665c3727 177 //pulser.detach();
mfwic 6:39442d493098 178 wr_out_code = setBoardEnables(ALLOFF);
mfwic 6:39442d493098 179 //setBoardEnables((unsigned int *)alloff);
mfwic 4:db38665c3727 180 running = FALSE;
mfwic 6:39442d493098 181 sprintf(strbuf, "\r\nConverter stopped");
mfwic 6:39442d493098 182 sendSerial(strbuf);
mfwic 4:db38665c3727 183 }
mfwic 4:db38665c3727 184
mfwic 6:39442d493098 185 /*******************************************************************************
mfwic 6:39442d493098 186 updateControls
mfwic 6:39442d493098 187 *******************************************************************************/
mfwic 6:39442d493098 188 void updateControls(unsigned short ref){
mfwic 5:09be5bbb5020 189 //getLUTcode(i12);
mfwic 6:39442d493098 190 //getLUTcode(my12);
mfwic 9:816b9a4e4f21 191
mfwic 9:816b9a4e4f21 192 ref = ref/ADC_RESULT_SCALE_FACTOR;
mfwic 9:816b9a4e4f21 193
mfwic 6:39442d493098 194 unsigned int cBuf = getLUT_thermCode(ref);
mfwic 6:39442d493098 195 wr_out_code = setBoardEnables(cBuf);
mfwic 6:39442d493098 196
mfwic 6:39442d493098 197 cBuf = getLUT_binCode(ref);
mfwic 6:39442d493098 198 en_out_code = setBoardWeights(cBuf);
mfwic 9:816b9a4e4f21 199 }
mfwic 9:816b9a4e4f21 200
mfwic 9:816b9a4e4f21 201 void XupdateControls(unsigned short ref){
mfwic 9:816b9a4e4f21 202 //getLUTcode(i12);
mfwic 9:816b9a4e4f21 203 //getLUTcode(my12);
mfwic 9:816b9a4e4f21 204 sprintf(strbuf, "refr=%d\r\n", ref);
mfwic 9:816b9a4e4f21 205 sendSerial(strbuf);
mfwic 9:816b9a4e4f21 206
mfwic 9:816b9a4e4f21 207 ref = ref/64;
mfwic 9:816b9a4e4f21 208
mfwic 9:816b9a4e4f21 209 sprintf(strbuf, "refc=%d\r\n", ref);
mfwic 9:816b9a4e4f21 210 sendSerial(strbuf);
mfwic 9:816b9a4e4f21 211
mfwic 9:816b9a4e4f21 212 sendSerial("enter updateControls\r\n");
mfwic 9:816b9a4e4f21 213 unsigned int cBuf = getLUT_thermCode(ref);
mfwic 9:816b9a4e4f21 214 sendSerial("cBuf1 updateControls\r\n");
mfwic 9:816b9a4e4f21 215 wr_out_code = setBoardEnables(cBuf);
mfwic 9:816b9a4e4f21 216 sendSerial("wr_out_code updateControls\r\n");
mfwic 9:816b9a4e4f21 217
mfwic 9:816b9a4e4f21 218 cBuf = getLUT_binCode(ref);
mfwic 9:816b9a4e4f21 219 sendSerial("cBuf2 updateControls\r\n");
mfwic 9:816b9a4e4f21 220 en_out_code = setBoardWeights(cBuf);
mfwic 9:816b9a4e4f21 221 sendSerial("en_out_code updateControls\r\n");
mfwic 9:816b9a4e4f21 222
mfwic 9:816b9a4e4f21 223 wait(0.5);
mfwic 1:9f8583ba2431 224 }