Michele Bavaro
/
atlas
main.cpp@0:be1765e9885e, 2011-01-25 (annotated)
- Committer:
- michelebavaro
- Date:
- Tue Jan 25 11:26:16 2011 +0000
- Revision:
- 0:be1765e9885e
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
michelebavaro | 0:be1765e9885e | 1 | #include "mbed.h" |
michelebavaro | 0:be1765e9885e | 2 | #include "max2769tw.h" |
michelebavaro | 0:be1765e9885e | 3 | #include "max2769ssp0.h" |
michelebavaro | 0:be1765e9885e | 4 | |
michelebavaro | 0:be1765e9885e | 5 | DigitalOut myled1(LED1); |
michelebavaro | 0:be1765e9885e | 6 | DigitalOut myled2(LED2); |
michelebavaro | 0:be1765e9885e | 7 | DigitalOut myled3(LED3); |
michelebavaro | 0:be1765e9885e | 8 | DigitalOut myled4(LED4); |
michelebavaro | 0:be1765e9885e | 9 | |
michelebavaro | 0:be1765e9885e | 10 | #define N_BYTES (16*1024) |
michelebavaro | 0:be1765e9885e | 11 | #define N_XFER (N_BYTES / sizeof(uint16_t)) |
michelebavaro | 0:be1765e9885e | 12 | |
michelebavaro | 0:be1765e9885e | 13 | Serial pc(USBTX, USBRX); |
michelebavaro | 0:be1765e9885e | 14 | |
michelebavaro | 0:be1765e9885e | 15 | MAX2769TW spiGpsCtl(p24, p25, p26); // data, clock, chip select |
michelebavaro | 0:be1765e9885e | 16 | |
michelebavaro | 0:be1765e9885e | 17 | MAX2769SSP0 spiGpsAdc(p11, p13, p14); // data, clock, frame |
michelebavaro | 0:be1765e9885e | 18 | |
michelebavaro | 0:be1765e9885e | 19 | const unsigned int gpsConfRegArray[10] = |
michelebavaro | 0:be1765e9885e | 20 | {0x82938E30, |
michelebavaro | 0:be1765e9885e | 21 | 0x85500081, |
michelebavaro | 0:be1765e9885e | 22 | 0xEAFE8062, |
michelebavaro | 0:be1765e9885e | 23 | 0x9AC00003, |
michelebavaro | 0:be1765e9885e | 24 | 0x00780084, |
michelebavaro | 0:be1765e9885e | 25 | 0x87D3E705, |
michelebavaro | 0:be1765e9885e | 26 | 0x00010006, |
michelebavaro | 0:be1765e9885e | 27 | 0x10061B17, |
michelebavaro | 0:be1765e9885e | 28 | 0x1E0F4018, |
michelebavaro | 0:be1765e9885e | 29 | 0x14C04029}; |
michelebavaro | 0:be1765e9885e | 30 | |
michelebavaro | 0:be1765e9885e | 31 | |
michelebavaro | 0:be1765e9885e | 32 | int main() { |
michelebavaro | 0:be1765e9885e | 33 | int k; |
michelebavaro | 0:be1765e9885e | 34 | uint16_t *ptMem16; |
michelebavaro | 0:be1765e9885e | 35 | |
michelebavaro | 0:be1765e9885e | 36 | pc.baud(115200); |
michelebavaro | 0:be1765e9885e | 37 | |
michelebavaro | 0:be1765e9885e | 38 | myled1 = myled2 = myled3 = myled4 = 1; |
michelebavaro | 0:be1765e9885e | 39 | wait(1); |
michelebavaro | 0:be1765e9885e | 40 | myled1 = myled2 = myled3 = myled4 = 1; |
michelebavaro | 0:be1765e9885e | 41 | |
michelebavaro | 0:be1765e9885e | 42 | // |
michelebavaro | 0:be1765e9885e | 43 | // PROGRAM THE MAX2769 |
michelebavaro | 0:be1765e9885e | 44 | // |
michelebavaro | 0:be1765e9885e | 45 | myled2 = 1; |
michelebavaro | 0:be1765e9885e | 46 | for (k=0; k<10; k++) { |
michelebavaro | 0:be1765e9885e | 47 | myled1 = 1; |
michelebavaro | 0:be1765e9885e | 48 | spiGpsCtl.SendReg(gpsConfRegArray[k]); |
michelebavaro | 0:be1765e9885e | 49 | myled1 = 0; |
michelebavaro | 0:be1765e9885e | 50 | } |
michelebavaro | 0:be1765e9885e | 51 | myled2 = 0; |
michelebavaro | 0:be1765e9885e | 52 | |
michelebavaro | 0:be1765e9885e | 53 | // |
michelebavaro | 0:be1765e9885e | 54 | // GET THE DATA SNAPSHOT FROM THE GPS FRONT-END |
michelebavaro | 0:be1765e9885e | 55 | // |
michelebavaro | 0:be1765e9885e | 56 | ptMem16 = (uint16_t*) malloc(N_BYTES); |
michelebavaro | 0:be1765e9885e | 57 | if (NULL != ptMem16) { |
michelebavaro | 0:be1765e9885e | 58 | // Write in memory, probably need DMA later |
michelebavaro | 0:be1765e9885e | 59 | myled3 = 1; |
michelebavaro | 0:be1765e9885e | 60 | memset(ptMem16, 0, N_BYTES); |
michelebavaro | 0:be1765e9885e | 61 | spiGpsAdc.Read(ptMem16, N_XFER); |
michelebavaro | 0:be1765e9885e | 62 | myled3 = 0; |
michelebavaro | 0:be1765e9885e | 63 | } |
michelebavaro | 0:be1765e9885e | 64 | |
michelebavaro | 0:be1765e9885e | 65 | // |
michelebavaro | 0:be1765e9885e | 66 | // SEND SOME DEBUG DATA TO THE SERIAL PORT |
michelebavaro | 0:be1765e9885e | 67 | // |
michelebavaro | 0:be1765e9885e | 68 | if (NULL != ptMem16) { |
michelebavaro | 0:be1765e9885e | 69 | k = 0; |
michelebavaro | 0:be1765e9885e | 70 | while (k < N_XFER) { |
michelebavaro | 0:be1765e9885e | 71 | myled2 = 1; |
michelebavaro | 0:be1765e9885e | 72 | pc.printf("%04x:%04x%04x%04x%04x%04x%04x%04x%04x\n", |
michelebavaro | 0:be1765e9885e | 73 | k*sizeof(uint16_t), |
michelebavaro | 0:be1765e9885e | 74 | ptMem16[k+ 0], ptMem16[k+ 1], ptMem16[k+ 2], ptMem16[k+ 3], |
michelebavaro | 0:be1765e9885e | 75 | ptMem16[k+ 4], ptMem16[k+ 5], ptMem16[k+ 6], ptMem16[k+ 7] ); |
michelebavaro | 0:be1765e9885e | 76 | k += 8; |
michelebavaro | 0:be1765e9885e | 77 | myled2 = 0; |
michelebavaro | 0:be1765e9885e | 78 | } |
michelebavaro | 0:be1765e9885e | 79 | } |
michelebavaro | 0:be1765e9885e | 80 | |
michelebavaro | 0:be1765e9885e | 81 | // Free the allocated memory |
michelebavaro | 0:be1765e9885e | 82 | if (NULL != ptMem16) { |
michelebavaro | 0:be1765e9885e | 83 | free(ptMem16); |
michelebavaro | 0:be1765e9885e | 84 | ptMem16 = NULL; |
michelebavaro | 0:be1765e9885e | 85 | } |
michelebavaro | 0:be1765e9885e | 86 | |
michelebavaro | 0:be1765e9885e | 87 | // Go idle |
michelebavaro | 0:be1765e9885e | 88 | while (1) { |
michelebavaro | 0:be1765e9885e | 89 | myled4 = 1; |
michelebavaro | 0:be1765e9885e | 90 | wait(1); |
michelebavaro | 0:be1765e9885e | 91 | myled4 = 0; |
michelebavaro | 0:be1765e9885e | 92 | wait(1); |
michelebavaro | 0:be1765e9885e | 93 | } |
michelebavaro | 0:be1765e9885e | 94 | } |
michelebavaro | 0:be1765e9885e | 95 |