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 Feb 12 07:53:25 2015 +0000
Revision:
9:de986e74bd93
Parent:
8:4006b111c0d4
use standard library mbed & mbed-rtos

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 8:4006b111c0d4 5 * Copyright (c) 2014,'15 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 8:4006b111c0d4 9 * Revised: Feburary 8th, 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 2:3747397a1618 24
kenjiArai 4:76b3113c79ff 25 // Definition ------------------------------------------------------------------------------------
kenjiArai 4:76b3113c79ff 26 #define USE_COM // use Communication with PC(UART)
kenjiArai 5:dccdaaa1e57b 27 #define USE_I2C_LCD
kenjiArai 5:dccdaaa1e57b 28 #define USE_I2C_SENSOR
kenjiArai 4:76b3113c79ff 29
kenjiArai 4:76b3113c79ff 30 // Com
kenjiArai 4:76b3113c79ff 31 #ifdef USE_COM
kenjiArai 4:76b3113c79ff 32 #define BAUD(x) pcx.baud(x)
kenjiArai 4:76b3113c79ff 33 #define GETC(x) pcx.getc(x)
kenjiArai 4:76b3113c79ff 34 #define PUTC(x) pcx.putc(x)
kenjiArai 4:76b3113c79ff 35 #define PRINTF(...) pcx.printf(__VA_ARGS__)
kenjiArai 4:76b3113c79ff 36 #define READABLE(x) pcx.readable(x)
kenjiArai 4:76b3113c79ff 37 #else
kenjiArai 4:76b3113c79ff 38 #define BAUD(x) {;}
kenjiArai 4:76b3113c79ff 39 #define GETC(x) {;}
kenjiArai 4:76b3113c79ff 40 #define PUTC(x) {;}
kenjiArai 4:76b3113c79ff 41 #define PRINTF(...) {;}
kenjiArai 4:76b3113c79ff 42 #define READABLE(x) {;}
kenjiArai 0:a17b3cf2f466 43 #endif
kenjiArai 0:a17b3cf2f466 44
kenjiArai 4:76b3113c79ff 45 #define TIMEBASE 12000
kenjiArai 4:76b3113c79ff 46 #define FIXED_STEPS 100
kenjiArai 4:76b3113c79ff 47
kenjiArai 4:76b3113c79ff 48 #define PI 3.1415926536
kenjiArai 4:76b3113c79ff 49 #define RAD_TO_DEG 57.29578
kenjiArai 5:dccdaaa1e57b 50 #define TIME_BASE_S 0.02
kenjiArai 4:76b3113c79ff 51 #define TIME_BASE_MS ( TIME_BASE_S * 1000)
kenjiArai 4:76b3113c79ff 52 #define RATE 0.1
kenjiArai 4:76b3113c79ff 53
kenjiArai 4:76b3113c79ff 54 // Object ----------------------------------------------------------------------------------------
kenjiArai 4:76b3113c79ff 55 // LED's
kenjiArai 4:76b3113c79ff 56 DigitalOut LEDs[4] = {
kenjiArai 4:76b3113c79ff 57 DigitalOut(LED1), DigitalOut(LED2), DigitalOut(LED3), DigitalOut(LED4)
kenjiArai 4:76b3113c79ff 58 };
kenjiArai 4:76b3113c79ff 59 // Swiches
kenjiArai 4:76b3113c79ff 60 DigitalIn USER_SWITCH[2] = {
kenjiArai 5:dccdaaa1e57b 61 #if defined(TARGET_RZ_A1H)
kenjiArai 4:76b3113c79ff 62 DigitalIn(P6_0), DigitalIn(P6_1)
kenjiArai 6:f14cce59e7fe 63 #elif defined(TARGET_NUCLEO_F401RE) || defined(TARGET_NUCLEO_F411RE)
kenjiArai 4:76b3113c79ff 64 DigitalIn(PC_13), DigitalIn(A0)
kenjiArai 5:dccdaaa1e57b 65 #endif
kenjiArai 4:76b3113c79ff 66 };
kenjiArai 5:dccdaaa1e57b 67
kenjiArai 5:dccdaaa1e57b 68 // OS check
kenjiArai 5:dccdaaa1e57b 69 #if defined(TARGET_RZ_A1H)
kenjiArai 5:dccdaaa1e57b 70 DigitalOut task0(P1_8);
kenjiArai 5:dccdaaa1e57b 71 DigitalOut task1(P1_9);
kenjiArai 6:f14cce59e7fe 72 #elif defined(TARGET_NUCLEO_F401RE) || defined(TARGET_NUCLEO_F411RE)
kenjiArai 5:dccdaaa1e57b 73 DigitalOut task0(A0);
kenjiArai 5:dccdaaa1e57b 74 DigitalOut task1(A1);
kenjiArai 5:dccdaaa1e57b 75 #endif
kenjiArai 5:dccdaaa1e57b 76
kenjiArai 4:76b3113c79ff 77 // com
kenjiArai 4:76b3113c79ff 78 #ifdef USE_COM
kenjiArai 4:76b3113c79ff 79 Serial pcx(USBTX, USBRX); // Communication with Host
kenjiArai 4:76b3113c79ff 80 #endif
kenjiArai 4:76b3113c79ff 81 I2C i2c(D14,D15);
kenjiArai 4:76b3113c79ff 82 // Gyro
kenjiArai 4:76b3113c79ff 83 L3GX_GYRO gyro(i2c, L3GD20_V_CHIP_ADDR, L3GX_DR_95HZ, L3GX_BW_HI, L3GX_FS_250DPS);
kenjiArai 4:76b3113c79ff 84 // Acc
kenjiArai 4:76b3113c79ff 85 LIS3DH acc(i2c, LIS3DH_G_CHIP_ADDR, LIS3DH_DR_NR_LP_50HZ, LIS3DH_FS_8G);
kenjiArai 5:dccdaaa1e57b 86 #ifdef USE_I2C_LCD
kenjiArai 5:dccdaaa1e57b 87 // LCD
kenjiArai 5:dccdaaa1e57b 88 TextLCD_I2C_N lcd0(&i2c, 0x7c, TextLCD::LCD16x2); // LCD(Akizuki AQM0802A)
kenjiArai 5:dccdaaa1e57b 89 #endif
kenjiArai 4:76b3113c79ff 90 // Mutex
kenjiArai 4:76b3113c79ff 91 Mutex i2c_mutex;
kenjiArai 0:a17b3cf2f466 92
kenjiArai 4:76b3113c79ff 93 // RAM -------------------------------------------------------------------------------------------
kenjiArai 4:76b3113c79ff 94 Queue<uint32_t, 2> queue0;
kenjiArai 4:76b3113c79ff 95 float fa[3]; // Acc 0:X, 1:Y, 2:Z
kenjiArai 4:76b3113c79ff 96 float fg[3]; // Gyro 0:X, 1:Y, 2:Z
kenjiArai 4:76b3113c79ff 97
kenjiArai 4:76b3113c79ff 98 /* Mail */
kenjiArai 4:76b3113c79ff 99 typedef struct {
kenjiArai 4:76b3113c79ff 100 float voltage; /* AD result of measured voltage */
kenjiArai 4:76b3113c79ff 101 float current; /* AD result of measured current */
kenjiArai 4:76b3113c79ff 102 uint32_t counter; /* A counter value */
kenjiArai 4:76b3113c79ff 103 } mail_t;
kenjiArai 4:76b3113c79ff 104
kenjiArai 4:76b3113c79ff 105 Mail<mail_t, 16> mail_box;
kenjiArai 4:76b3113c79ff 106
kenjiArai 8:4006b111c0d4 107 uint8_t show_flag0;
kenjiArai 8:4006b111c0d4 108 uint8_t show_flag1;
kenjiArai 5:dccdaaa1e57b 109 uint32_t count;
kenjiArai 5:dccdaaa1e57b 110
kenjiArai 5:dccdaaa1e57b 111 #if defined(TARGET_RZ_A1H)
kenjiArai 5:dccdaaa1e57b 112 uint8_t big_data[4096*1024];
kenjiArai 5:dccdaaa1e57b 113 uint32_t big_data_index = 0;
kenjiArai 5:dccdaaa1e57b 114 #endif
kenjiArai 4:76b3113c79ff 115
kenjiArai 4:76b3113c79ff 116 // ROM / Constant data ---------------------------------------------------------------------------
kenjiArai 4:76b3113c79ff 117
kenjiArai 4:76b3113c79ff 118 // Function prototypes ---------------------------------------------------------------------------
kenjiArai 4:76b3113c79ff 119
kenjiArai 4:76b3113c79ff 120 // Function prototypes ---------------------------------------------------------------------------
kenjiArai 4:76b3113c79ff 121 extern int mon( void);
kenjiArai 4:76b3113c79ff 122
kenjiArai 4:76b3113c79ff 123 //-------------------------------------------------------------------------------------------------
kenjiArai 4:76b3113c79ff 124 // Control Program
kenjiArai 4:76b3113c79ff 125 //-------------------------------------------------------------------------------------------------
kenjiArai 4:76b3113c79ff 126 void send_thread (void const *args) {
kenjiArai 4:76b3113c79ff 127 uint32_t i = 0;
kenjiArai 4:76b3113c79ff 128 while (true) {
kenjiArai 4:76b3113c79ff 129 i++; // fake data update
kenjiArai 4:76b3113c79ff 130 mail_t *mail = mail_box.alloc();
kenjiArai 4:76b3113c79ff 131 mail->voltage = (i * 0.1) * 33;
kenjiArai 4:76b3113c79ff 132 mail->current = (i * 0.1) * 11;
kenjiArai 4:76b3113c79ff 133 mail->counter = i;
kenjiArai 4:76b3113c79ff 134 mail_box.put(mail);
kenjiArai 4:76b3113c79ff 135 Thread::wait(1000);
kenjiArai 4:76b3113c79ff 136 }
kenjiArai 4:76b3113c79ff 137 }
kenjiArai 4:76b3113c79ff 138
kenjiArai 4:76b3113c79ff 139 void blink(void const *n) {
kenjiArai 4:76b3113c79ff 140 LEDs[(int)n] = !LEDs[(int)n];
kenjiArai 4:76b3113c79ff 141 }
kenjiArai 4:76b3113c79ff 142
kenjiArai 4:76b3113c79ff 143 // Read switch status
kenjiArai 4:76b3113c79ff 144 int read_sw(uint8_t n){
kenjiArai 4:76b3113c79ff 145 if (USER_SWITCH[n] == 0){ return 1;
kenjiArai 4:76b3113c79ff 146 } else { return 0;}
kenjiArai 4:76b3113c79ff 147 }
kenjiArai 4:76b3113c79ff 148
kenjiArai 4:76b3113c79ff 149 // Monitor program
kenjiArai 4:76b3113c79ff 150 void monitor(void const *args){
kenjiArai 5:dccdaaa1e57b 151 Thread::wait(1000);
kenjiArai 4:76b3113c79ff 152 while (true){
kenjiArai 4:76b3113c79ff 153 mon();
kenjiArai 0:a17b3cf2f466 154 }
kenjiArai 0:a17b3cf2f466 155 }
kenjiArai 4:76b3113c79ff 156
kenjiArai 8:4006b111c0d4 157 void watch_time (void const *args) {
kenjiArai 8:4006b111c0d4 158 uint32_t i = 0;
kenjiArai 8:4006b111c0d4 159 time_t seconds;
kenjiArai 8:4006b111c0d4 160 char buf[64];
kenjiArai 9:de986e74bd93 161 #if 0
kenjiArai 9:de986e74bd93 162 struct tm t;
kenjiArai 8:4006b111c0d4 163
kenjiArai 8:4006b111c0d4 164 t.tm_year = 15 + 100;
kenjiArai 8:4006b111c0d4 165 t.tm_mon = 2 - 1;
kenjiArai 8:4006b111c0d4 166 t.tm_mday = 7;
kenjiArai 8:4006b111c0d4 167 t.tm_hour = 22;
kenjiArai 8:4006b111c0d4 168 t.tm_min = 21;
kenjiArai 8:4006b111c0d4 169 t.tm_sec = 20;
kenjiArai 8:4006b111c0d4 170 seconds = mktime(&t);
kenjiArai 8:4006b111c0d4 171 set_time(seconds);
kenjiArai 8:4006b111c0d4 172 #endif
kenjiArai 8:4006b111c0d4 173 while (true) {
kenjiArai 8:4006b111c0d4 174 seconds = time(NULL);
kenjiArai 8:4006b111c0d4 175 strftime(buf, 40, "%B %d,'%y, %H:%M:%S", localtime(&seconds));
kenjiArai 8:4006b111c0d4 176 if (show_flag1){
kenjiArai 8:4006b111c0d4 177 printf("[TASK1] %s, No:%5d, Ticker:%10u\r\n",buf, i++, us_ticker_read());
kenjiArai 8:4006b111c0d4 178 }
kenjiArai 8:4006b111c0d4 179 Thread::wait(1000);
kenjiArai 8:4006b111c0d4 180 }
kenjiArai 8:4006b111c0d4 181 }
kenjiArai 8:4006b111c0d4 182
kenjiArai 4:76b3113c79ff 183 // Interrupt routine
kenjiArai 4:76b3113c79ff 184 void queue_isr0() {
kenjiArai 4:76b3113c79ff 185 queue0.put((uint32_t*)1);
kenjiArai 4:76b3113c79ff 186 }
kenjiArai 4:76b3113c79ff 187
kenjiArai 4:76b3113c79ff 188 // Update sensor data
kenjiArai 4:76b3113c79ff 189 void update_angle(void const *args){
kenjiArai 4:76b3113c79ff 190 while (true) {
kenjiArai 4:76b3113c79ff 191 osEvent evt = queue0.get();
kenjiArai 4:76b3113c79ff 192 // ---->lock
kenjiArai 4:76b3113c79ff 193 i2c_mutex.lock();
kenjiArai 5:dccdaaa1e57b 194 #ifdef USE_I2C_SENSOR
kenjiArai 4:76b3113c79ff 195 // read acceleration data from sensor
kenjiArai 4:76b3113c79ff 196 acc.read_data(fa);
kenjiArai 4:76b3113c79ff 197 // read gyroscope data from sensor
kenjiArai 4:76b3113c79ff 198 gyro.read_data(fg);
kenjiArai 5:dccdaaa1e57b 199 #else
kenjiArai 5:dccdaaa1e57b 200 fa[0] = fa[1] = fa[2] = 1.11f;
kenjiArai 5:dccdaaa1e57b 201 fg[0] = fg[1] = fg[2] = 1.11f;
kenjiArai 5:dccdaaa1e57b 202 #endif
kenjiArai 4:76b3113c79ff 203 // <----unlock
kenjiArai 4:76b3113c79ff 204 i2c_mutex.unlock();
kenjiArai 5:dccdaaa1e57b 205 // debug
kenjiArai 5:dccdaaa1e57b 206 task0 = !task0;
kenjiArai 4:76b3113c79ff 207 }
kenjiArai 4:76b3113c79ff 208 }
kenjiArai 4:76b3113c79ff 209
kenjiArai 4:76b3113c79ff 210 // Update sensor data
kenjiArai 4:76b3113c79ff 211 void display(void const *args){
kenjiArai 5:dccdaaa1e57b 212 uint32_t n = 0;
kenjiArai 5:dccdaaa1e57b 213
kenjiArai 4:76b3113c79ff 214 while (true) {
kenjiArai 5:dccdaaa1e57b 215 #ifdef USE_I2C_LCD
kenjiArai 5:dccdaaa1e57b 216 i2c_mutex.lock();
kenjiArai 5:dccdaaa1e57b 217 lcd0.locate(0, 0); // 1st line top
kenjiArai 6:f14cce59e7fe 218 lcd0.printf(" G=%4.1f ", sqrt(fa[0]*fa[0] + fa[1]*fa[1] + fa[2]*fa[2]));
kenjiArai 5:dccdaaa1e57b 219 lcd0.locate(0, 1); // 2nd line top
kenjiArai 6:f14cce59e7fe 220 lcd0.printf("%8d",n++);
kenjiArai 5:dccdaaa1e57b 221 i2c_mutex.unlock();
kenjiArai 5:dccdaaa1e57b 222 #endif
kenjiArai 4:76b3113c79ff 223 Thread::wait(500);
kenjiArai 5:dccdaaa1e57b 224 // debug
kenjiArai 5:dccdaaa1e57b 225 task1 = !task1;
kenjiArai 4:76b3113c79ff 226 }
kenjiArai 4:76b3113c79ff 227 }
kenjiArai 4:76b3113c79ff 228
kenjiArai 4:76b3113c79ff 229 // Thread definition
kenjiArai 5:dccdaaa1e57b 230 osThreadDef(update_angle, osPriorityNormal, 1024);
kenjiArai 5:dccdaaa1e57b 231 osThreadDef(monitor, osPriorityNormal, 1024);
kenjiArai 5:dccdaaa1e57b 232 osThreadDef(display, osPriorityAboveNormal, 1024);
kenjiArai 8:4006b111c0d4 233 osThreadDef(watch_time, osPriorityNormal, 1024);
kenjiArai 4:76b3113c79ff 234
kenjiArai 4:76b3113c79ff 235 int main(void) {
kenjiArai 5:dccdaaa1e57b 236 PRINTF("\r\nstep1\r\n");
kenjiArai 4:76b3113c79ff 237
kenjiArai 4:76b3113c79ff 238 RtosTimer led_1_timer(blink, osTimerPeriodic, (void *)0);
kenjiArai 4:76b3113c79ff 239 RtosTimer led_2_timer(blink, osTimerPeriodic, (void *)1);
kenjiArai 4:76b3113c79ff 240 RtosTimer led_3_timer(blink, osTimerPeriodic, (void *)2);
kenjiArai 4:76b3113c79ff 241 RtosTimer led_4_timer(blink, osTimerPeriodic, (void *)3);
kenjiArai 4:76b3113c79ff 242
kenjiArai 4:76b3113c79ff 243 PRINTF("step2\r\n");
kenjiArai 4:76b3113c79ff 244 led_1_timer.start(2000);
kenjiArai 4:76b3113c79ff 245 led_2_timer.start(1000);
kenjiArai 4:76b3113c79ff 246 led_3_timer.start(500);
kenjiArai 4:76b3113c79ff 247 led_4_timer.start(250);
kenjiArai 4:76b3113c79ff 248
kenjiArai 4:76b3113c79ff 249 PRINTF("step3\r\n");
kenjiArai 4:76b3113c79ff 250 Thread thread(send_thread);
kenjiArai 4:76b3113c79ff 251
kenjiArai 4:76b3113c79ff 252 PRINTF("step4\r\n");
kenjiArai 4:76b3113c79ff 253
kenjiArai 4:76b3113c79ff 254 // IRQ
kenjiArai 4:76b3113c79ff 255 Ticker ticker0;
kenjiArai 4:76b3113c79ff 256 Ticker ticker1;
kenjiArai 4:76b3113c79ff 257 ticker0.attach(queue_isr0, TIME_BASE_S);
kenjiArai 8:4006b111c0d4 258
kenjiArai 8:4006b111c0d4 259
kenjiArai 4:76b3113c79ff 260 PRINTF("step5\r\n");
kenjiArai 5:dccdaaa1e57b 261 // Starts threads
kenjiArai 5:dccdaaa1e57b 262 if (osThreadCreate(osThread(display), NULL) == NULL){
kenjiArai 5:dccdaaa1e57b 263 PRINTF("ERROR4\r\n");
kenjiArai 5:dccdaaa1e57b 264 }
kenjiArai 5:dccdaaa1e57b 265 if (osThreadCreate(osThread(monitor), NULL) == NULL){
kenjiArai 5:dccdaaa1e57b 266 PRINTF("ERROR3\r\n");
kenjiArai 5:dccdaaa1e57b 267 }
kenjiArai 5:dccdaaa1e57b 268 if (osThreadCreate(osThread(update_angle), NULL) == NULL){
kenjiArai 5:dccdaaa1e57b 269 PRINTF("ERROR1\r\n");
kenjiArai 5:dccdaaa1e57b 270 }
kenjiArai 8:4006b111c0d4 271 if (osThreadCreate(osThread(watch_time), NULL) == NULL){
kenjiArai 8:4006b111c0d4 272 printf("ERROR5\r\n");
kenjiArai 8:4006b111c0d4 273 }
kenjiArai 5:dccdaaa1e57b 274 // I2C LCD
kenjiArai 5:dccdaaa1e57b 275 #ifdef USE_I2C_LCD
kenjiArai 5:dccdaaa1e57b 276 // ---->lock
kenjiArai 5:dccdaaa1e57b 277 i2c_mutex.lock();
kenjiArai 5:dccdaaa1e57b 278 lcd0.locate(0, 0); // 1st line top
kenjiArai 5:dccdaaa1e57b 279 lcd0.printf("I2C test");
kenjiArai 5:dccdaaa1e57b 280 lcd0.locate(0, 1); // 2nd line top
kenjiArai 5:dccdaaa1e57b 281 lcd0.puts(" JH1PJL ");
kenjiArai 5:dccdaaa1e57b 282 lcd0.setContrast(0x14);
kenjiArai 5:dccdaaa1e57b 283 // <----unlock
kenjiArai 5:dccdaaa1e57b 284 i2c_mutex.unlock();
kenjiArai 5:dccdaaa1e57b 285 #endif
kenjiArai 5:dccdaaa1e57b 286 count = 0;
kenjiArai 8:4006b111c0d4 287 PRINTF("step6\r\n");
kenjiArai 4:76b3113c79ff 288 while (true) {
kenjiArai 4:76b3113c79ff 289 osEvent evt = mail_box.get();
kenjiArai 4:76b3113c79ff 290 if (evt.status == osEventMail) {
kenjiArai 4:76b3113c79ff 291 mail_t *mail = (mail_t*)evt.value.p;
kenjiArai 8:4006b111c0d4 292 if (show_flag0){
kenjiArai 8:4006b111c0d4 293 PRINTF("[MAIN]\r\n");
kenjiArai 4:76b3113c79ff 294 PRINTF("This is dummy!, ");
kenjiArai 4:76b3113c79ff 295 PRINTF("Volt: %.2f V, " , mail->voltage);
kenjiArai 4:76b3113c79ff 296 PRINTF("Current: %.2f A, " , mail->current);
kenjiArai 4:76b3113c79ff 297 PRINTF("# of cycles: %u\r\n", mail->counter);
kenjiArai 4:76b3113c79ff 298 }
kenjiArai 4:76b3113c79ff 299 mail_box.free(mail);
kenjiArai 4:76b3113c79ff 300 }
kenjiArai 5:dccdaaa1e57b 301 #if defined(TARGET_RZ_A1H)
kenjiArai 5:dccdaaa1e57b 302 for (uint32_t i = 0; i < 100; i++){
kenjiArai 5:dccdaaa1e57b 303 big_data[big_data_index] = ++big_data_index;
kenjiArai 5:dccdaaa1e57b 304 if (big_data_index == (4096 * 1024)){
kenjiArai 5:dccdaaa1e57b 305 big_data_index = 0;
kenjiArai 5:dccdaaa1e57b 306 }
kenjiArai 5:dccdaaa1e57b 307 }
kenjiArai 5:dccdaaa1e57b 308 #endif
kenjiArai 4:76b3113c79ff 309 }
kenjiArai 4:76b3113c79ff 310 }
kenjiArai 5:dccdaaa1e57b 311
kenjiArai 5:dccdaaa1e57b 312 void mbed_die(void) {
kenjiArai 5:dccdaaa1e57b 313 PRINTF("Error, came from os_error()!\r\n");
kenjiArai 5:dccdaaa1e57b 314 gpio_t led_1; gpio_init_out(&led_1, LED1);
kenjiArai 5:dccdaaa1e57b 315 gpio_t led_2; gpio_init_out(&led_2, LED2);
kenjiArai 5:dccdaaa1e57b 316 gpio_t led_3; gpio_init_out(&led_3, LED3);
kenjiArai 5:dccdaaa1e57b 317 gpio_t led_4; gpio_init_out(&led_4, LED4);
kenjiArai 5:dccdaaa1e57b 318
kenjiArai 5:dccdaaa1e57b 319 while (1) {
kenjiArai 5:dccdaaa1e57b 320 gpio_write(&led_1, 1);
kenjiArai 5:dccdaaa1e57b 321 gpio_write(&led_2, 0);
kenjiArai 5:dccdaaa1e57b 322 gpio_write(&led_3, 0);
kenjiArai 5:dccdaaa1e57b 323 gpio_write(&led_4, 1);
kenjiArai 5:dccdaaa1e57b 324 wait_ms(100);
kenjiArai 5:dccdaaa1e57b 325 gpio_write(&led_1, 0);
kenjiArai 5:dccdaaa1e57b 326 gpio_write(&led_2, 1);
kenjiArai 5:dccdaaa1e57b 327 gpio_write(&led_3, 1);
kenjiArai 5:dccdaaa1e57b 328 gpio_write(&led_4, 0);
kenjiArai 5:dccdaaa1e57b 329 wait_ms(100);
kenjiArai 5:dccdaaa1e57b 330 }
kenjiArai 5:dccdaaa1e57b 331 }