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
src/boards.cpp
- Committer:
- mfwic
- Date:
- 2018-12-03
- Revision:
- 6:39442d493098
- Parent:
- 5:09be5bbb5020
- Child:
- 8:d3d7dca419b3
File content as of revision 6:39442d493098:
//-------------------------------------------------------------------------------
//
// 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 "boards.h"
#include "all_io.h"
#include "serial.h"
#include "stdio.h"
#include "parameters.h"
#include "lut.h"
unsigned int boardEnableBits;
/*******************************************************************************
delay
*******************************************************************************/
void delay(long ticks)
{
long i;
for(i=0;i<ticks;i++);
}
/*******************************************************************************
setBoardEnables
*******************************************************************************/
//void setBoardEnables(unsigned int enableBits[])
unsigned int setBoardEnables(unsigned int tCode)
{
unsigned int i = 0;
unsigned int boardTcode = 0;
// Default is all boards OFF
//unsigned int boardTcode = ALLOFF;
dec2therm_fix(tCode, (unsigned int)BOARDS_THERMCODE_WIDTH);
for (i = 0; i < MAX_BOARDS; i++){
// 0 == enabled
boardTcode = (thermCode[i] & (1 << i));
}
//wr_out = boardTcode;
wr_out = tCode;
//return boardTcode;
return tCode;
}
/*******************************************************************************
setBoardWeights
*******************************************************************************/
//void setBoardWeights(unsigned int enableWeights[])
unsigned int setBoardWeights(unsigned int bCode)
{
unsigned int i = 0;
unsigned int boardBcode = 0;
dec2bin_fix(bCode, WEIGHT_BIN_WIDTH);
for (i = 0; i <= WEIGHT_BIN_WIDTH; i++){
// 0 == enabled
boardBcode = (binCode[i] & (1 << i));
}
//en_out = boardBcode;
en_out = bCode;
toggleLatchSignal();
//return boardBcode;
return bCode;
}
/*******************************************************************************
toggleLatchSignal
*******************************************************************************/
void toggleLatchSignal(void){
extchlat = OFF;
extchlat = ON;
extchlat = OFF;
}
/*******************************************************************************
initDACs
*******************************************************************************/
void initDACs(void)
{
//setupDacInit();
//sendDACs(dinitbits);
}
/************************************************************
* 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{
showRangeError(0, 0, setvalue);
return 0;
}
}
/*******************************************************************************
startConverter
*******************************************************************************/
// RK: ch[i][reg].enabled has not been used correctly yet. Need to modify that code.
void startConverter(unsigned int reg)
{
//unsigned int i;
//float period;
running = TRUE;
//unsigned int boardsEnabled = 0;
//char stemp[50];
//for (i = 0; i < MAX_BOARDS; i++){
// //if (ch[i][reg].enabled == 1)
// //{
// // Set the corresponding bit
// boardsEnabled |= (1 << i);
//
// sprintf(stemp, "\n\rBoard %d RUNNING", i + 1);
// sendSerial(stemp);
// //}
//}
// Invert the bits because 0 == enabled on the SPI write
//boardsEnabled = ~boardsEnabled;
// Fire in the hole!
wr_out_code = setBoardEnables(reg);
sprintf(strbuf, "\r\nConverter started");
sendSerial(strbuf);
//setupRunVoltages();
//currentRegister = reg;
//pulser.attach_us(&pulserInt, period);
}
/*******************************************************************************
stopConverter - stop the converter and set outputs to 0
*******************************************************************************/
void stopConverter(void)
{
//pulser.detach();
wr_out_code = setBoardEnables(ALLOFF);
//setBoardEnables((unsigned int *)alloff);
running = FALSE;
sprintf(strbuf, "\r\nConverter stopped");
sendSerial(strbuf);
}
/*******************************************************************************
updateControls
*******************************************************************************/
void updateControls(unsigned short ref){
//getLUTcode(i12);
//getLUTcode(my12);
unsigned int cBuf = getLUT_thermCode(ref);
wr_out_code = setBoardEnables(cBuf);
cBuf = getLUT_binCode(ref);
en_out_code = setBoardWeights(cBuf);
}