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@0:1771028c366a, 2021-09-30 (annotated)
- Committer:
- Yanagihara
- Date:
- Thu Sep 30 10:03:28 2021 +0000
- Revision:
- 0:1771028c366a
I wrote a whole section on cdh_data flow. Save as milestone
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Yanagihara | 0:1771028c366a | 1 | #include "mbed.h" |
Yanagihara | 0:1771028c366a | 2 | // ************ Flashメモリ設定 ************* |
Yanagihara | 0:1771028c366a | 3 | /*Flashのコマンドを発行*/ |
Yanagihara | 0:1771028c366a | 4 | #define CMD_RDID 0x9f // |
Yanagihara | 0:1771028c366a | 5 | #define CMD_READ 0x03 // Address Read Data |
Yanagihara | 0:1771028c366a | 6 | #define CMD_WREN 0x06 // Write Enable |
Yanagihara | 0:1771028c366a | 7 | #define CMD_SE 0x20 // Sector Erase |
Yanagihara | 0:1771028c366a | 8 | #define CMD_HBE 0x52; // Block Erase |
Yanagihara | 0:1771028c366a | 9 | #define CMD_BE 0xD8; // Block Erase |
Yanagihara | 0:1771028c366a | 10 | #define CMD_PP 0x02 // Page Programming |
Yanagihara | 0:1771028c366a | 11 | #define CMD_RDSR1 0x05 // Read Status Resistor (WIP check) |
Yanagihara | 0:1771028c366a | 12 | SPI spi(p5,p6,p7); //mosi,miso,sclk |
Yanagihara | 0:1771028c366a | 13 | DigitalOut cs(p8); |
Yanagihara | 0:1771028c366a | 14 | // ***************************************** |
Yanagihara | 0:1771028c366a | 15 | |
Yanagihara | 0:1771028c366a | 16 | DigitalOut eps_on(p21); |
Yanagihara | 0:1771028c366a | 17 | |
Yanagihara | 0:1771028c366a | 18 | SPI spi_a(p5,p6,p7); //mosi,miso,sclk |
Yanagihara | 0:1771028c366a | 19 | DigitalOut cs_eps(p8); |
Yanagihara | 0:1771028c366a | 20 | DigitalOut cs_com(p9); |
Yanagihara | 0:1771028c366a | 21 | |
Yanagihara | 0:1771028c366a | 22 | Ticker IR_getHK; |
Yanagihara | 0:1771028c366a | 23 | Ticker IR_saveHK; |
Yanagihara | 0:1771028c366a | 24 | Ticker IR_HKtoSD; |
Yanagihara | 0:1771028c366a | 25 | |
Yanagihara | 0:1771028c366a | 26 | Serial pc(USBTX,USBRX); |
Yanagihara | 0:1771028c366a | 27 | |
Yanagihara | 0:1771028c366a | 28 | // **** グローバル変数 ****** |
Yanagihara | 0:1771028c366a | 29 | uint8_t eps_survival_hk[256]; |
Yanagihara | 0:1771028c366a | 30 | uint8_t eps_HK_IR[256]; |
Yanagihara | 0:1771028c366a | 31 | uint8_t i_HK_IR=0; // eps_HK_IRのカウンター |
Yanagihara | 0:1771028c366a | 32 | uint16_t IRHK_length = 0; // データ長さ(byte) |
Yanagihara | 0:1771028c366a | 33 | |
Yanagihara | 0:1771028c366a | 34 | uint8_t seq_flag = 0; |
Yanagihara | 0:1771028c366a | 35 | uint8_t EPS_cmd = 0; |
Yanagihara | 0:1771028c366a | 36 | uint16_t HK_length = 0; // HKのデータ数.1Hz割込で使用 |
Yanagihara | 0:1771028c366a | 37 | // ************************ |
Yanagihara | 0:1771028c366a | 38 | |
Yanagihara | 0:1771028c366a | 39 | // **** Flashメモリ用 グローバル変数***** |
Yanagihara | 0:1771028c366a | 40 | uint32_t addr = 0x0; // survival_HK用 |
Yanagihara | 0:1771028c366a | 41 | uint32_t IRHK_addr = 0x000F000; // survival_HK用 |
Yanagihara | 0:1771028c366a | 42 | uint8_t tx_buf[256]; // 送信バッファ用意 |
Yanagihara | 0:1771028c366a | 43 | uint8_t rx_buf[256]; // 受信バッファ用意 |
Yanagihara | 0:1771028c366a | 44 | // *********************************** |
Yanagihara | 0:1771028c366a | 45 | |
Yanagihara | 0:1771028c366a | 46 | // ************ Flashメモリ用関数 ************* |
Yanagihara | 0:1771028c366a | 47 | void spi_init(){ /*spi通信設定*/ |
Yanagihara | 0:1771028c366a | 48 | spi.format(8,0); |
Yanagihara | 0:1771028c366a | 49 | spi.frequency(1000000); // 1,000,000=1MHz clock rate |
Yanagihara | 0:1771028c366a | 50 | cs = 1; //初期化 |
Yanagihara | 0:1771028c366a | 51 | } |
Yanagihara | 0:1771028c366a | 52 | |
Yanagihara | 0:1771028c366a | 53 | void spi_transfer(const uint8_t* tx_buf, uint8_t* rx_buf, uint16_t length) { // 送受信両方判断し通信実行する関数 |
Yanagihara | 0:1771028c366a | 54 | //pc.printf("#spi_transfer length= 0x%X\r\n",length); |
Yanagihara | 0:1771028c366a | 55 | for(uint16_t i = 0 ; i<length ; i++){ |
Yanagihara | 0:1771028c366a | 56 | uint8_t data = spi.write(tx_buf != NULL ? tx_buf[i] : 0x0); // txDataが有るならtxDataを送る,無いなら0を送る |
Yanagihara | 0:1771028c366a | 57 | if(rx_buf != NULL){ // もし受信データを表示したい場合 |
Yanagihara | 0:1771028c366a | 58 | rx_buf[i] = data; |
Yanagihara | 0:1771028c366a | 59 | } |
Yanagihara | 0:1771028c366a | 60 | } |
Yanagihara | 0:1771028c366a | 61 | } |
Yanagihara | 0:1771028c366a | 62 | void spi_read_data(uint8_t* rx_buf, uint16_t length){ /*受信*/ |
Yanagihara | 0:1771028c366a | 63 | spi_transfer(NULL, rx_buf, length); |
Yanagihara | 0:1771028c366a | 64 | } |
Yanagihara | 0:1771028c366a | 65 | void spi_write_data(const uint8_t* tx_buf, uint16_t length){ /*受信*/ |
Yanagihara | 0:1771028c366a | 66 | spi_transfer(tx_buf, NULL, length); |
Yanagihara | 0:1771028c366a | 67 | } |
Yanagihara | 0:1771028c366a | 68 | |
Yanagihara | 0:1771028c366a | 69 | /*Flash関数*/ |
Yanagihara | 0:1771028c366a | 70 | void flash_send_addr(uint32_t addr) { |
Yanagihara | 0:1771028c366a | 71 | const uint8_t data[] = { |
Yanagihara | 0:1771028c366a | 72 | (addr >> 16) & 0xff, // 1のところだけ残す |
Yanagihara | 0:1771028c366a | 73 | (addr >> 8) & 0xff, |
Yanagihara | 0:1771028c366a | 74 | (addr >> 0) & 0xff, |
Yanagihara | 0:1771028c366a | 75 | }; |
Yanagihara | 0:1771028c366a | 76 | for(int i=0; i<3; i++){ // addr : 3byte |
Yanagihara | 0:1771028c366a | 77 | spi.write(data[i]); |
Yanagihara | 0:1771028c366a | 78 | } |
Yanagihara | 0:1771028c366a | 79 | } |
Yanagihara | 0:1771028c366a | 80 | |
Yanagihara | 0:1771028c366a | 81 | void flash_rdid(uint8_t* rx_buf, uint16_t length){ /*RDID読み出し*/ |
Yanagihara | 0:1771028c366a | 82 | cs = 0; |
Yanagihara | 0:1771028c366a | 83 | spi.write(CMD_RDID); |
Yanagihara | 0:1771028c366a | 84 | spi_read_data(rx_buf, length); |
Yanagihara | 0:1771028c366a | 85 | cs = 1; |
Yanagihara | 0:1771028c366a | 86 | } |
Yanagihara | 0:1771028c366a | 87 | |
Yanagihara | 0:1771028c366a | 88 | void flash_read(uint32_t addr, uint8_t* rx_buf, uint16_t length) { /*読み出し*/ |
Yanagihara | 0:1771028c366a | 89 | cs = 0; |
Yanagihara | 0:1771028c366a | 90 | spi.write(CMD_READ); |
Yanagihara | 0:1771028c366a | 91 | flash_send_addr(addr); |
Yanagihara | 0:1771028c366a | 92 | spi_read_data(rx_buf, length); |
Yanagihara | 0:1771028c366a | 93 | cs = 1; |
Yanagihara | 0:1771028c366a | 94 | } |
Yanagihara | 0:1771028c366a | 95 | |
Yanagihara | 0:1771028c366a | 96 | void flash_wren(){ // write enable |
Yanagihara | 0:1771028c366a | 97 | cs = 0; |
Yanagihara | 0:1771028c366a | 98 | spi.write(CMD_WREN); |
Yanagihara | 0:1771028c366a | 99 | cs = 1; |
Yanagihara | 0:1771028c366a | 100 | } |
Yanagihara | 0:1771028c366a | 101 | |
Yanagihara | 0:1771028c366a | 102 | void flash_se(uint32_t addr) { // sector erase |
Yanagihara | 0:1771028c366a | 103 | cs = 0; |
Yanagihara | 0:1771028c366a | 104 | spi.write(CMD_SE); |
Yanagihara | 0:1771028c366a | 105 | flash_send_addr(addr); |
Yanagihara | 0:1771028c366a | 106 | cs = 1; |
Yanagihara | 0:1771028c366a | 107 | } |
Yanagihara | 0:1771028c366a | 108 | |
Yanagihara | 0:1771028c366a | 109 | void flash_pp(uint32_t addr, const uint8_t* wr_data, uint16_t length) { // Page Program |
Yanagihara | 0:1771028c366a | 110 | cs = 0; |
Yanagihara | 0:1771028c366a | 111 | spi.write(CMD_PP); |
Yanagihara | 0:1771028c366a | 112 | flash_send_addr(addr); |
Yanagihara | 0:1771028c366a | 113 | spi_write_data(wr_data, length); |
Yanagihara | 0:1771028c366a | 114 | cs = 1; |
Yanagihara | 0:1771028c366a | 115 | } |
Yanagihara | 0:1771028c366a | 116 | |
Yanagihara | 0:1771028c366a | 117 | void flash_rdsr(uint8_t* rx_buf, uint16_t length) { |
Yanagihara | 0:1771028c366a | 118 | cs = 0; |
Yanagihara | 0:1771028c366a | 119 | spi.write(CMD_RDSR1); |
Yanagihara | 0:1771028c366a | 120 | spi_read_data(rx_buf, length); // rx_bufにRDSRの値が入っている |
Yanagihara | 0:1771028c366a | 121 | cs = 1; |
Yanagihara | 0:1771028c366a | 122 | } |
Yanagihara | 0:1771028c366a | 123 | |
Yanagihara | 0:1771028c366a | 124 | uint8_t flash_is_wip() { // (WIP)Write In Progress(書込み中)かどうか確認 |
Yanagihara | 0:1771028c366a | 125 | uint8_t data; |
Yanagihara | 0:1771028c366a | 126 | flash_rdsr(&data, 0x01); // 1byte(StatusRegister情報) |
Yanagihara | 0:1771028c366a | 127 | return(data & 0x01); //WIP // ビット演算_& |
Yanagihara | 0:1771028c366a | 128 | } |
Yanagihara | 0:1771028c366a | 129 | |
Yanagihara | 0:1771028c366a | 130 | |
Yanagihara | 0:1771028c366a | 131 | void data_debug_print(const uint8_t* data, uint16_t bytes){ //配列を表示 |
Yanagihara | 0:1771028c366a | 132 | pc.printf("+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F\r\n"); |
Yanagihara | 0:1771028c366a | 133 | pc.printf("-----------------------------------------------\r\n"); |
Yanagihara | 0:1771028c366a | 134 | uint16_t depth = ((bytes - 1) >> 4) + 1; |
Yanagihara | 0:1771028c366a | 135 | for(uint16_t j = 0 ; j < depth ; ++j){ //depthは何? |
Yanagihara | 0:1771028c366a | 136 | for(uint16_t i = 0 ; i < 16 ; ++i){ |
Yanagihara | 0:1771028c366a | 137 | uint8_t d = data[i + (j << 4)]; |
Yanagihara | 0:1771028c366a | 138 | pc.printf("%X", (d >> 4) & 0x0f); |
Yanagihara | 0:1771028c366a | 139 | pc.printf("%X", (d >> 0) & 0x0f); |
Yanagihara | 0:1771028c366a | 140 | pc.printf(" "); |
Yanagihara | 0:1771028c366a | 141 | } |
Yanagihara | 0:1771028c366a | 142 | pc.printf("\r\n"); |
Yanagihara | 0:1771028c366a | 143 | } |
Yanagihara | 0:1771028c366a | 144 | pc.printf("\r\n"); |
Yanagihara | 0:1771028c366a | 145 | } |
Yanagihara | 0:1771028c366a | 146 | // ******************************************Flashメモリ用関数ここまで |
Yanagihara | 0:1771028c366a | 147 | |
Yanagihara | 0:1771028c366a | 148 | // ************* 割り込み関数 *************** |
Yanagihara | 0:1771028c366a | 149 | void getHK_eps_IR() { // 1Hz getHK 割り込み関数 |
Yanagihara | 0:1771028c366a | 150 | pc.printf("get EPS 1Hz HK\r\n"); |
Yanagihara | 0:1771028c366a | 151 | EPS_cmd = 2; |
Yanagihara | 0:1771028c366a | 152 | |
Yanagihara | 0:1771028c366a | 153 | cs_eps = 0; |
Yanagihara | 0:1771028c366a | 154 | //pc.printf("send cmd to eps\r\n"); |
Yanagihara | 0:1771028c366a | 155 | spi_a.write(EPS_cmd); // send command |
Yanagihara | 0:1771028c366a | 156 | |
Yanagihara | 0:1771028c366a | 157 | HK_length = 4; // 1回で取得するHKデータのbyte数 |
Yanagihara | 0:1771028c366a | 158 | for(uint8_t i=0; i < HK_length; i++) { // get data |
Yanagihara | 0:1771028c366a | 159 | eps_HK_IR[i_HK_IR] = spi_a.write(0x0); |
Yanagihara | 0:1771028c366a | 160 | pc.printf("get eps 1Hz hk: %d\r\n",eps_HK_IR[i_HK_IR]); |
Yanagihara | 0:1771028c366a | 161 | i_HK_IR++; |
Yanagihara | 0:1771028c366a | 162 | } |
Yanagihara | 0:1771028c366a | 163 | cs_eps = 1; |
Yanagihara | 0:1771028c366a | 164 | } |
Yanagihara | 0:1771028c366a | 165 | |
Yanagihara | 0:1771028c366a | 166 | void flash_saveHK_eps_IR() { // 1分毎にFlashにIRHKを保存 |
Yanagihara | 0:1771028c366a | 167 | |
Yanagihara | 0:1771028c366a | 168 | // eps_HK_IR[]をフラッシュに保存 |
Yanagihara | 0:1771028c366a | 169 | flash_wren(); // 書込み・消去の前に必ず必要 |
Yanagihara | 0:1771028c366a | 170 | IRHK_length = 4*60; // データ長さ(byte)// |
Yanagihara | 0:1771028c366a | 171 | flash_pp(IRHK_addr, eps_HK_IR, IRHK_length); |
Yanagihara | 0:1771028c366a | 172 | while(flash_is_wip()){ |
Yanagihara | 0:1771028c366a | 173 | } |
Yanagihara | 0:1771028c366a | 174 | pc.printf("Flash Write complete! \r\n"); |
Yanagihara | 0:1771028c366a | 175 | pc.printf("Write Data check (Read the Written address.)\r\n"); |
Yanagihara | 0:1771028c366a | 176 | flash_read(IRHK_addr, rx_buf, IRHK_length); |
Yanagihara | 0:1771028c366a | 177 | data_debug_print(rx_buf, IRHK_length); |
Yanagihara | 0:1771028c366a | 178 | IRHK_addr += IRHK_length; |
Yanagihara | 0:1771028c366a | 179 | } |
Yanagihara | 0:1771028c366a | 180 | |
Yanagihara | 0:1771028c366a | 181 | void sendHK_from_Flash_to_SD() { |
Yanagihara | 0:1771028c366a | 182 | // Flashから読み出し(IRHK_addr-180*4) |
Yanagihara | 0:1771028c366a | 183 | pc.printf("send to sd\r\n"); |
Yanagihara | 0:1771028c366a | 184 | flash_read(IRHK_addr-(IRHK_length*3), rx_buf, IRHK_length*3); |
Yanagihara | 0:1771028c366a | 185 | data_debug_print(rx_buf, IRHK_length*3); |
Yanagihara | 0:1771028c366a | 186 | |
Yanagihara | 0:1771028c366a | 187 | // send to com |
Yanagihara | 0:1771028c366a | 188 | cs_com = 0; |
Yanagihara | 0:1771028c366a | 189 | spi.write(0x10); |
Yanagihara | 0:1771028c366a | 190 | cs_com = 1; |
Yanagihara | 0:1771028c366a | 191 | |
Yanagihara | 0:1771028c366a | 192 | wait(1); |
Yanagihara | 0:1771028c366a | 193 | |
Yanagihara | 0:1771028c366a | 194 | uint8_t rep; |
Yanagihara | 0:1771028c366a | 195 | for(uint8_t i=0; i<IRHK_length*3; i++) { // get data |
Yanagihara | 0:1771028c366a | 196 | cs_com = 0; |
Yanagihara | 0:1771028c366a | 197 | spi.write(rx_buf[i]); // 1byte HK 送る |
Yanagihara | 0:1771028c366a | 198 | while(rep!=0x01){ // ビジー確認.rep=1になるまで,永遠にダミーデータを送る |
Yanagihara | 0:1771028c366a | 199 | rep = spi.write(0x0); |
Yanagihara | 0:1771028c366a | 200 | } |
Yanagihara | 0:1771028c366a | 201 | cs_com = 1; |
Yanagihara | 0:1771028c366a | 202 | } |
Yanagihara | 0:1771028c366a | 203 | |
Yanagihara | 0:1771028c366a | 204 | // Flash転送終了コマンド |
Yanagihara | 0:1771028c366a | 205 | spi.write(0xFF); |
Yanagihara | 0:1771028c366a | 206 | |
Yanagihara | 0:1771028c366a | 207 | } |
Yanagihara | 0:1771028c366a | 208 | // *****************************************割り込み関数定義終了 |
Yanagihara | 0:1771028c366a | 209 | void auto_sequence(uint8_t cmd) { |
Yanagihara | 0:1771028c366a | 210 | |
Yanagihara | 0:1771028c366a | 211 | if(cmd==1) { |
Yanagihara | 0:1771028c366a | 212 | pc.printf("EPS ON \r\n"); |
Yanagihara | 0:1771028c366a | 213 | eps_on = 1; |
Yanagihara | 0:1771028c366a | 214 | wait(0.5); |
Yanagihara | 0:1771028c366a | 215 | eps_on = 0; |
Yanagihara | 0:1771028c366a | 216 | } |
Yanagihara | 0:1771028c366a | 217 | else if(cmd==2) { // eps Survival Check |
Yanagihara | 0:1771028c366a | 218 | EPS_cmd = 1; |
Yanagihara | 0:1771028c366a | 219 | |
Yanagihara | 0:1771028c366a | 220 | pc.printf("get eps Survival hk\r\n"); |
Yanagihara | 0:1771028c366a | 221 | cs_eps = 0; |
Yanagihara | 0:1771028c366a | 222 | spi_a.write(EPS_cmd); // send command |
Yanagihara | 0:1771028c366a | 223 | //pc.printf("send cmd to eps\r\n"); |
Yanagihara | 0:1771028c366a | 224 | cs_eps = 1; |
Yanagihara | 0:1771028c366a | 225 | wait(1); // epsのHK取得待ち時間(仮) |
Yanagihara | 0:1771028c366a | 226 | |
Yanagihara | 0:1771028c366a | 227 | cs_eps = 0; |
Yanagihara | 0:1771028c366a | 228 | for(uint8_t i=0; i<2; i++) { // get data |
Yanagihara | 0:1771028c366a | 229 | eps_survival_hk[i] = spi_a.write(0x0); |
Yanagihara | 0:1771028c366a | 230 | pc.printf("eps Survival hk: %d",eps_survival_hk[i]); |
Yanagihara | 0:1771028c366a | 231 | } |
Yanagihara | 0:1771028c366a | 232 | cs_eps = 1; |
Yanagihara | 0:1771028c366a | 233 | |
Yanagihara | 0:1771028c366a | 234 | // flag更新 |
Yanagihara | 0:1771028c366a | 235 | seq_flag = 1; |
Yanagihara | 0:1771028c366a | 236 | |
Yanagihara | 0:1771028c366a | 237 | // eps_survival_hkをフラッシュに保存 |
Yanagihara | 0:1771028c366a | 238 | flash_wren(); |
Yanagihara | 0:1771028c366a | 239 | addr = 0x0; // Flashメモリのデータを入れる場所指定 |
Yanagihara | 0:1771028c366a | 240 | HK_length = 2; // データ長さ(byte) |
Yanagihara | 0:1771028c366a | 241 | flash_pp(addr, eps_survival_hk, HK_length); |
Yanagihara | 0:1771028c366a | 242 | while(flash_is_wip()){ |
Yanagihara | 0:1771028c366a | 243 | } |
Yanagihara | 0:1771028c366a | 244 | pc.printf("Flash Write complete! \r\n"); |
Yanagihara | 0:1771028c366a | 245 | pc.printf("Write Data check (Read the Written address.)\r\n"); |
Yanagihara | 0:1771028c366a | 246 | flash_read(addr, rx_buf, HK_length); |
Yanagihara | 0:1771028c366a | 247 | data_debug_print(rx_buf, HK_length); |
Yanagihara | 0:1771028c366a | 248 | } |
Yanagihara | 0:1771028c366a | 249 | |
Yanagihara | 0:1771028c366a | 250 | else if(cmd==3) { |
Yanagihara | 0:1771028c366a | 251 | pc.printf("COM ON \r\n"); |
Yanagihara | 0:1771028c366a | 252 | EPS_cmd = 3; |
Yanagihara | 0:1771028c366a | 253 | cs_eps = 0; |
Yanagihara | 0:1771028c366a | 254 | spi_a.write(EPS_cmd); // send command |
Yanagihara | 0:1771028c366a | 255 | cs_eps = 1; |
Yanagihara | 0:1771028c366a | 256 | } |
Yanagihara | 0:1771028c366a | 257 | else if(cmd==4) { // 1Hz HK取得開始 |
Yanagihara | 0:1771028c366a | 258 | |
Yanagihara | 0:1771028c366a | 259 | // 1Hz getHK 割り込み開始 |
Yanagihara | 0:1771028c366a | 260 | IR_getHK.attach(&getHK_eps_IR, 10); // 1HzでgetHK開始(0.1Hzでテスト) |
Yanagihara | 0:1771028c366a | 261 | seq_flag = 3; |
Yanagihara | 0:1771028c366a | 262 | pc.printf("start 1Hz getHK Interrupt!!\r\n"); |
Yanagihara | 0:1771028c366a | 263 | pc.printf("seq_flag: %d\r\n", seq_flag); |
Yanagihara | 0:1771028c366a | 264 | } |
Yanagihara | 0:1771028c366a | 265 | |
Yanagihara | 0:1771028c366a | 266 | else if(cmd==5) { // 1分毎にFlashに保存 開始 |
Yanagihara | 0:1771028c366a | 267 | |
Yanagihara | 0:1771028c366a | 268 | IR_saveHK.attach(&flash_saveHK_eps_IR, 60); |
Yanagihara | 0:1771028c366a | 269 | seq_flag = 4; |
Yanagihara | 0:1771028c366a | 270 | pc.printf("start save HK to Flash memory Interrupt!!\r\n"); |
Yanagihara | 0:1771028c366a | 271 | pc.printf("seq_flag: %d\r\n", seq_flag); |
Yanagihara | 0:1771028c366a | 272 | } |
Yanagihara | 0:1771028c366a | 273 | |
Yanagihara | 0:1771028c366a | 274 | else if(cmd==6) { |
Yanagihara | 0:1771028c366a | 275 | // SP deployment |
Yanagihara | 0:1771028c366a | 276 | } |
Yanagihara | 0:1771028c366a | 277 | |
Yanagihara | 0:1771028c366a | 278 | |
Yanagihara | 0:1771028c366a | 279 | else if(cmd==7) { // SD転送割り込みスタート |
Yanagihara | 0:1771028c366a | 280 | IR_HKtoSD.attach(&sendHK_from_Flash_to_SD, 180); // 1hで割り込み(今回は120s) |
Yanagihara | 0:1771028c366a | 281 | seq_flag = 5; |
Yanagihara | 0:1771028c366a | 282 | pc.printf("start send HK from Flash memory to SD!!\r\n"); |
Yanagihara | 0:1771028c366a | 283 | pc.printf("seq_flag: %d\r\n", seq_flag); |
Yanagihara | 0:1771028c366a | 284 | } |
Yanagihara | 0:1771028c366a | 285 | |
Yanagihara | 0:1771028c366a | 286 | // else if(cmd==) { |
Yanagihara | 0:1771028c366a | 287 | // } |
Yanagihara | 0:1771028c366a | 288 | if(cmd == 99) { |
Yanagihara | 0:1771028c366a | 289 | // 1Hz getHK 割り込み終了 |
Yanagihara | 0:1771028c366a | 290 | IR_getHK.detach(); |
Yanagihara | 0:1771028c366a | 291 | IR_saveHK.detach(); |
Yanagihara | 0:1771028c366a | 292 | } |
Yanagihara | 0:1771028c366a | 293 | } |
Yanagihara | 0:1771028c366a | 294 | |
Yanagihara | 0:1771028c366a | 295 | |
Yanagihara | 0:1771028c366a | 296 | int main() { |
Yanagihara | 0:1771028c366a | 297 | uint8_t cmd = 1; |
Yanagihara | 0:1771028c366a | 298 | // ***Flashメモリ用ローカル変数・初期化****** |
Yanagihara | 0:1771028c366a | 299 | //uint32_t addr = 0x0; // 3byte (or 4byte) |
Yanagihara | 0:1771028c366a | 300 | uint16_t length = 0x100; // 例だと1Page=256 |
Yanagihara | 0:1771028c366a | 301 | spi_init(); // spi初期設定 |
Yanagihara | 0:1771028c366a | 302 | // *************************************** |
Yanagihara | 0:1771028c366a | 303 | |
Yanagihara | 0:1771028c366a | 304 | // ******割込関数******** |
Yanagihara | 0:1771028c366a | 305 | // ********************* |
Yanagihara | 0:1771028c366a | 306 | |
Yanagihara | 0:1771028c366a | 307 | pc.printf("CDH auto sequence start!!\r\n\r\n"); |
Yanagihara | 0:1771028c366a | 308 | |
Yanagihara | 0:1771028c366a | 309 | while(cmd<100) { |
Yanagihara | 0:1771028c366a | 310 | |
Yanagihara | 0:1771028c366a | 311 | pc.printf(">>cmd %d: ", cmd); |
Yanagihara | 0:1771028c366a | 312 | auto_sequence(cmd); |
Yanagihara | 0:1771028c366a | 313 | |
Yanagihara | 0:1771028c366a | 314 | cmd++; |
Yanagihara | 0:1771028c366a | 315 | wait(1); |
Yanagihara | 0:1771028c366a | 316 | } |
Yanagihara | 0:1771028c366a | 317 | } |