Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Diff: src/boards.cpp
- Revision:
- 42:3ae73b61f657
- Child:
- 43:291bbdba48f3
diff -r bd54c88e3334 -r 3ae73b61f657 src/boards.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/boards.cpp Sat Mar 09 21:01:45 2019 +0000 @@ -0,0 +1,234 @@ +//------------------------------------------------------------------------------- +// +// Treehouse Designs Inc. +// Colorado Springs, Colorado +// +// Copyright (c) 2016 by Treehouse Designs Inc. +// Copyright (c) 2018 by Agility Power Systems Inc. +// +// This code is the property of Treehouse Designs, Inc. (Treehouse) and +// Agility Power Systems Inc. (Agility) and may not be redistributed +// in any form without prior written permission from +// both copyright holders, Treehouse and Agility. +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// +//------------------------------------------------------------------------------- +// +// REVISION HISTORY: +// +// $Author: $ +// $Rev: $ +// $Date: $ +// $URL: $ +// +//------------------------------------------------------------------------------- + +#include "mbed.h" +#include "globals.h" +#include "parameters.h" +#include "boards.h" +#include "lut.h" +#include "all_io.h" +#include "serial.h" +#include "stdio.h" + +unsigned int boardEnableBits; + +void initBoards(struct adcValues adcVals){ + //en_out = 32; + setBoardEnables(16383); + +} + +/******************************************************************************* +delay +*******************************************************************************/ +void delay(long ticks) +{ + long i; + for(i=0;i<ticks;i++); +} + +/******************************************************************************* +setBoardControls +*******************************************************************************/ +void setBoardControls(unsigned int tCode) +{ + for(unsigned int b=0; b<max_boards; b++){ + //wr_out = 0; + //en_out_code = bCodeRow[b]; + + //wr_out_code = 1<<b; + //wr_out = ~wr_out_code; + //en_out = en_out_code; + + wait_us(250); + } + for(unsigned int b=max_boards; b<13; b++){ + + //wr_out_code = 1<<b; + //wr_out = ~wr_out_code; + //en_out = 0; + + wait_us(250); + } +} + +/******************************************************************************* +setBoardEnables +*******************************************************************************/ +unsigned int setBoardEnables(unsigned int tCode) +{ + //wr_out = tCode; + //unsigned int en_out_save = en_out; + //en_out = 0; + //wr_out = ~tCode; + //en_out = en_out_save; + return tCode; +} + +/******************************************************************************* +setBoardWeights +*******************************************************************************/ +unsigned int setBoardWeights(unsigned int bCode) +{ + //en_out = bCode; + toggleLatchSignal(); + return bCode; +} + +/******************************************************************************* +toggleLatchSignal +*******************************************************************************/ +void toggleLatchSignal(void){ + //extchlat = OFF; + //extchlat = ON; + //extchlat = OFF; +} + +/************************************************************ +* Routine: checkRange +* Input: setval +* limlo -- low limit +* limhi -- high limit +* Returns: 1 if entry validates and is written +* 0 if entry fails +* -1 if it slips past +* Description: +* Checks if setvalue is between the given limits. +* +**************************************************************/ +int checkRange(int setvalue, int limlo, int limhi) +{ + if ((setvalue >= limlo) && (setvalue <= limhi)){ + return 1; + }else{ + return 0; + } +} + +/******************************************************************************* +startConverter +*******************************************************************************/ +void startConverter(unsigned int reg) +{ + if(!running){ + running = TRUE; + // Fire in the hole! + //wr_out_code = setBoardEnables(reg); + + sprintf(strbuf, "\r\nConverter started"); + sendSerial(strbuf); + } +} + +/******************************************************************************* +stopConverter - stop the converter and set outputs to 0 +*******************************************************************************/ +void stopConverter(void) +{ + if(running){ + //en_out = 32; + //wr_out_code = setBoardEnables(ALLON); + running = FALSE; + sprintf(strbuf, "\r\nConverter stopped"); + sendSerial(strbuf); + } +} + +/******************************************************************************* +checkLevels +*******************************************************************************/ +struct statusValues checkLevels(struct adcValues adcVals){ + + struct statusValues statVals; + + // Check 48V levels + if(adcVals.v48 > V48_HI){ + statVals.V48_IS_HI = TRUE; + statVals.V48_IS_LO = FALSE; + }else if(adcVals.v48 < V48_LO){ + statVals.V48_IS_HI = FALSE; + statVals.V48_IS_LO = TRUE; + }else{ + statVals.V48_IS_HI = FALSE; + statVals.V48_IS_LO = FALSE; + } + + // Check 12V levels + if(adcVals.v12 > V12_HI){ + statVals.V12_IS_HI = TRUE; + statVals.V12_IS_LO = FALSE; + }else if(adcVals.v12 < V12_LO){ + statVals.V12_IS_HI = FALSE; + statVals.V12_IS_LO = TRUE; + }else{ + statVals.V12_IS_HI = FALSE; + statVals.V12_IS_LO = FALSE; + } + return statVals; +} + + +/******************************************************************************* +updateControls +*******************************************************************************/ +void updateControls(unsigned short ref){ + + unsigned int tBuf = getLUT_thermCode(ref); + if(max_boards <= 3){ + getLUT_binCodeArray(ref); + setBoardControls(tBuf); + }else{ + wr_out_code = setBoardEnables(tBuf); + unsigned int bBuf = getLUT_binCode(ref); + en_out_code = setBoardWeights(bBuf); + } +} + +void XupdateControls(unsigned short ref){ + + sprintf(strbuf, "refr=%d\r\n", ref); + sendSerial(strbuf); + + ref = ref/64; + + sprintf(strbuf, "refc=%d\r\n", ref); + sendSerial(strbuf); + + sendSerial("enter updateControls\r\n"); + unsigned int cBuf = getLUT_thermCode(ref); + sendSerial("cBuf1 updateControls\r\n"); + wr_out_code = setBoardEnables(cBuf); + sendSerial("wr_out_code updateControls\r\n"); + + cBuf = getLUT_binCode(ref); + sendSerial("cBuf2 updateControls\r\n"); + en_out_code = setBoardWeights(cBuf); + sendSerial("en_out_code updateControls\r\n"); + + wait(0.5); +} \ No newline at end of file