Treehouse Mbed Team / Mbed 2 deprecated APS_DCM1SL

Dependencies:   mbed

src/boards.cpp

Committer:
mfwic
Date:
2018-11-29
Revision:
4:db38665c3727
Parent:
1:9f8583ba2431
Child:
5:09be5bbb5020

File content as of revision 4:db38665c3727:

//-------------------------------------------------------------------------------
// 
//  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;


void delay(long ticks)
{
   long i;
   for(i=0;i<ticks;i++);    
}  

void setBoardEnables(unsigned int enableBits[])
{
   unsigned int i, boardEnable;

   // Default is all boards OFF
   unsigned int boardsEnabled = ALLOFF;

   for (i = 0; i < MAX_BOARDS; i++)
   {
      // 0 == enabled
      boardEnable = (enableBits[i] & (1 << i));
      
   }
      
   wr_out = boardEnable;
   
}

void setBoardWeights(unsigned int enableWeights[])
{
   unsigned int i, boardWeight;

   for (i = 0; i < MAX_BOARDS; i++)
   {
      // 0 == enabled
      boardWeight = (enableWeights[i] & (1 << i));
      
   }
      
   en_out = boardWeight;
   toggleLatchSignal();
   
}

void toggleLatchSignal(void){
    extchlat = OFF;
    extchlat = ON;
    extchlat = OFF;
}
 
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;
   }

}

// start the converter
// RK: ch[i][reg].enabled has not been used correctly yet. Need to modify that code.
void startConverter(unsigned int reg)
{
   
   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!
   setBoardEnables(thermCode);

   //setupRunVoltages();
      
   //currentRegister = reg;

   //pulser.attach_us(&pulserInt, period);    
}   

// stop the converter and set outputs to 0
void stopConverter(void)
{
   //pulser.detach();
   setBoardEnables(ALLOFF);
   running = FALSE;

}

void updateControls(void){
    getLUTcode();
    setBoardEnables(thermCode);
    setBoardWeights(binCode);
}