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:5fbf51aca95c, 2014-12-24 (annotated)
- Committer:
- Rhyme
- Date:
- Wed Dec 24 11:56:34 2014 +0000
- Revision:
- 0:5fbf51aca95c
- Child:
- 1:6fdc687abb43
First anyway working version;
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Rhyme | 0:5fbf51aca95c | 1 | #include "mbed.h" |
| Rhyme | 0:5fbf51aca95c | 2 | #include <string.h> |
| Rhyme | 0:5fbf51aca95c | 3 | #include <stdio.h> |
| Rhyme | 0:5fbf51aca95c | 4 | |
| Rhyme | 0:5fbf51aca95c | 5 | #define PIN_MOSI PTD2 |
| Rhyme | 0:5fbf51aca95c | 6 | #define PIN_MISO PTD3 |
| Rhyme | 0:5fbf51aca95c | 7 | #define PIN_SCLK PTD1 |
| Rhyme | 0:5fbf51aca95c | 8 | #define PIN_CS_TSC PTA13 |
| Rhyme | 0:5fbf51aca95c | 9 | #define PIN_TSC_INTR PTC9 |
| Rhyme | 0:5fbf51aca95c | 10 | |
| Rhyme | 0:5fbf51aca95c | 11 | int freq = 1000000 ; |
| Rhyme | 0:5fbf51aca95c | 12 | int bits = 8 ; |
| Rhyme | 0:5fbf51aca95c | 13 | int mode = 0 ; |
| Rhyme | 0:5fbf51aca95c | 14 | int loop = 10 ; |
| Rhyme | 0:5fbf51aca95c | 15 | |
| Rhyme | 0:5fbf51aca95c | 16 | SPI mySpi(PIN_MOSI, PIN_MISO, PIN_SCLK) ; |
| Rhyme | 0:5fbf51aca95c | 17 | |
| Rhyme | 0:5fbf51aca95c | 18 | typedef void (*func_ptr)(void) ; |
| Rhyme | 0:5fbf51aca95c | 19 | |
| Rhyme | 0:5fbf51aca95c | 20 | void doHelp(void) ; |
| Rhyme | 0:5fbf51aca95c | 21 | void doStatus(void) ; |
| Rhyme | 0:5fbf51aca95c | 22 | void doFreq(void) ; |
| Rhyme | 0:5fbf51aca95c | 23 | void doMode(void) ; |
| Rhyme | 0:5fbf51aca95c | 24 | void doBit(void) ; |
| Rhyme | 0:5fbf51aca95c | 25 | void doWrite(void) ; |
| Rhyme | 0:5fbf51aca95c | 26 | void doRead(void) ; |
| Rhyme | 0:5fbf51aca95c | 27 | void doLoop(void) ; |
| Rhyme | 0:5fbf51aca95c | 28 | |
| Rhyme | 0:5fbf51aca95c | 29 | typedef struct _cmd_func { |
| Rhyme | 0:5fbf51aca95c | 30 | char *name ; |
| Rhyme | 0:5fbf51aca95c | 31 | func_ptr func ; |
| Rhyme | 0:5fbf51aca95c | 32 | } cmd_func_type ; |
| Rhyme | 0:5fbf51aca95c | 33 | |
| Rhyme | 0:5fbf51aca95c | 34 | cmd_func_type cmd_list[] = { |
| Rhyme | 0:5fbf51aca95c | 35 | {"help", doHelp}, |
| Rhyme | 0:5fbf51aca95c | 36 | {"status", doStatus}, |
| Rhyme | 0:5fbf51aca95c | 37 | {"freq", doFreq}, |
| Rhyme | 0:5fbf51aca95c | 38 | {"mode", doMode}, |
| Rhyme | 0:5fbf51aca95c | 39 | {"bit", doBit}, |
| Rhyme | 0:5fbf51aca95c | 40 | {"write", doWrite}, |
| Rhyme | 0:5fbf51aca95c | 41 | {"read", doRead}, |
| Rhyme | 0:5fbf51aca95c | 42 | {"loop", doLoop}, |
| Rhyme | 0:5fbf51aca95c | 43 | { 0, 0 } |
| Rhyme | 0:5fbf51aca95c | 44 | } ; |
| Rhyme | 0:5fbf51aca95c | 45 | |
| Rhyme | 0:5fbf51aca95c | 46 | func_ptr getFunc(char *cmd) |
| Rhyme | 0:5fbf51aca95c | 47 | { |
| Rhyme | 0:5fbf51aca95c | 48 | int i = 0 ; |
| Rhyme | 0:5fbf51aca95c | 49 | while(cmd_list[i].name != 0) { |
| Rhyme | 0:5fbf51aca95c | 50 | if (strcmp(cmd, cmd_list[i].name) == 0) { |
| Rhyme | 0:5fbf51aca95c | 51 | return(cmd_list[i].func) ; ; |
| Rhyme | 0:5fbf51aca95c | 52 | } |
| Rhyme | 0:5fbf51aca95c | 53 | i++ ; |
| Rhyme | 0:5fbf51aca95c | 54 | } |
| Rhyme | 0:5fbf51aca95c | 55 | return(0) ; |
| Rhyme | 0:5fbf51aca95c | 56 | } |
| Rhyme | 0:5fbf51aca95c | 57 | |
| Rhyme | 0:5fbf51aca95c | 58 | void doHello() |
| Rhyme | 0:5fbf51aca95c | 59 | { |
| Rhyme | 0:5fbf51aca95c | 60 | printf("=== spi test program ===\n\r") ; |
| Rhyme | 0:5fbf51aca95c | 61 | printf("please set your terminal program\n\r") ; |
| Rhyme | 0:5fbf51aca95c | 62 | printf("local echo on\n\r") ; |
| Rhyme | 0:5fbf51aca95c | 63 | printf("\n\r") ; |
| Rhyme | 0:5fbf51aca95c | 64 | } |
| Rhyme | 0:5fbf51aca95c | 65 | |
| Rhyme | 0:5fbf51aca95c | 66 | int main() { |
| Rhyme | 0:5fbf51aca95c | 67 | char cmd[32] ; |
| Rhyme | 0:5fbf51aca95c | 68 | func_ptr func ; |
| Rhyme | 0:5fbf51aca95c | 69 | doHello() ; |
| Rhyme | 0:5fbf51aca95c | 70 | while(1) { |
| Rhyme | 0:5fbf51aca95c | 71 | printf("> ") ; |
| Rhyme | 0:5fbf51aca95c | 72 | scanf("%s", cmd) ; |
| Rhyme | 0:5fbf51aca95c | 73 | if ((func = getFunc(cmd)) != 0) { |
| Rhyme | 0:5fbf51aca95c | 74 | (*func)() ; |
| Rhyme | 0:5fbf51aca95c | 75 | } else { |
| Rhyme | 0:5fbf51aca95c | 76 | doHelp() ; |
| Rhyme | 0:5fbf51aca95c | 77 | } |
| Rhyme | 0:5fbf51aca95c | 78 | printf("\n\r") ; |
| Rhyme | 0:5fbf51aca95c | 79 | } |
| Rhyme | 0:5fbf51aca95c | 80 | } |
| Rhyme | 0:5fbf51aca95c | 81 | |
| Rhyme | 0:5fbf51aca95c | 82 | void doHelp(void) |
| Rhyme | 0:5fbf51aca95c | 83 | { |
| Rhyme | 0:5fbf51aca95c | 84 | printf("=== spi test ===\n\r") ; |
| Rhyme | 0:5fbf51aca95c | 85 | printf("commands available\n\r") ; |
| Rhyme | 0:5fbf51aca95c | 86 | printf("help\n\r") ; |
| Rhyme | 0:5fbf51aca95c | 87 | printf("status\n\r") ; |
| Rhyme | 0:5fbf51aca95c | 88 | printf("freq freq_in_hz\n\r") ; |
| Rhyme | 0:5fbf51aca95c | 89 | printf("mode (0 | 1 | 2 | 3)\n\r") ; |
| Rhyme | 0:5fbf51aca95c | 90 | printf("bit (4 - 16)\n\r") ; |
| Rhyme | 0:5fbf51aca95c | 91 | printf("write value\n\r") ; |
| Rhyme | 0:5fbf51aca95c | 92 | printf("read\n\r") ; |
| Rhyme | 0:5fbf51aca95c | 93 | printf("loop number (set repeat number for read/write)\n\r") ; |
| Rhyme | 0:5fbf51aca95c | 94 | } |
| Rhyme | 0:5fbf51aca95c | 95 | |
| Rhyme | 0:5fbf51aca95c | 96 | void doStatus(void) |
| Rhyme | 0:5fbf51aca95c | 97 | { |
| Rhyme | 0:5fbf51aca95c | 98 | printf("=== Status Report ===\n\r") ; |
| Rhyme | 0:5fbf51aca95c | 99 | printf("bits: %d\n\r", bits) ; |
| Rhyme | 0:5fbf51aca95c | 100 | printf("mode: %d\n\r", mode) ; |
| Rhyme | 0:5fbf51aca95c | 101 | printf("freq: %d Hz\n\r", freq) ; |
| Rhyme | 0:5fbf51aca95c | 102 | printf("loop: %d\n\r", loop) ; |
| Rhyme | 0:5fbf51aca95c | 103 | } |
| Rhyme | 0:5fbf51aca95c | 104 | |
| Rhyme | 0:5fbf51aca95c | 105 | void doFreq(void) |
| Rhyme | 0:5fbf51aca95c | 106 | { |
| Rhyme | 0:5fbf51aca95c | 107 | int freq = 0 ; |
| Rhyme | 0:5fbf51aca95c | 108 | scanf("%d", &freq) ; |
| Rhyme | 0:5fbf51aca95c | 109 | printf("setting frequency to %d\n\r", freq) ; |
| Rhyme | 0:5fbf51aca95c | 110 | mySpi.frequency(freq) ; |
| Rhyme | 0:5fbf51aca95c | 111 | } |
| Rhyme | 0:5fbf51aca95c | 112 | |
| Rhyme | 0:5fbf51aca95c | 113 | void doMode(void) |
| Rhyme | 0:5fbf51aca95c | 114 | { |
| Rhyme | 0:5fbf51aca95c | 115 | scanf("%d", &mode) ; |
| Rhyme | 0:5fbf51aca95c | 116 | printf("setting format(%d, %d)\n\r",bits, mode) ; |
| Rhyme | 0:5fbf51aca95c | 117 | mySpi.format(bits, mode) ; |
| Rhyme | 0:5fbf51aca95c | 118 | } |
| Rhyme | 0:5fbf51aca95c | 119 | |
| Rhyme | 0:5fbf51aca95c | 120 | void doBit(void) |
| Rhyme | 0:5fbf51aca95c | 121 | { |
| Rhyme | 0:5fbf51aca95c | 122 | scanf("%d", &bits) ; |
| Rhyme | 0:5fbf51aca95c | 123 | printf("setting format(%d, %d)\n\r",bits, mode) ; |
| Rhyme | 0:5fbf51aca95c | 124 | mySpi.format(bits, mode) ; |
| Rhyme | 0:5fbf51aca95c | 125 | } |
| Rhyme | 0:5fbf51aca95c | 126 | |
| Rhyme | 0:5fbf51aca95c | 127 | void doWrite(void) |
| Rhyme | 0:5fbf51aca95c | 128 | { |
| Rhyme | 0:5fbf51aca95c | 129 | int value, i ; |
| Rhyme | 0:5fbf51aca95c | 130 | scanf("%d", &value) ; |
| Rhyme | 0:5fbf51aca95c | 131 | printf("writing value %d\n\r",value) ; |
| Rhyme | 0:5fbf51aca95c | 132 | for (i = 0 ; i < loop ; i++ ) { |
| Rhyme | 0:5fbf51aca95c | 133 | mySpi.write(value) ; |
| Rhyme | 0:5fbf51aca95c | 134 | } |
| Rhyme | 0:5fbf51aca95c | 135 | } |
| Rhyme | 0:5fbf51aca95c | 136 | |
| Rhyme | 0:5fbf51aca95c | 137 | void doRead(void) |
| Rhyme | 0:5fbf51aca95c | 138 | { |
| Rhyme | 0:5fbf51aca95c | 139 | int dummy = 0 ; |
| Rhyme | 0:5fbf51aca95c | 140 | int i ; |
| Rhyme | 0:5fbf51aca95c | 141 | int value = 0 ; |
| Rhyme | 0:5fbf51aca95c | 142 | for (i = 0 ; i < loop ; i++ ) { |
| Rhyme | 0:5fbf51aca95c | 143 | value = mySpi.write(dummy) ; |
| Rhyme | 0:5fbf51aca95c | 144 | } |
| Rhyme | 0:5fbf51aca95c | 145 | printf("%d\n", value) ; |
| Rhyme | 0:5fbf51aca95c | 146 | } |
| Rhyme | 0:5fbf51aca95c | 147 | |
| Rhyme | 0:5fbf51aca95c | 148 | void doLoop(void) |
| Rhyme | 0:5fbf51aca95c | 149 | { |
| Rhyme | 0:5fbf51aca95c | 150 | scanf("%d", &loop) ; |
| Rhyme | 0:5fbf51aca95c | 151 | printf("repeat number has been set to %d\n\r", loop) ; |
| Rhyme | 0:5fbf51aca95c | 152 | } |