Subversion Repositories chibiosIgnition

Rev

Rev 14 | Rev 16 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 14 Rev 15
Line 33... Line 33...
33
//#include "test.h"
33
//#include "test.h"
34
#include "shell.h"
34
#include "shell.h"
35
#include "evtimer.h"
35
#include "evtimer.h"
36
#include "chprintf.h"
36
#include "chprintf.h"
37
 
37
 
-
 
38
#if (HAL_USE_SERIAL_USB == TRUE)
38
#include "usbcfg.h"
39
#include "usbcfg.h"
-
 
40
#endif
39
 
41
 
40
 
42
 
41
#include "ap_math.h"
43
#include "ap_math.h"
42
#include "hardware.h"
44
#include "hardware.h"
43
#include "useAdc.h"
45
#include "useAdc.h"
44
#include "spiInterface.h"
46
#include "spiInterface.h"
45
#include "SSD1306.h"
47
#include "SSD1306.h"
46
 
48
 
47
#include "timer2.h"
49
#include "timer2.h"
48
 
50
 
-
 
51
 
-
 
52
 
-
 
53
 
49
static MUTEX_DECL(mutexDisplay);
54
static MUTEX_DECL(mutexDisplay);
50
 
55
 
51
/*===========================================================================*/
56
/*===========================================================================*/
52
/* Command line related.                                                     */
57
/* Command line related.                                                     */
53
/*===========================================================================*/
58
/*===========================================================================*/
Line 62... Line 67...
62
        if (argc > 0) {
67
        if (argc > 0) {
63
                chprintf(chp, "Usage: mem\r\n");
68
                chprintf(chp, "Usage: mem\r\n");
64
                return;
69
                return;
65
        }
70
        }
66
        n = chHeapStatus(NULL, &size, &largest);
71
        n = chHeapStatus(NULL, &size, &largest);
67
        chprintf(chp, "core free memory : %u bytes\r\n", chCoreStatus());
72
        chprintf(chp, "core free memory : %u bytes\r\n", chCoreGetStatusX());
68
        chprintf(chp, "heap fragments   : %u \r\n",n);
73
        chprintf(chp, "heap fragments   : %u \r\n",n);
69
        chprintf(chp, "largest fragment : %u \r\n",largest);
74
        chprintf(chp, "largest fragment : %u \r\n",largest);
70
        chprintf(chp, "heap free total  : %u bytes\r\n", size);
75
        chprintf(chp, "heap free total  : %u bytes\r\n", size);
71
}
76
}
72
 
77
 
Line 113... Line 118...
113
}
118
}
114
 
119
 
115
static const ShellCommand commands[] = { { "mem", cmd_mem }, { "threads",
120
static const ShellCommand commands[] = { { "mem", cmd_mem }, { "threads",
116
                cmd_threads }, { "test", cmd_test }, { NULL, NULL } };
121
                cmd_threads }, { "test", cmd_test }, { NULL, NULL } };
117
 
122
 
-
 
123
 
-
 
124
 
-
 
125
 
-
 
126
 
-
 
127
 
118
static const ShellConfig shell_cfg1 = { (BaseChannel *) &SDU1, commands };
128
static const ShellConfig shell_cfg1 = {
-
 
129
#if (HAL_USE_SERIAL_USB == TRUE)
-
 
130
  (BaseSequentialStream *)&SDU1,
-
 
131
#else
-
 
132
  (BaseSequentialStream *)&SD1,
-
 
133
#endif
-
 
134
  commands
-
 
135
};
-
 
136
////////
-
 
137
// end of shell stuff
119
 
138
 
120
uint16_t sampIndex;
139
uint16_t sampIndex;
121
 
140
 
122
static THD_WORKING_AREA(waThread1, 512);
141
static THD_WORKING_AREA(waThread1, 512);
123
static msg_t Thread1(void *arg) {
142
static msg_t Thread1(void *arg) {
Line 132... Line 151...
132
        }
151
        }
133
        return 0;
152
        return 0;
134
}
153
}
135
 
154
 
136
/*
155
/*
137
 * USB Bulk thread, times are in milliseconds.
156
 * Command Shell Thread
138
 */
157
 */
139
static THD_WORKING_AREA(waThread2, 512);
158
static THD_WORKING_AREA(waThread2, 512);
140
static msg_t Thread2(void *arg) {
159
static msg_t Thread2(void *arg) {
-
 
160
        thread_t *shelltp = NULL;
-
 
161
          /*
-
 
162
           * Normal main() thread activity, in this demo it just performs
-
 
163
           * a shell respawn upon its termination.
-
 
164
           */
-
 
165
          while (true) {
-
 
166
            if (!shelltp) {
-
 
167
        #if (HAL_USE_SERIAL_USB == TRUE)
-
 
168
              if (SDU1.config->usbp->state == USB_ACTIVE) {
-
 
169
                /* Spawns a new shell.*/
-
 
170
                shelltp = chThdCreateFromHeap(NULL, SHELL_WA_SIZE, "shell", NORMALPRIO, shellThread, (void *) &shell_cfg1);
-
 
171
              }
-
 
172
        #else
-
 
173
                shelltp = chThdCreateFromHeap(NULL, SHELL_WA_SIZE, "shell", NORMALPRIO, shellThread, (void *) &shell_cfg1);
-
 
174
        #endif
-
 
175
            }
-
 
176
            else {
-
 
177
              /* If the previous shell exited.*/
-
 
178
              if (chThdTerminatedX(shelltp)) {
-
 
179
                /* Recovers memory of the previous shell.*/
-
 
180
                chThdRelease(shelltp);
-
 
181
                shelltp = NULL;
-
 
182
              }
-
 
183
            }
141
        chThdSleep(TIME_INFINITE);
184
            chThdSleepMilliseconds(500);
-
 
185
          }
142
 
186
 
-
 
187
        return MSG_OK;
143
}
188
}
144
 
189
 
145
 
190
 
146
 
191
 
147
 
192
 
148
/*
193
/*
149
 * Application entry point.
194
 * Application entry point.
150
 */
195
 */
151
int main(void) {
196
int main(void) {
152
        thread_t *shelltp = NULL;
-
 
153
//  struct EventListener el0, el1;
197
//  struct EventListener el0, el1;
154
 
198
 
155
        /*
199
        /*
156
         * System initializations.
200
         * System initializations.
157
         * - HAL initialization, this also initializes the configured device drivers
201
         * - HAL initialization, this also initializes the configured device drivers
Line 160... Line 204...
160
         *   RTOS is active.
204
         *   RTOS is active.
161
         */
205
         */
162
        halInit();
206
        halInit();
163
        chSysInit();
207
        chSysInit();
164
 
208
 
165
        /*
-
 
166
           * Initializes a serial-over-USB CDC driver.
-
 
167
           */
-
 
168
//        sduObjectInit(&SDU1);
-
 
169
//        sduStart(&SDU1, &serusbcfg);
-
 
170
 
209
 
-
 
210
 
-
 
211
#if (HAL_USE_SERIAL_USB == TRUE)
171
          /*
212
  /*
-
 
213
   * Initializes a serial-over-USB CDC driver.
-
 
214
   */
-
 
215
  sduObjectInit(&SDU1);
-
 
216
  sduStart(&SDU1, &serusbcfg);
-
 
217
 
-
 
218
  /*
172
           * Activates the USB driver and then the USB bus pull-up on D+.
219
   * Activates the USB driver and then the USB bus pull-up on D+.
173
           * Note, a delay is inserted in order to not have to disconnect the cable
220
   * Note, a delay is inserted in order to not have to disconnect the cable
174
           * after a reset.
221
   * after a reset.
175
           */
222
   */
176
//        usbDisconnectBus(serusbcfg.usbp);
223
  usbDisconnectBus(serusbcfg.usbp);
177
//        chThdSleepMilliseconds(1500);
224
  chThdSleepMilliseconds(1000);
178
//        usbStart(serusbcfg.usbp, &usbcfg);
225
  usbStart(serusbcfg.usbp, &usbcfg);
179
//        usbConnectBus(serusbcfg.usbp);
226
  usbConnectBus(serusbcfg.usbp);
-
 
227
#else
-
 
228
  /*
-
 
229
   * Initializes serial port.
-
 
230
   */
-
 
231
  sdStart(&SD2, NULL);
-
 
232
#endif /* HAL_USE_SERIAL_USB */
180
 
233
 
181
          // Ignition timing code
234
          // Ignition timing code
182
        initTimer2();
235
        initTimer2();
183
 
236
 
184
   useAdc();
237
   useAdc();
Line 199... Line 252...
199
         /*
252
         /*
200
         * Creates the PLL thread
253
         * Creates the PLL thread
201
         */
254
         */
202
        chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL);
255
        chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL);
203
 
256
 
-
 
257
 
-
 
258
 
-
 
259
        chThdCreateStatic(waThread2, sizeof(waThread2), NORMALPRIO, Thread2, NULL);
-
 
260
 
204
        /* start the SPI hardware for display */
261
        /* start the SPI hardware for display */
205
        ssd1306spiInit();
262
        ssd1306spiInit();
206
 
263
 
207
        ssd1306_begin( SSD1306_SWITCHCAPVCC, 0) ;
264
        ssd1306_begin( SSD1306_SWITCHCAPVCC, 0) ;
208
        int spd  = 800;
265
        int spd  = 800;