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.
main.cpp@2:b1f6e4f51d06, 2019-08-12 (annotated)
- Committer:
- seoirsem
- Date:
- Mon Aug 12 10:53:53 2019 +0000
- Revision:
- 2:b1f6e4f51d06
- Parent:
- 1:ad9199cbfc4b
- Child:
- 3:5d99b45d534a
just main file needed;
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| seoirsem | 0:c43134a862eb | 1 | #include "mbed.h" |
| seoirsem | 0:c43134a862eb | 2 | #include "MODSERIAL.h" |
| seoirsem | 0:c43134a862eb | 3 | #include "ADS8568_ADC.h" |
| seoirsem | 0:c43134a862eb | 4 | #include "FastPWM.h" |
| seoirsem | 0:c43134a862eb | 5 | |
| seoirsem | 0:c43134a862eb | 6 | #include "math.h" |
| seoirsem | 0:c43134a862eb | 7 | /*------------------------------------------------------------------------------ |
| seoirsem | 0:c43134a862eb | 8 | Codebase for T99004 Demo Control Board Rev A Firmware |
| seoirsem | 0:c43134a862eb | 9 | Date: 10/07/2018 |
| seoirsem | 0:c43134a862eb | 10 | Author: AS7 |
| seoirsem | 0:c43134a862eb | 11 | |
| seoirsem | 0:c43134a862eb | 12 | |
| seoirsem | 0:c43134a862eb | 13 | ------------------------------------------------------------------------------*/ |
| seoirsem | 0:c43134a862eb | 14 | |
| seoirsem | 0:c43134a862eb | 15 | #define ALL_CH 15 //value of convst bus to read all chanels simultaneosly |
| seoirsem | 2:b1f6e4f51d06 | 16 | #define TICK_CYCLE 1000// Tick cylcle |
| seoirsem | 0:c43134a862eb | 17 | |
| seoirsem | 0:c43134a862eb | 18 | |
| seoirsem | 0:c43134a862eb | 19 | MODSERIAL pc(PA_9, PA_10, 512); //mcu TX, RX, 512 byte TX and RX buffers |
| seoirsem | 0:c43134a862eb | 20 | |
| seoirsem | 0:c43134a862eb | 21 | //ADC object inherits SPI, |
| seoirsem | 0:c43134a862eb | 22 | ADS8568_ADC adc(PB_15, PB_14, PB_13, PB_12, PC_15, PC_0, PC_1, PC_2, PC_3); |
| seoirsem | 0:c43134a862eb | 23 | |
| seoirsem | 0:c43134a862eb | 24 | //SPI spi(PB_15, PB_14, PB_13); // mosi, miso, sclk |
| seoirsem | 0:c43134a862eb | 25 | I2C i2c(PB_7, PB_8); //SDA, SCL |
| seoirsem | 0:c43134a862eb | 26 | |
| seoirsem | 0:c43134a862eb | 27 | //indicator LEDs |
| seoirsem | 0:c43134a862eb | 28 | DigitalOut hb_led(PC_13); //Green |
| seoirsem | 0:c43134a862eb | 29 | DigitalOut led_0(PC_4); //Red |
| seoirsem | 0:c43134a862eb | 30 | DigitalOut led_1(PC_5); //Green |
| seoirsem | 0:c43134a862eb | 31 | |
| seoirsem | 0:c43134a862eb | 32 | //User buttons |
| seoirsem | 0:c43134a862eb | 33 | DigitalIn user_0(PB_0); |
| seoirsem | 0:c43134a862eb | 34 | DigitalIn user_1(PB_1); |
| seoirsem | 0:c43134a862eb | 35 | |
| seoirsem | 0:c43134a862eb | 36 | //ADC |
| seoirsem | 0:c43134a862eb | 37 | //BusOut adc_convt(PC_0, PC_1, PC_2, PC_3); //channel convert ch_A, ch_B, ch_C, ch_D |
| seoirsem | 0:c43134a862eb | 38 | //DigitalOut adc_ncs(PB_12); //chip n_select |
| seoirsem | 0:c43134a862eb | 39 | DigitalIn adc_busy(PA_8); //Busy interrupt sig |
| seoirsem | 0:c43134a862eb | 40 | //DigitalOut adc_reset(PC_15); |
| seoirsem | 0:c43134a862eb | 41 | |
| seoirsem | 0:c43134a862eb | 42 | /*ADC channels are connected as follows------------ |
| seoirsem | 0:c43134a862eb | 43 | CH_A0 = Heater 1 Current Sense |
| seoirsem | 0:c43134a862eb | 44 | CH_A1 = Heater 1 Voltage Sense |
| seoirsem | 0:c43134a862eb | 45 | CH_B0 = Heater 2 Current Sense |
| seoirsem | 0:c43134a862eb | 46 | CH_B1 = Heater 2 Voltage Sense |
| seoirsem | 0:c43134a862eb | 47 | CH_C0 = Photodiode Amp Out 1 |
| seoirsem | 0:c43134a862eb | 48 | CH_C1 = Photodiode Amp Out 2 |
| seoirsem | 0:c43134a862eb | 49 | CH_D0 = Photodiode Amp Out 3 |
| seoirsem | 0:c43134a862eb | 50 | CH_D1 = Photodiode Amp Out 4 |
| seoirsem | 0:c43134a862eb | 51 | ---------------------------------------------------*/ |
| seoirsem | 0:c43134a862eb | 52 | |
| seoirsem | 0:c43134a862eb | 53 | //Heater Control |
| seoirsem | 0:c43134a862eb | 54 | FastPWM drive_1(PC_9); |
| seoirsem | 0:c43134a862eb | 55 | FastPWM drive_2(PC_8); |
| seoirsem | 0:c43134a862eb | 56 | FastPWM guard_1(PC_7); |
| seoirsem | 0:c43134a862eb | 57 | FastPWM guard_2(PC_6); |
| seoirsem | 0:c43134a862eb | 58 | Timer timer; |
| seoirsem | 0:c43134a862eb | 59 | |
| seoirsem | 0:c43134a862eb | 60 | |
| seoirsem | 0:c43134a862eb | 61 | //Global vars instatiation (to be moved to new places) |
| seoirsem | 0:c43134a862eb | 62 | char buffer16[16]; |
| seoirsem | 0:c43134a862eb | 63 | float voltages[8]; |
| seoirsem | 0:c43134a862eb | 64 | int values[8]; |
| seoirsem | 0:c43134a862eb | 65 | int i = 0; |
| seoirsem | 0:c43134a862eb | 66 | int log_count = 0; |
| seoirsem | 0:c43134a862eb | 67 | |
| seoirsem | 0:c43134a862eb | 68 | |
| seoirsem | 0:c43134a862eb | 69 | char outString[100]; |
| seoirsem | 0:c43134a862eb | 70 | |
| seoirsem | 0:c43134a862eb | 71 | const float h1_inter = 0.392; |
| seoirsem | 0:c43134a862eb | 72 | const float h2_inter = 0.392; |
| seoirsem | 0:c43134a862eb | 73 | const float h1_slope = 0.0019; |
| seoirsem | 0:c43134a862eb | 74 | const float h2_slope = 0.0019; |
| seoirsem | 0:c43134a862eb | 75 | |
| seoirsem | 0:c43134a862eb | 76 | int main() |
| seoirsem | 0:c43134a862eb | 77 | { |
| seoirsem | 0:c43134a862eb | 78 | // Initialsation |
| seoirsem | 0:c43134a862eb | 79 | pc.baud(115200); |
| seoirsem | 0:c43134a862eb | 80 | //led_1 = drive_1; //tie led 1 and heater 1 outputs together so LED shows while heater is on (initial debug purposes only) |
| seoirsem | 0:c43134a862eb | 81 | adc.init(); //initialise ADC |
| seoirsem | 0:c43134a862eb | 82 | timer.start(); //Start the timer |
| seoirsem | 0:c43134a862eb | 83 | |
| seoirsem | 0:c43134a862eb | 84 | //Initialise drive periods |
| seoirsem | 0:c43134a862eb | 85 | drive_1.prescaler(1); |
| seoirsem | 0:c43134a862eb | 86 | guard_1.prescaler(1); |
| seoirsem | 1:ad9199cbfc4b | 87 | drive_2.prescaler(1); |
| seoirsem | 1:ad9199cbfc4b | 88 | guard_2.prescaler(1); |
| seoirsem | 0:c43134a862eb | 89 | drive_2.period_ticks(TICK_CYCLE); |
| seoirsem | 0:c43134a862eb | 90 | guard_2.period_ticks(TICK_CYCLE); |
| seoirsem | 0:c43134a862eb | 91 | |
| seoirsem | 0:c43134a862eb | 92 | //while (user_1==0); //waits for a button press before starting the programme |
| seoirsem | 0:c43134a862eb | 93 | |
| seoirsem | 0:c43134a862eb | 94 | |
| seoirsem | 0:c43134a862eb | 95 | float ratio_guard = 21.0/82; |
| seoirsem | 0:c43134a862eb | 96 | int tic_main = 150; |
| seoirsem | 0:c43134a862eb | 97 | int tic_guard = floor(tic_main * ratio_guard); |
| seoirsem | 0:c43134a862eb | 98 | |
| seoirsem | 0:c43134a862eb | 99 | while(1){ |
| seoirsem | 0:c43134a862eb | 100 | |
| seoirsem | 0:c43134a862eb | 101 | drive_2.pulsewidth_ticks(tic_main); |
| seoirsem | 0:c43134a862eb | 102 | guard_2.pulsewidth_ticks(tic_guard); |
| seoirsem | 0:c43134a862eb | 103 | wait(2); |
| seoirsem | 1:ad9199cbfc4b | 104 | //heater_2.output(); |
| seoirsem | 0:c43134a862eb | 105 | //pc.printf("%d, %f, %f\n",tic_guard,j,ratio_guard); |
| seoirsem | 0:c43134a862eb | 106 | |
| seoirsem | 0:c43134a862eb | 107 | } |
| seoirsem | 0:c43134a862eb | 108 | |
| seoirsem | 0:c43134a862eb | 109 | } |