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.
Fork of TFOX_CDMS_VR_1_0_WORKING by
main.cpp@6:2026890397d6, 2015-06-16 (annotated)
- Committer:
- cholletisaik777
- Date:
- Tue Jun 16 16:16:12 2015 +0000
- Revision:
- 6:2026890397d6
- Parent:
- 5:c77b49508927
- Child:
- 7:4f17f1afe95e
corrected equation
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
cholletisaik777 | 0:d6e3d1e21484 | 1 | #include "mbed.h" |
cholletisaik777 | 0:d6e3d1e21484 | 2 | #include "rtos.h" |
cholletisaik777 | 0:d6e3d1e21484 | 3 | #include "func_head.h" |
pradeepvk2208 | 2:4c79b3dfef31 | 4 | #include "i2c.h" |
cholletisaik777 | 4:cc85cfaa2086 | 5 | #include "SDCard.h" |
cholletisaik777 | 5:c77b49508927 | 6 | #define HK_DATA 25 |
cholletisaik777 | 5:c77b49508927 | 7 | #define HK_ITER 15 |
cholletisaik777 | 0:d6e3d1e21484 | 8 | Serial pc(USBTX,USBRX); |
cholletisaik777 | 0:d6e3d1e21484 | 9 | |
sakthipriya | 3:0c3f7c3fabc9 | 10 | extern SPISlave pl_spi ; // mosi, miso, sclk, ssel --> using SPI1 |
cholletisaik777 | 0:d6e3d1e21484 | 11 | |
cholletisaik777 | 0:d6e3d1e21484 | 12 | InterruptIn pl_sc_data(PTC3); |
cholletisaik777 | 0:d6e3d1e21484 | 13 | InterruptIn cdms_rcv_tc(PTC12); |
sakthipriya | 3:0c3f7c3fabc9 | 14 | InterruptIn bae_tm_rcv(PTC11); |
sakthipriya | 3:0c3f7c3fabc9 | 15 | InterruptIn pl_tm_rcv(PTC10); |
sakthipriya | 3:0c3f7c3fabc9 | 16 | extern I2C master; |
sakthipriya | 3:0c3f7c3fabc9 | 17 | extern DigitalOut irpt_2_slv; |
cholletisaik777 | 0:d6e3d1e21484 | 18 | |
sakthipriya | 3:0c3f7c3fabc9 | 19 | char i2c_data[25]; |
cholletisaik777 | 5:c77b49508927 | 20 | int hk_count=0; |
cholletisaik777 | 5:c77b49508927 | 21 | uint8_t hk_data[512]; |
cholletisaik777 | 5:c77b49508927 | 22 | uint8_t* rtc_data; |
cholletisaik777 | 5:c77b49508927 | 23 | uint64_t hk_block_number = 1; |
pradeepvk2208 | 2:4c79b3dfef31 | 24 | |
cholletisaik777 | 0:d6e3d1e21484 | 25 | /*****************************************************************Threads USed*************************************************************************/ |
cholletisaik777 | 0:d6e3d1e21484 | 26 | Thread *ptr_t_hk_acq; //pointer:::::::::to read state of one thread from another |
cholletisaik777 | 0:d6e3d1e21484 | 27 | Thread *ptr_t_sc_data; |
cholletisaik777 | 0:d6e3d1e21484 | 28 | Thread *ptr_t_tc; |
cholletisaik777 | 0:d6e3d1e21484 | 29 | Thread *ptr_t_tm; |
cholletisaik777 | 0:d6e3d1e21484 | 30 | Thread *ptr_t_fault; |
cholletisaik777 | 0:d6e3d1e21484 | 31 | Thread *ptr_t_wdt; |
cholletisaik777 | 0:d6e3d1e21484 | 32 | |
cholletisaik777 | 0:d6e3d1e21484 | 33 | void T_CDMS_RLY_TC(void const *args) |
cholletisaik777 | 0:d6e3d1e21484 | 34 | { |
cholletisaik777 | 0:d6e3d1e21484 | 35 | while(1) |
cholletisaik777 | 0:d6e3d1e21484 | 36 | { |
cholletisaik777 | 0:d6e3d1e21484 | 37 | Thread::signal_wait(0x2); |
cholletisaik777 | 0:d6e3d1e21484 | 38 | pc.printf("in T_CDMS_RLY_TC\r\n"); |
cholletisaik777 | 0:d6e3d1e21484 | 39 | FUNC_CDMS_RLY_TC(); |
cholletisaik777 | 0:d6e3d1e21484 | 40 | } |
cholletisaik777 | 0:d6e3d1e21484 | 41 | } |
cholletisaik777 | 0:d6e3d1e21484 | 42 | |
cholletisaik777 | 0:d6e3d1e21484 | 43 | void T_CDMS_RLY_TM(void const *args) |
cholletisaik777 | 0:d6e3d1e21484 | 44 | { |
cholletisaik777 | 0:d6e3d1e21484 | 45 | while(1) |
cholletisaik777 | 0:d6e3d1e21484 | 46 | { |
cholletisaik777 | 0:d6e3d1e21484 | 47 | Thread::signal_wait(0x3); |
cholletisaik777 | 0:d6e3d1e21484 | 48 | pc.printf("in T_CDMS_RLY_TM\r\n"); |
cholletisaik777 | 0:d6e3d1e21484 | 49 | FUNC_CDMS_RLY_TM(); |
cholletisaik777 | 0:d6e3d1e21484 | 50 | } |
cholletisaik777 | 0:d6e3d1e21484 | 51 | } |
cholletisaik777 | 0:d6e3d1e21484 | 52 | |
cholletisaik777 | 0:d6e3d1e21484 | 53 | void T_PL_RCV_SC_DATA(void const *args) |
cholletisaik777 | 0:d6e3d1e21484 | 54 | { |
cholletisaik777 | 0:d6e3d1e21484 | 55 | while(1) |
cholletisaik777 | 0:d6e3d1e21484 | 56 | { |
cholletisaik777 | 0:d6e3d1e21484 | 57 | Thread::signal_wait(0x1); |
cholletisaik777 | 0:d6e3d1e21484 | 58 | pc.printf("in T_PL_RCV_SC_DATA\r\n"); |
cholletisaik777 | 0:d6e3d1e21484 | 59 | FUNC_PL_RCV_SC_DATA(); |
cholletisaik777 | 0:d6e3d1e21484 | 60 | } |
cholletisaik777 | 0:d6e3d1e21484 | 61 | } |
cholletisaik777 | 0:d6e3d1e21484 | 62 | |
cholletisaik777 | 0:d6e3d1e21484 | 63 | void TSC_CDMS_HK_MAIN(void const *args) |
cholletisaik777 | 0:d6e3d1e21484 | 64 | { |
cholletisaik777 | 0:d6e3d1e21484 | 65 | pc.printf("in FUNC_CDMS_HK_MAIN()\r\n"); |
pradeepvk2208 | 2:4c79b3dfef31 | 66 | FCTN_MASTER_I2C('h' , i2c_data ); |
cholletisaik777 | 5:c77b49508927 | 67 | FUNC_CDMS_RD_RTC(rtc_data); |
cholletisaik777 | 6:2026890397d6 | 68 | for(int i=(hk_count%(HK_ITER+1))*(HK_DATA+8);i<(hk_count%(HK_ITER+1))*(HK_DATA+8)+8;i++) |
cholletisaik777 | 5:c77b49508927 | 69 | { |
cholletisaik777 | 5:c77b49508927 | 70 | hk_data[i] = rtc_data[i]; |
cholletisaik777 | 5:c77b49508927 | 71 | } |
cholletisaik777 | 6:2026890397d6 | 72 | for(int i=(hk_count%(HK_ITER+1))*(HK_DATA+8)+8;i<(hk_count%(HK_ITER+1))*(HK_DATA+8)+8+HK_DATA;i++) |
cholletisaik777 | 5:c77b49508927 | 73 | { |
cholletisaik777 | 5:c77b49508927 | 74 | hk_data[i] = i2c_data[i]; |
cholletisaik777 | 5:c77b49508927 | 75 | } |
cholletisaik777 | 5:c77b49508927 | 76 | hk_count++; |
cholletisaik777 | 5:c77b49508927 | 77 | if(hk_count%15==0) |
cholletisaik777 | 5:c77b49508927 | 78 | { |
cholletisaik777 | 6:2026890397d6 | 79 | for(int i=(hk_count%(HK_ITER+1))*(HK_DATA+8)+8+HK_DATA;i<512;i++) |
cholletisaik777 | 5:c77b49508927 | 80 | { |
cholletisaik777 | 5:c77b49508927 | 81 | hk_data[i] = '/0'; |
cholletisaik777 | 5:c77b49508927 | 82 | } |
cholletisaik777 | 5:c77b49508927 | 83 | hk_count = 0; |
cholletisaik777 | 5:c77b49508927 | 84 | FUNC_WR_SD(hk_data,hk_block_number); |
cholletisaik777 | 5:c77b49508927 | 85 | for(int i=0;i<512;i++) |
cholletisaik777 | 5:c77b49508927 | 86 | { |
cholletisaik777 | 5:c77b49508927 | 87 | hk_data[i] = '/0'; |
cholletisaik777 | 5:c77b49508927 | 88 | } |
cholletisaik777 | 5:c77b49508927 | 89 | FUNC_RD_SD(hk_data,hk_block_number); |
cholletisaik777 | 5:c77b49508927 | 90 | hk_block_number; |
cholletisaik777 | 5:c77b49508927 | 91 | printf("\n\r sd card hk data\n"); |
cholletisaik777 | 5:c77b49508927 | 92 | for(int i=0;i<512;i++) |
cholletisaik777 | 5:c77b49508927 | 93 | { |
cholletisaik777 | 5:c77b49508927 | 94 | pc.printf("%d|",hk_data[i]); |
cholletisaik777 | 5:c77b49508927 | 95 | } |
cholletisaik777 | 5:c77b49508927 | 96 | } |
cholletisaik777 | 5:c77b49508927 | 97 | pc.printf("\n\r hk exited\n"); |
cholletisaik777 | 0:d6e3d1e21484 | 98 | } |
cholletisaik777 | 0:d6e3d1e21484 | 99 | |
cholletisaik777 | 0:d6e3d1e21484 | 100 | void ISR_PL_RCV_SC_DATA() |
cholletisaik777 | 0:d6e3d1e21484 | 101 | { |
cholletisaik777 | 0:d6e3d1e21484 | 102 | ptr_t_sc_data->signal_set(0x1); |
cholletisaik777 | 0:d6e3d1e21484 | 103 | } |
cholletisaik777 | 0:d6e3d1e21484 | 104 | |
cholletisaik777 | 0:d6e3d1e21484 | 105 | void ISR_CDMS_RLY_TC() |
cholletisaik777 | 0:d6e3d1e21484 | 106 | { |
cholletisaik777 | 0:d6e3d1e21484 | 107 | ptr_t_tc->signal_set(0x2); |
cholletisaik777 | 0:d6e3d1e21484 | 108 | } |
cholletisaik777 | 0:d6e3d1e21484 | 109 | |
cholletisaik777 | 0:d6e3d1e21484 | 110 | void ISR_CDMS_RLY_TM() |
cholletisaik777 | 0:d6e3d1e21484 | 111 | { |
cholletisaik777 | 0:d6e3d1e21484 | 112 | ptr_t_tm->signal_set(0x3); |
cholletisaik777 | 0:d6e3d1e21484 | 113 | } |
cholletisaik777 | 0:d6e3d1e21484 | 114 | |
cholletisaik777 | 0:d6e3d1e21484 | 115 | int main() { |
sakthipriya | 3:0c3f7c3fabc9 | 116 | printf("\n\r CDMS Activated \n"); |
cholletisaik777 | 0:d6e3d1e21484 | 117 | ptr_t_tc = new Thread (T_CDMS_RLY_TC); |
cholletisaik777 | 0:d6e3d1e21484 | 118 | ptr_t_tm = new Thread (T_CDMS_RLY_TM); |
cholletisaik777 | 0:d6e3d1e21484 | 119 | ptr_t_sc_data = new Thread (T_PL_RCV_SC_DATA); |
sakthipriya | 3:0c3f7c3fabc9 | 120 | master.frequency(100000); |
cholletisaik777 | 0:d6e3d1e21484 | 121 | RtosTimer TIMER_HK_ACQ(TSC_CDMS_HK_MAIN,osTimerPeriodic); |
pradeepvk2208 | 2:4c79b3dfef31 | 122 | TIMER_HK_ACQ.start(20000); |
sakthipriya | 3:0c3f7c3fabc9 | 123 | irpt_2_slv = 1; |
cholletisaik777 | 0:d6e3d1e21484 | 124 | pl_sc_data.rise(&ISR_PL_RCV_SC_DATA); |
cholletisaik777 | 0:d6e3d1e21484 | 125 | cdms_rcv_tc.rise(&ISR_CDMS_RLY_TC); |
cholletisaik777 | 0:d6e3d1e21484 | 126 | bae_tm_rcv.rise(&ISR_CDMS_RLY_TM); |
cholletisaik777 | 0:d6e3d1e21484 | 127 | pl_tm_rcv.rise(&ISR_CDMS_RLY_TM); |
cholletisaik777 | 0:d6e3d1e21484 | 128 | |
cholletisaik777 | 0:d6e3d1e21484 | 129 | pl_spi.format(8,3); // SPI format --> 16 bits, mode = 0 |
cholletisaik777 | 0:d6e3d1e21484 | 130 | pl_spi.frequency(1000000); |
cholletisaik777 | 0:d6e3d1e21484 | 131 | |
pradeepvk2208 | 2:4c79b3dfef31 | 132 | FUNC_INIT_RTC(); |
cholletisaik777 | 4:cc85cfaa2086 | 133 | int *status_sd = FUNC_INIT_SD(); |
pradeepvk2208 | 2:4c79b3dfef31 | 134 | |
cholletisaik777 | 0:d6e3d1e21484 | 135 | while(1); |
cholletisaik777 | 0:d6e3d1e21484 | 136 | } |