1
Dependencies: mbed Watchdog V2_heater_test MODSERIAL FastPWM ADS8568_ADC
main.cpp
- Committer:
- seoirsem
- Date:
- 2019-08-12
- Revision:
- 0:c43134a862eb
File content as of revision 0:c43134a862eb:
#include "mbed.h" #include "MODSERIAL.h" #include "Watchdog.h" #include "ADS8568_ADC.h" #include "Heater.h" #include "FastPWM.h" #include "math.h" /*------------------------------------------------------------------------------ Codebase for T99004 Demo Control Board Rev A Firmware Date: 10/07/2018 Author: AS7 ------------------------------------------------------------------------------*/ #define ALL_CH 15 //value of convst bus to read all chanels simultaneosly Watchdog wd; //instantiate watchdog class MODSERIAL pc(PA_9, PA_10, 512); //mcu TX, RX, 512 byte TX and RX buffers //ADC object inherits SPI, ADS8568_ADC adc(PB_15, PB_14, PB_13, PB_12, PC_15, PC_0, PC_1, PC_2, PC_3); //SPI spi(PB_15, PB_14, PB_13); // mosi, miso, sclk I2C i2c(PB_7, PB_8); //SDA, SCL //indicator LEDs DigitalOut hb_led(PC_13); //Green DigitalOut led_0(PC_4); //Red DigitalOut led_1(PC_5); //Green //User buttons DigitalIn user_0(PB_0); DigitalIn user_1(PB_1); //ADC //BusOut adc_convt(PC_0, PC_1, PC_2, PC_3); //channel convert ch_A, ch_B, ch_C, ch_D //DigitalOut adc_ncs(PB_12); //chip n_select DigitalIn adc_busy(PA_8); //Busy interrupt sig //DigitalOut adc_reset(PC_15); /*ADC channels are connected as follows------------ CH_A0 = Heater 1 Current Sense CH_A1 = Heater 1 Voltage Sense CH_B0 = Heater 2 Current Sense CH_B1 = Heater 2 Voltage Sense CH_C0 = Photodiode Amp Out 1 CH_C1 = Photodiode Amp Out 2 CH_D0 = Photodiode Amp Out 3 CH_D1 = Photodiode Amp Out 4 ---------------------------------------------------*/ //Heater Control FastPWM drive_1(PC_9); FastPWM drive_2(PC_8); FastPWM guard_1(PC_7); FastPWM guard_2(PC_6); Timer timer; //Global vars instatiation (to be moved to new places) char buffer16[16]; float voltages[8]; int values[8]; int i = 0; int log_count = 0; float cur1 = 0; float cur2 = 0; float R1 = 0; float R2 = 0; float scale_factors[8]; float scale_factor = 13.273; int drivetime_ms = 0; int OSR = 1; float R_avg = 0; char outString[100]; const float h1_inter = 0.392; const float h2_inter = 0.392; const float h1_slope = 0.0019; const float h2_slope = 0.0019; Heater heater_1(0,1,&drive_1, &guard_1, h1_inter, h1_slope); Heater heater_2(2,3,&drive_2, &guard_2, h2_inter, h2_slope); int main() { // Initialsation pc.baud(115200); //led_1 = drive_1; //tie led 1 and heater 1 outputs together so LED shows while heater is on (initial debug purposes only) adc.init(); //initialise ADC timer.start(); //Start the timer drivetime_ms = 50; //Initialise drive periods drive_1.prescaler(1); guard_1.prescaler(1); drive_2.period_ticks(TICK_CYCLE); guard_2.period_ticks(TICK_CYCLE); //while (user_1==0); //waits for a button press before starting the programme float ratio_guard = 21.0/82; int tic_main = 150; int tic_guard = floor(tic_main * ratio_guard); while(1){ drive_2.pulsewidth_ticks(tic_main); guard_2.pulsewidth_ticks(tic_guard); wait(2); heater_2.output(); //pc.printf("%d, %f, %f\n",tic_guard,j,ratio_guard); } }