use mbed-src latest version and everything works well. RTC is also fine.

Dependencies:   L3GD20 LIS3DH TextLCD mbed-rtos mbed

Use standard library mbed & mbed-rtos (GR-PEACH can run without mbed-src and special mbed-rtos).

Committer:
kenjiArai
Date:
Thu Jan 08 13:03:16 2015 +0000
Revision:
5:dccdaaa1e57b
Parent:
4:76b3113c79ff
Child:
6:f14cce59e7fe
modified more simple way

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 1:a399a743d109 1 /*
kenjiArai 1:a399a743d109 2 * mbed Application program for the mbed
kenjiArai 1:a399a743d109 3 * Test program for GR-PEACH
kenjiArai 1:a399a743d109 4 *
kenjiArai 1:a399a743d109 5 * Copyright (c) 2014 Kenji Arai / JH1PJL
kenjiArai 1:a399a743d109 6 * http://www.page.sannet.ne.jp/kenjia/index.html
kenjiArai 1:a399a743d109 7 * http://mbed.org/users/kenjiArai/
kenjiArai 1:a399a743d109 8 * Created: November 29th, 2014
kenjiArai 5:dccdaaa1e57b 9 * Revised: January 7th, 2015
kenjiArai 1:a399a743d109 10 *
kenjiArai 1:a399a743d109 11 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
kenjiArai 1:a399a743d109 12 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
kenjiArai 1:a399a743d109 13 * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
kenjiArai 1:a399a743d109 14 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
kenjiArai 1:a399a743d109 15 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
kenjiArai 1:a399a743d109 16 */
kenjiArai 1:a399a743d109 17
kenjiArai 4:76b3113c79ff 18 // Include ---------------------------------------------------------------------------------------
kenjiArai 4:76b3113c79ff 19 #include "mbed.h"
kenjiArai 4:76b3113c79ff 20 #include "rtos.h"
kenjiArai 4:76b3113c79ff 21 #include "L3GD20.h"
kenjiArai 4:76b3113c79ff 22 #include "LIS3DH.h"
kenjiArai 5:dccdaaa1e57b 23 #include "TextLCD.h"
kenjiArai 4:76b3113c79ff 24 #include "ST7565_SPI_LCD.h"
kenjiArai 2:3747397a1618 25
kenjiArai 4:76b3113c79ff 26 // Definition ------------------------------------------------------------------------------------
kenjiArai 4:76b3113c79ff 27 #define USE_COM // use Communication with PC(UART)
kenjiArai 5:dccdaaa1e57b 28 #define USE_I2C_LCD
kenjiArai 5:dccdaaa1e57b 29 #define USE_I2C_SENSOR
kenjiArai 4:76b3113c79ff 30
kenjiArai 4:76b3113c79ff 31 // Com
kenjiArai 4:76b3113c79ff 32 #ifdef USE_COM
kenjiArai 4:76b3113c79ff 33 #define BAUD(x) pcx.baud(x)
kenjiArai 4:76b3113c79ff 34 #define GETC(x) pcx.getc(x)
kenjiArai 4:76b3113c79ff 35 #define PUTC(x) pcx.putc(x)
kenjiArai 4:76b3113c79ff 36 #define PRINTF(...) pcx.printf(__VA_ARGS__)
kenjiArai 4:76b3113c79ff 37 #define READABLE(x) pcx.readable(x)
kenjiArai 4:76b3113c79ff 38 #else
kenjiArai 4:76b3113c79ff 39 #define BAUD(x) {;}
kenjiArai 4:76b3113c79ff 40 #define GETC(x) {;}
kenjiArai 4:76b3113c79ff 41 #define PUTC(x) {;}
kenjiArai 4:76b3113c79ff 42 #define PRINTF(...) {;}
kenjiArai 4:76b3113c79ff 43 #define READABLE(x) {;}
kenjiArai 0:a17b3cf2f466 44 #endif
kenjiArai 0:a17b3cf2f466 45
kenjiArai 4:76b3113c79ff 46 #define TIMEBASE 12000
kenjiArai 4:76b3113c79ff 47 #define FIXED_STEPS 100
kenjiArai 4:76b3113c79ff 48
kenjiArai 4:76b3113c79ff 49 #define PI 3.1415926536
kenjiArai 4:76b3113c79ff 50 #define RAD_TO_DEG 57.29578
kenjiArai 5:dccdaaa1e57b 51 #define TIME_BASE_S 0.02
kenjiArai 4:76b3113c79ff 52 #define TIME_BASE_MS ( TIME_BASE_S * 1000)
kenjiArai 4:76b3113c79ff 53 #define RATE 0.1
kenjiArai 4:76b3113c79ff 54
kenjiArai 4:76b3113c79ff 55 // Object ----------------------------------------------------------------------------------------
kenjiArai 4:76b3113c79ff 56 // LED's
kenjiArai 4:76b3113c79ff 57 DigitalOut LEDs[4] = {
kenjiArai 4:76b3113c79ff 58 DigitalOut(LED1), DigitalOut(LED2), DigitalOut(LED3), DigitalOut(LED4)
kenjiArai 4:76b3113c79ff 59 };
kenjiArai 4:76b3113c79ff 60 // Swiches
kenjiArai 4:76b3113c79ff 61 DigitalIn USER_SWITCH[2] = {
kenjiArai 5:dccdaaa1e57b 62 #if defined(TARGET_RZ_A1H)
kenjiArai 4:76b3113c79ff 63 DigitalIn(P6_0), DigitalIn(P6_1)
kenjiArai 5:dccdaaa1e57b 64 #elif defined(TARGET_NUCLEO_F401RE) || defined(TARGET_NUCLEO_F401RE)
kenjiArai 4:76b3113c79ff 65 DigitalIn(PC_13), DigitalIn(A0)
kenjiArai 5:dccdaaa1e57b 66 #endif
kenjiArai 4:76b3113c79ff 67 };
kenjiArai 5:dccdaaa1e57b 68
kenjiArai 5:dccdaaa1e57b 69 // OS check
kenjiArai 5:dccdaaa1e57b 70 #if defined(TARGET_RZ_A1H)
kenjiArai 5:dccdaaa1e57b 71 DigitalOut task0(P1_8);
kenjiArai 5:dccdaaa1e57b 72 DigitalOut task1(P1_9);
kenjiArai 5:dccdaaa1e57b 73 #elif defined(TARGET_NUCLEO_F401RE) || defined(TARGET_NUCLEO_F401RE)
kenjiArai 5:dccdaaa1e57b 74 DigitalOut task0(A0);
kenjiArai 5:dccdaaa1e57b 75 DigitalOut task1(A1);
kenjiArai 5:dccdaaa1e57b 76 #endif
kenjiArai 5:dccdaaa1e57b 77
kenjiArai 4:76b3113c79ff 78 // com
kenjiArai 4:76b3113c79ff 79 #ifdef USE_COM
kenjiArai 4:76b3113c79ff 80 Serial pcx(USBTX, USBRX); // Communication with Host
kenjiArai 4:76b3113c79ff 81 #endif
kenjiArai 4:76b3113c79ff 82 I2C i2c(D14,D15);
kenjiArai 4:76b3113c79ff 83 // Gyro
kenjiArai 4:76b3113c79ff 84 L3GX_GYRO gyro(i2c, L3GD20_V_CHIP_ADDR, L3GX_DR_95HZ, L3GX_BW_HI, L3GX_FS_250DPS);
kenjiArai 4:76b3113c79ff 85 // Acc
kenjiArai 4:76b3113c79ff 86 LIS3DH acc(i2c, LIS3DH_G_CHIP_ADDR, LIS3DH_DR_NR_LP_50HZ, LIS3DH_FS_8G);
kenjiArai 5:dccdaaa1e57b 87 #ifdef USE_I2C_LCD
kenjiArai 5:dccdaaa1e57b 88 // LCD
kenjiArai 5:dccdaaa1e57b 89 TextLCD_I2C_N lcd0(&i2c, 0x7c, TextLCD::LCD16x2); // LCD(Akizuki AQM0802A)
kenjiArai 5:dccdaaa1e57b 90 #endif
kenjiArai 4:76b3113c79ff 91 // SPI LCD
kenjiArai 4:76b3113c79ff 92 SPI spi_lcd(D11, D12, D13); // mosi, miso, sck
kenjiArai 4:76b3113c79ff 93 ST7565 lcd1(spi_lcd, D8, D9, D7, ST7565::AQM1248A); // spi,reset,a0,ncs, LCD(Akizuki AQM1248A)
kenjiArai 4:76b3113c79ff 94 // Mutex
kenjiArai 4:76b3113c79ff 95 Mutex i2c_mutex;
kenjiArai 0:a17b3cf2f466 96
kenjiArai 4:76b3113c79ff 97 // RAM -------------------------------------------------------------------------------------------
kenjiArai 4:76b3113c79ff 98 Queue<uint32_t, 2> queue0;
kenjiArai 4:76b3113c79ff 99 float fa[3]; // Acc 0:X, 1:Y, 2:Z
kenjiArai 4:76b3113c79ff 100 float fg[3]; // Gyro 0:X, 1:Y, 2:Z
kenjiArai 4:76b3113c79ff 101
kenjiArai 4:76b3113c79ff 102 /* Mail */
kenjiArai 4:76b3113c79ff 103 typedef struct {
kenjiArai 4:76b3113c79ff 104 float voltage; /* AD result of measured voltage */
kenjiArai 4:76b3113c79ff 105 float current; /* AD result of measured current */
kenjiArai 4:76b3113c79ff 106 uint32_t counter; /* A counter value */
kenjiArai 4:76b3113c79ff 107 } mail_t;
kenjiArai 4:76b3113c79ff 108
kenjiArai 4:76b3113c79ff 109 Mail<mail_t, 16> mail_box;
kenjiArai 4:76b3113c79ff 110
kenjiArai 4:76b3113c79ff 111 uint8_t show_flag;
kenjiArai 5:dccdaaa1e57b 112 uint32_t count;
kenjiArai 5:dccdaaa1e57b 113
kenjiArai 5:dccdaaa1e57b 114 #if defined(TARGET_RZ_A1H)
kenjiArai 5:dccdaaa1e57b 115 uint8_t big_data[4096*1024];
kenjiArai 5:dccdaaa1e57b 116 uint32_t big_data_index = 0;
kenjiArai 5:dccdaaa1e57b 117 #endif
kenjiArai 4:76b3113c79ff 118
kenjiArai 4:76b3113c79ff 119 // ROM / Constant data ---------------------------------------------------------------------------
kenjiArai 4:76b3113c79ff 120
kenjiArai 4:76b3113c79ff 121 // Function prototypes ---------------------------------------------------------------------------
kenjiArai 4:76b3113c79ff 122
kenjiArai 4:76b3113c79ff 123 // Function prototypes ---------------------------------------------------------------------------
kenjiArai 4:76b3113c79ff 124 extern int mon( void);
kenjiArai 4:76b3113c79ff 125
kenjiArai 4:76b3113c79ff 126 //-------------------------------------------------------------------------------------------------
kenjiArai 4:76b3113c79ff 127 // Control Program
kenjiArai 4:76b3113c79ff 128 //-------------------------------------------------------------------------------------------------
kenjiArai 4:76b3113c79ff 129 void send_thread (void const *args) {
kenjiArai 4:76b3113c79ff 130 uint32_t i = 0;
kenjiArai 4:76b3113c79ff 131 while (true) {
kenjiArai 4:76b3113c79ff 132 i++; // fake data update
kenjiArai 4:76b3113c79ff 133 mail_t *mail = mail_box.alloc();
kenjiArai 4:76b3113c79ff 134 mail->voltage = (i * 0.1) * 33;
kenjiArai 4:76b3113c79ff 135 mail->current = (i * 0.1) * 11;
kenjiArai 4:76b3113c79ff 136 mail->counter = i;
kenjiArai 4:76b3113c79ff 137 mail_box.put(mail);
kenjiArai 4:76b3113c79ff 138 Thread::wait(1000);
kenjiArai 4:76b3113c79ff 139 }
kenjiArai 4:76b3113c79ff 140 }
kenjiArai 4:76b3113c79ff 141
kenjiArai 4:76b3113c79ff 142 void blink(void const *n) {
kenjiArai 4:76b3113c79ff 143 LEDs[(int)n] = !LEDs[(int)n];
kenjiArai 4:76b3113c79ff 144 }
kenjiArai 4:76b3113c79ff 145
kenjiArai 4:76b3113c79ff 146 // Read switch status
kenjiArai 4:76b3113c79ff 147 int read_sw(uint8_t n){
kenjiArai 4:76b3113c79ff 148 if (USER_SWITCH[n] == 0){ return 1;
kenjiArai 4:76b3113c79ff 149 } else { return 0;}
kenjiArai 4:76b3113c79ff 150 }
kenjiArai 4:76b3113c79ff 151
kenjiArai 4:76b3113c79ff 152 // Monitor program
kenjiArai 4:76b3113c79ff 153 void monitor(void const *args){
kenjiArai 5:dccdaaa1e57b 154 Thread::wait(1000);
kenjiArai 4:76b3113c79ff 155 while (true){
kenjiArai 4:76b3113c79ff 156 mon();
kenjiArai 0:a17b3cf2f466 157 }
kenjiArai 0:a17b3cf2f466 158 }
kenjiArai 4:76b3113c79ff 159
kenjiArai 4:76b3113c79ff 160 // Interrupt routine
kenjiArai 4:76b3113c79ff 161 void queue_isr0() {
kenjiArai 4:76b3113c79ff 162 queue0.put((uint32_t*)1);
kenjiArai 4:76b3113c79ff 163 }
kenjiArai 4:76b3113c79ff 164
kenjiArai 4:76b3113c79ff 165 // Update sensor data
kenjiArai 4:76b3113c79ff 166 void update_angle(void const *args){
kenjiArai 4:76b3113c79ff 167 while (true) {
kenjiArai 4:76b3113c79ff 168 osEvent evt = queue0.get();
kenjiArai 4:76b3113c79ff 169 // ---->lock
kenjiArai 4:76b3113c79ff 170 i2c_mutex.lock();
kenjiArai 5:dccdaaa1e57b 171 #ifdef USE_I2C_SENSOR
kenjiArai 4:76b3113c79ff 172 // read acceleration data from sensor
kenjiArai 4:76b3113c79ff 173 acc.read_data(fa);
kenjiArai 4:76b3113c79ff 174 // read gyroscope data from sensor
kenjiArai 4:76b3113c79ff 175 gyro.read_data(fg);
kenjiArai 5:dccdaaa1e57b 176 #else
kenjiArai 5:dccdaaa1e57b 177 fa[0] = fa[1] = fa[2] = 1.11f;
kenjiArai 5:dccdaaa1e57b 178 fg[0] = fg[1] = fg[2] = 1.11f;
kenjiArai 5:dccdaaa1e57b 179 #endif
kenjiArai 4:76b3113c79ff 180 // <----unlock
kenjiArai 4:76b3113c79ff 181 i2c_mutex.unlock();
kenjiArai 5:dccdaaa1e57b 182 // debug
kenjiArai 5:dccdaaa1e57b 183 task0 = !task0;
kenjiArai 4:76b3113c79ff 184 }
kenjiArai 4:76b3113c79ff 185 }
kenjiArai 4:76b3113c79ff 186
kenjiArai 4:76b3113c79ff 187 // Update sensor data
kenjiArai 4:76b3113c79ff 188 void display(void const *args){
kenjiArai 5:dccdaaa1e57b 189 uint32_t n = 0;
kenjiArai 5:dccdaaa1e57b 190
kenjiArai 4:76b3113c79ff 191 lcd1.cls();
kenjiArai 4:76b3113c79ff 192 while (true) {
kenjiArai 5:dccdaaa1e57b 193 #ifdef USE_I2C_LCD
kenjiArai 5:dccdaaa1e57b 194 i2c_mutex.lock();
kenjiArai 5:dccdaaa1e57b 195 lcd0.locate(0, 0); // 1st line top
kenjiArai 5:dccdaaa1e57b 196 lcd0.printf("G=%7.1f ", sqrt(fa[0]*fa[0] + fa[1]*fa[1] + fa[2]*fa[2]));
kenjiArai 5:dccdaaa1e57b 197 lcd0.locate(0, 1); // 2nd line top
kenjiArai 5:dccdaaa1e57b 198 lcd0.printf("%8d",n);
kenjiArai 5:dccdaaa1e57b 199 i2c_mutex.unlock();
kenjiArai 5:dccdaaa1e57b 200 #endif
kenjiArai 5:dccdaaa1e57b 201 lcd1.locate(0,0);
kenjiArai 5:dccdaaa1e57b 202 lcd1.printf("G:%+6.1f,%+6.1f,%+6.1f \r\n", fg[0], fg[1], fg[2]);
kenjiArai 5:dccdaaa1e57b 203 lcd1.printf("A:%+6.1f,%+6.1f,%+6.1f \r\n", fa[0], fa[1], fa[2]);
kenjiArai 5:dccdaaa1e57b 204 lcd1.printf("%d\r\n", n++);
kenjiArai 4:76b3113c79ff 205 Thread::wait(500);
kenjiArai 5:dccdaaa1e57b 206 // debug
kenjiArai 5:dccdaaa1e57b 207 task1 = !task1;
kenjiArai 4:76b3113c79ff 208 }
kenjiArai 4:76b3113c79ff 209 }
kenjiArai 4:76b3113c79ff 210
kenjiArai 4:76b3113c79ff 211 // Thread definition
kenjiArai 5:dccdaaa1e57b 212 #if defined(TARGET_RZ_A1H)
kenjiArai 5:dccdaaa1e57b 213 osThreadDef(update_angle, osPriorityNormal, 2048);
kenjiArai 5:dccdaaa1e57b 214 osThreadDef(monitor, osPriorityNormal, 2048);
kenjiArai 5:dccdaaa1e57b 215 osThreadDef(display, osPriorityAboveNormal, 2048);
kenjiArai 5:dccdaaa1e57b 216 #elif defined(TARGET_NUCLEO_F401RE) || defined(TARGET_NUCLEO_F401RE)
kenjiArai 5:dccdaaa1e57b 217 osThreadDef(update_angle, osPriorityNormal, 1024);
kenjiArai 5:dccdaaa1e57b 218 osThreadDef(monitor, osPriorityNormal, 1024);
kenjiArai 5:dccdaaa1e57b 219 osThreadDef(display, osPriorityAboveNormal, 1024);
kenjiArai 5:dccdaaa1e57b 220 #endif
kenjiArai 4:76b3113c79ff 221
kenjiArai 4:76b3113c79ff 222 int main(void) {
kenjiArai 5:dccdaaa1e57b 223 PRINTF("\r\nstep1\r\n");
kenjiArai 4:76b3113c79ff 224
kenjiArai 4:76b3113c79ff 225 RtosTimer led_1_timer(blink, osTimerPeriodic, (void *)0);
kenjiArai 4:76b3113c79ff 226 RtosTimer led_2_timer(blink, osTimerPeriodic, (void *)1);
kenjiArai 4:76b3113c79ff 227 RtosTimer led_3_timer(blink, osTimerPeriodic, (void *)2);
kenjiArai 4:76b3113c79ff 228 RtosTimer led_4_timer(blink, osTimerPeriodic, (void *)3);
kenjiArai 4:76b3113c79ff 229
kenjiArai 4:76b3113c79ff 230 PRINTF("step2\r\n");
kenjiArai 4:76b3113c79ff 231 led_1_timer.start(2000);
kenjiArai 4:76b3113c79ff 232 led_2_timer.start(1000);
kenjiArai 4:76b3113c79ff 233 led_3_timer.start(500);
kenjiArai 4:76b3113c79ff 234 led_4_timer.start(250);
kenjiArai 4:76b3113c79ff 235
kenjiArai 4:76b3113c79ff 236 PRINTF("step3\r\n");
kenjiArai 4:76b3113c79ff 237 Thread thread(send_thread);
kenjiArai 4:76b3113c79ff 238
kenjiArai 4:76b3113c79ff 239 PRINTF("step4\r\n");
kenjiArai 4:76b3113c79ff 240
kenjiArai 4:76b3113c79ff 241 // IRQ
kenjiArai 4:76b3113c79ff 242 Ticker ticker0;
kenjiArai 4:76b3113c79ff 243 Ticker ticker1;
kenjiArai 4:76b3113c79ff 244 ticker0.attach(queue_isr0, TIME_BASE_S);
kenjiArai 4:76b3113c79ff 245
kenjiArai 4:76b3113c79ff 246 PRINTF("step5\r\n");
kenjiArai 5:dccdaaa1e57b 247 // Starts threads
kenjiArai 5:dccdaaa1e57b 248 if (osThreadCreate(osThread(display), NULL) == NULL){
kenjiArai 5:dccdaaa1e57b 249 PRINTF("ERROR4\r\n");
kenjiArai 5:dccdaaa1e57b 250 }
kenjiArai 5:dccdaaa1e57b 251 if (osThreadCreate(osThread(monitor), NULL) == NULL){
kenjiArai 5:dccdaaa1e57b 252 PRINTF("ERROR3\r\n");
kenjiArai 5:dccdaaa1e57b 253 }
kenjiArai 5:dccdaaa1e57b 254 if (osThreadCreate(osThread(update_angle), NULL) == NULL){
kenjiArai 5:dccdaaa1e57b 255 PRINTF("ERROR1\r\n");
kenjiArai 5:dccdaaa1e57b 256 }
kenjiArai 4:76b3113c79ff 257
kenjiArai 5:dccdaaa1e57b 258 // SPI LCD
kenjiArai 5:dccdaaa1e57b 259 spi_lcd.frequency(100000);
kenjiArai 5:dccdaaa1e57b 260 lcd1.cls();
kenjiArai 5:dccdaaa1e57b 261 lcd1.set_contrast(0x2a);
kenjiArai 5:dccdaaa1e57b 262 lcd1.printf("test\r\n" );
kenjiArai 5:dccdaaa1e57b 263 lcd1.printf("Kenji Arai / JH1PJL\r\n" );
kenjiArai 5:dccdaaa1e57b 264 lcd1.printf("ABCDEFG 1234567890\r\n" );
kenjiArai 5:dccdaaa1e57b 265 lcd1.rect(5,30,120,62,1);
kenjiArai 5:dccdaaa1e57b 266 lcd1.circle(5,35,5,1);
kenjiArai 5:dccdaaa1e57b 267 lcd1.fillcircle(60,55,5,1);
kenjiArai 5:dccdaaa1e57b 268 lcd1.line(0,30,127,63,1);
kenjiArai 5:dccdaaa1e57b 269 // I2C LCD
kenjiArai 5:dccdaaa1e57b 270 #ifdef USE_I2C_LCD
kenjiArai 5:dccdaaa1e57b 271 // ---->lock
kenjiArai 5:dccdaaa1e57b 272 i2c_mutex.lock();
kenjiArai 5:dccdaaa1e57b 273 lcd0.locate(0, 0); // 1st line top
kenjiArai 5:dccdaaa1e57b 274 lcd0.printf("I2C test");
kenjiArai 5:dccdaaa1e57b 275 lcd0.locate(0, 1); // 2nd line top
kenjiArai 5:dccdaaa1e57b 276 lcd0.puts(" JH1PJL ");
kenjiArai 5:dccdaaa1e57b 277 lcd0.setContrast(0x14);
kenjiArai 5:dccdaaa1e57b 278 // <----unlock
kenjiArai 5:dccdaaa1e57b 279 i2c_mutex.unlock();
kenjiArai 5:dccdaaa1e57b 280 #endif
kenjiArai 5:dccdaaa1e57b 281 count = 0;
kenjiArai 4:76b3113c79ff 282 PRINTF("step6\r\n");
kenjiArai 4:76b3113c79ff 283 while (true) {
kenjiArai 4:76b3113c79ff 284 osEvent evt = mail_box.get();
kenjiArai 4:76b3113c79ff 285 if (evt.status == osEventMail) {
kenjiArai 4:76b3113c79ff 286 mail_t *mail = (mail_t*)evt.value.p;
kenjiArai 4:76b3113c79ff 287 if (show_flag){
kenjiArai 4:76b3113c79ff 288 PRINTF("This is dummy!, ");
kenjiArai 4:76b3113c79ff 289 PRINTF("Volt: %.2f V, " , mail->voltage);
kenjiArai 4:76b3113c79ff 290 PRINTF("Current: %.2f A, " , mail->current);
kenjiArai 4:76b3113c79ff 291 PRINTF("# of cycles: %u\r\n", mail->counter);
kenjiArai 4:76b3113c79ff 292 }
kenjiArai 4:76b3113c79ff 293 mail_box.free(mail);
kenjiArai 4:76b3113c79ff 294 }
kenjiArai 5:dccdaaa1e57b 295 #if defined(TARGET_RZ_A1H)
kenjiArai 5:dccdaaa1e57b 296 for (uint32_t i = 0; i < 100; i++){
kenjiArai 5:dccdaaa1e57b 297 big_data[big_data_index] = ++big_data_index;
kenjiArai 5:dccdaaa1e57b 298 if (big_data_index == (4096 * 1024)){
kenjiArai 5:dccdaaa1e57b 299 big_data_index = 0;
kenjiArai 5:dccdaaa1e57b 300 }
kenjiArai 5:dccdaaa1e57b 301 }
kenjiArai 5:dccdaaa1e57b 302 #endif
kenjiArai 4:76b3113c79ff 303 }
kenjiArai 4:76b3113c79ff 304 }
kenjiArai 5:dccdaaa1e57b 305
kenjiArai 5:dccdaaa1e57b 306 void mbed_die(void) {
kenjiArai 5:dccdaaa1e57b 307 PRINTF("Error, came from os_error()!\r\n");
kenjiArai 5:dccdaaa1e57b 308 gpio_t led_1; gpio_init_out(&led_1, LED1);
kenjiArai 5:dccdaaa1e57b 309 gpio_t led_2; gpio_init_out(&led_2, LED2);
kenjiArai 5:dccdaaa1e57b 310 gpio_t led_3; gpio_init_out(&led_3, LED3);
kenjiArai 5:dccdaaa1e57b 311 gpio_t led_4; gpio_init_out(&led_4, LED4);
kenjiArai 5:dccdaaa1e57b 312
kenjiArai 5:dccdaaa1e57b 313 while (1) {
kenjiArai 5:dccdaaa1e57b 314 gpio_write(&led_1, 1);
kenjiArai 5:dccdaaa1e57b 315 gpio_write(&led_2, 0);
kenjiArai 5:dccdaaa1e57b 316 gpio_write(&led_3, 0);
kenjiArai 5:dccdaaa1e57b 317 gpio_write(&led_4, 1);
kenjiArai 5:dccdaaa1e57b 318 wait_ms(100);
kenjiArai 5:dccdaaa1e57b 319 gpio_write(&led_1, 0);
kenjiArai 5:dccdaaa1e57b 320 gpio_write(&led_2, 1);
kenjiArai 5:dccdaaa1e57b 321 gpio_write(&led_3, 1);
kenjiArai 5:dccdaaa1e57b 322 gpio_write(&led_4, 0);
kenjiArai 5:dccdaaa1e57b 323 wait_ms(100);
kenjiArai 5:dccdaaa1e57b 324 }
kenjiArai 5:dccdaaa1e57b 325 }