Testsoftware for SC16IS750
Dependencies: SC16IS750 USBDevice mbed
Fork of SC16IS750_Test by
main.cpp@4:82730070e690, 2014-12-24 (annotated)
- Committer:
- whatnick
- Date:
- Wed Dec 24 08:13:31 2014 +0000
- Revision:
- 4:82730070e690
- Parent:
- 3:3d4269319b51
Xadow modifications
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
wim | 0:d83a90125711 | 1 | #include "mbed.h" |
wim | 0:d83a90125711 | 2 | #include "SC16IS750.h" |
wim | 0:d83a90125711 | 3 | |
wim | 2:8aba07490dce | 4 | |
wim | 2:8aba07490dce | 5 | #if defined(TARGET_LPC1768) |
wim | 2:8aba07490dce | 6 | // SPI for LPC1768 |
wim | 2:8aba07490dce | 7 | #define D_MOSI p5 |
wim | 2:8aba07490dce | 8 | #define D_MISO p6 |
wim | 2:8aba07490dce | 9 | #define D_SCLK p7 |
wim | 2:8aba07490dce | 10 | #define D_CS p8 |
wim | 2:8aba07490dce | 11 | #define D_INTR p15 |
wim | 2:8aba07490dce | 12 | |
wim | 2:8aba07490dce | 13 | // Serial for LPC1768 |
wim | 2:8aba07490dce | 14 | #define D_TX USBTX |
wim | 2:8aba07490dce | 15 | #define D_RX USBRX |
wim | 2:8aba07490dce | 16 | //#define D_RST p25 |
wim | 2:8aba07490dce | 17 | //#define D_STS p26 |
wim | 2:8aba07490dce | 18 | #endif |
wim | 2:8aba07490dce | 19 | |
wim | 2:8aba07490dce | 20 | #if defined(TARGET_KL25Z) |
wim | 2:8aba07490dce | 21 | // SPI for KL25Z |
wim | 2:8aba07490dce | 22 | #define D_MOSI PTD2 |
wim | 2:8aba07490dce | 23 | #define D_MISO PTD3 |
wim | 2:8aba07490dce | 24 | #define D_SCLK PTD1 |
wim | 2:8aba07490dce | 25 | #define D_CS PTD0 |
wim | 2:8aba07490dce | 26 | //#define D_INTR p15 |
wim | 2:8aba07490dce | 27 | |
wim | 2:8aba07490dce | 28 | // I2C for KL25Z |
wim | 2:8aba07490dce | 29 | #define D_SCL PTE1 |
wim | 2:8aba07490dce | 30 | #define D_SDA PTE0 |
wim | 2:8aba07490dce | 31 | |
wim | 2:8aba07490dce | 32 | // Serial for KL25Z |
wim | 2:8aba07490dce | 33 | #define D_TX USBTX |
wim | 2:8aba07490dce | 34 | #define D_RX USBRX |
wim | 2:8aba07490dce | 35 | #endif |
wim | 2:8aba07490dce | 36 | |
wim | 2:8aba07490dce | 37 | #if defined(TARGET_LPC812) |
wim | 2:8aba07490dce | 38 | // SPI for LPC812 |
wim | 2:8aba07490dce | 39 | #define D_MOSI P0_14 |
wim | 2:8aba07490dce | 40 | #define D_MISO P0_15 |
wim | 2:8aba07490dce | 41 | #define D_SCLK P0_12 |
wim | 2:8aba07490dce | 42 | #define D_CS P0_13 |
wim | 2:8aba07490dce | 43 | //#define D_INTR P0_7 |
wim | 2:8aba07490dce | 44 | |
wim | 2:8aba07490dce | 45 | // Serial for LPC812 |
wim | 2:8aba07490dce | 46 | #define D_TX P0_4 |
wim | 2:8aba07490dce | 47 | #define D_RX P0_0 |
wim | 2:8aba07490dce | 48 | //#define D_RST P0_9 |
wim | 2:8aba07490dce | 49 | //#define D_STS P0_17 |
wim | 2:8aba07490dce | 50 | #endif |
wim | 2:8aba07490dce | 51 | |
wim | 2:8aba07490dce | 52 | |
wim | 0:d83a90125711 | 53 | //SPI Version |
wim | 2:8aba07490dce | 54 | //SPI spi(PTD2, PTD3, PTD1); //MOSI, MISO, SCK |
whatnick | 4:82730070e690 | 55 | //SPI spi(D_MOSI, D_MISO, D_SCLK); //MOSI, MISO, SCK |
wim | 0:d83a90125711 | 56 | //DigitalOut CS(PTD0); //CS |
wim | 2:8aba07490dce | 57 | //SC16IS750_SPI serial_bridge(&spi, PTD0); |
whatnick | 4:82730070e690 | 58 | //SC16IS750_SPI serial_bridge(&spi, D_CS); |
wim | 0:d83a90125711 | 59 | |
wim | 0:d83a90125711 | 60 | //I2C Version |
wim | 2:8aba07490dce | 61 | //I2C i2c(D_SDA, D_SCL); //SDA, SCL |
whatnick | 4:82730070e690 | 62 | I2C i2c(I2C_SDA, I2C_SCL); |
whatnick | 4:82730070e690 | 63 | SC16IS750_I2C serial_bridge(&i2c, 0x4D); |
wim | 0:d83a90125711 | 64 | |
whatnick | 4:82730070e690 | 65 | //DigitalOut myled1(LED_RED); |
wim | 1:f0d3984f2586 | 66 | //DigitalOut myled2(LED_GREEN); |
wim | 1:f0d3984f2586 | 67 | //DigitalOut myled3(LED_BLUE); // Same as PTD1 (SCK) |
whatnick | 4:82730070e690 | 68 | //DigitalOut heartbeatLED(LED_GREEN); |
wim | 0:d83a90125711 | 69 | |
whatnick | 4:82730070e690 | 70 | #define DEBUG |
whatnick | 4:82730070e690 | 71 | |
whatnick | 4:82730070e690 | 72 | #ifdef DEBUG |
whatnick | 4:82730070e690 | 73 | #include "USBSerial.h" // To use USB virtual serial, a driver is needed, check http://mbed.org/handbook/USBSerial |
whatnick | 4:82730070e690 | 74 | #define LOG(args...) pc.printf(args) |
whatnick | 4:82730070e690 | 75 | USBSerial pc; |
whatnick | 4:82730070e690 | 76 | #else |
whatnick | 4:82730070e690 | 77 | #define LOG(args...) |
whatnick | 4:82730070e690 | 78 | #endif |
wim | 0:d83a90125711 | 79 | |
wim | 1:f0d3984f2586 | 80 | void show_menu() { |
wim | 1:f0d3984f2586 | 81 | pc.printf("0: Exit\n\r"); |
wim | 1:f0d3984f2586 | 82 | pc.printf("1: Show Menu\n\r"); |
wim | 1:f0d3984f2586 | 83 | pc.printf("2: Init\n\r"); |
wim | 3:3d4269319b51 | 84 | pc.printf("3: IO Port Out\n\r"); |
wim | 3:3d4269319b51 | 85 | pc.printf("4: Transparant mode\n\r"); |
wim | 2:8aba07490dce | 86 | pc.printf("5: Free bufferspace\n\r"); |
wim | 2:8aba07490dce | 87 | pc.printf("6: Enable RTS/CTS\n\r"); |
wim | 2:8aba07490dce | 88 | pc.printf("7: Disable RTS/CTS\n\r"); |
wim | 3:3d4269319b51 | 89 | pc.printf("8: Write block\n\r"); |
wim | 3:3d4269319b51 | 90 | pc.printf("9: Baudrate 9600\n\r"); |
wim | 3:3d4269319b51 | 91 | pc.printf("A: Baudrate 115200\n\r"); |
wim | 3:3d4269319b51 | 92 | pc.printf("B: Transparant mode with bufferdisplay\n\r"); |
wim | 3:3d4269319b51 | 93 | pc.printf("C: Test printf \n\r"); |
wim | 1:f0d3984f2586 | 94 | |
wim | 3:3d4269319b51 | 95 | #if(0) |
wim | 1:f0d3984f2586 | 96 | pc.printf("D: \n\r"); |
wim | 1:f0d3984f2586 | 97 | pc.printf("P: \n\r"); |
wim | 1:f0d3984f2586 | 98 | #endif |
wim | 1:f0d3984f2586 | 99 | pc.printf("\n\r"); |
wim | 1:f0d3984f2586 | 100 | } |
wim | 1:f0d3984f2586 | 101 | |
wim | 1:f0d3984f2586 | 102 | // Variables for Heartbeat and Status monitoring |
wim | 1:f0d3984f2586 | 103 | Ticker heartbeat; |
wim | 1:f0d3984f2586 | 104 | bool heartbeatflag=false; |
wim | 1:f0d3984f2586 | 105 | |
wim | 1:f0d3984f2586 | 106 | // Local functions |
wim | 1:f0d3984f2586 | 107 | void clear_screen() { |
wim | 1:f0d3984f2586 | 108 | //ANSI Terminal Commands |
wim | 1:f0d3984f2586 | 109 | pc.printf("\x1B[2J"); |
wim | 1:f0d3984f2586 | 110 | pc.printf("\x1B[H"); |
wim | 1:f0d3984f2586 | 111 | } |
wim | 1:f0d3984f2586 | 112 | |
wim | 1:f0d3984f2586 | 113 | |
wim | 1:f0d3984f2586 | 114 | // Heartbeat monitor |
wim | 1:f0d3984f2586 | 115 | void pulse() { |
whatnick | 4:82730070e690 | 116 | //heartbeatLED = !heartbeatLED; |
wim | 1:f0d3984f2586 | 117 | } |
wim | 1:f0d3984f2586 | 118 | |
wim | 1:f0d3984f2586 | 119 | void heartbeat_start() { |
wim | 1:f0d3984f2586 | 120 | heartbeat.attach(&pulse, 0.5); |
wim | 1:f0d3984f2586 | 121 | } |
wim | 1:f0d3984f2586 | 122 | |
wim | 1:f0d3984f2586 | 123 | void heartbeat_stop() { |
wim | 1:f0d3984f2586 | 124 | heartbeat.detach(); |
wim | 1:f0d3984f2586 | 125 | } |
wim | 1:f0d3984f2586 | 126 | |
wim | 1:f0d3984f2586 | 127 | |
wim | 0:d83a90125711 | 128 | int main() { |
wim | 1:f0d3984f2586 | 129 | bool running=true; |
wim | 2:8aba07490dce | 130 | bool running_test=true; |
wim | 2:8aba07490dce | 131 | char command, ch; |
wim | 1:f0d3984f2586 | 132 | int i=0; |
wim | 1:f0d3984f2586 | 133 | |
wim | 2:8aba07490dce | 134 | #if defined(TARGET_LPC1768) |
wim | 2:8aba07490dce | 135 | pc.printf("\r\nHello World from LPC1768\r\n"); |
wim | 2:8aba07490dce | 136 | #endif |
wim | 2:8aba07490dce | 137 | #if defined(TARGET_KL25Z) |
wim | 2:8aba07490dce | 138 | pc.printf("\r\nHello World from KL25Z\r\n"); |
wim | 2:8aba07490dce | 139 | #endif |
wim | 2:8aba07490dce | 140 | #if defined(TARGET_LPC812) |
wim | 2:8aba07490dce | 141 | pc.printf("\r\nHello World from LPC812\r\n"); |
wim | 2:8aba07490dce | 142 | #endif |
wim | 2:8aba07490dce | 143 | |
wim | 1:f0d3984f2586 | 144 | |
wim | 1:f0d3984f2586 | 145 | heartbeat_start(); |
wim | 1:f0d3984f2586 | 146 | |
whatnick | 4:82730070e690 | 147 | //myled1 = 1; // LED Off |
wim | 1:f0d3984f2586 | 148 | |
wim | 1:f0d3984f2586 | 149 | // We need to enable flow control or we overflow buffers and |
wim | 1:f0d3984f2586 | 150 | // lose data when used with the WiFly. Note that flow control |
wim | 1:f0d3984f2586 | 151 | // needs to be enabled on the WiFly for this to work but it's |
wim | 1:f0d3984f2586 | 152 | // possible to do that with flow control enabled here but not there. |
wim | 1:f0d3984f2586 | 153 | // serial_bridge.set_flow_control(SC16IS750::RTSCTS); |
wim | 1:f0d3984f2586 | 154 | |
wim | 1:f0d3984f2586 | 155 | serial_bridge.ioSetDirection(0xFF); // All outputs |
wim | 1:f0d3984f2586 | 156 | serial_bridge.ioSetState(0x00); // All On |
wim | 1:f0d3984f2586 | 157 | |
wim | 1:f0d3984f2586 | 158 | show_menu(); |
wim | 1:f0d3984f2586 | 159 | |
wim | 1:f0d3984f2586 | 160 | while(running) { |
wim | 0:d83a90125711 | 161 | |
wim | 1:f0d3984f2586 | 162 | if(pc.readable()) { |
wim | 1:f0d3984f2586 | 163 | command = pc.getc(); |
wim | 1:f0d3984f2586 | 164 | pc.printf("command= %c \n\r", command); |
wim | 1:f0d3984f2586 | 165 | |
wim | 1:f0d3984f2586 | 166 | switch (command) { |
wim | 1:f0d3984f2586 | 167 | case '0' : |
wim | 1:f0d3984f2586 | 168 | pc.printf("Done\n\r"); |
wim | 1:f0d3984f2586 | 169 | running = false; |
wim | 1:f0d3984f2586 | 170 | break; |
wim | 1:f0d3984f2586 | 171 | |
wim | 1:f0d3984f2586 | 172 | case '1' : |
wim | 1:f0d3984f2586 | 173 | show_menu(); |
wim | 1:f0d3984f2586 | 174 | break; |
wim | 1:f0d3984f2586 | 175 | |
wim | 1:f0d3984f2586 | 176 | case '2' : |
wim | 1:f0d3984f2586 | 177 | pc.printf("Init\n\r"); |
whatnick | 4:82730070e690 | 178 | serial_bridge._init(); |
whatnick | 4:82730070e690 | 179 | pc.printf("Done Init"); |
wim | 1:f0d3984f2586 | 180 | break; |
wim | 1:f0d3984f2586 | 181 | |
wim | 1:f0d3984f2586 | 182 | case '3' : |
wim | 3:3d4269319b51 | 183 | pc.printf("IO Port Out\n\r"); |
wim | 1:f0d3984f2586 | 184 | |
wim | 1:f0d3984f2586 | 185 | i=0; |
wim | 1:f0d3984f2586 | 186 | while (!pc.readable()) { |
wim | 1:f0d3984f2586 | 187 | serial_bridge.ioSetState(~i); |
wim | 1:f0d3984f2586 | 188 | serial_bridge.ioGetState() ; //test |
wim | 1:f0d3984f2586 | 189 | wait(0.5); |
wim | 1:f0d3984f2586 | 190 | pc.putc('*'); |
wim | 1:f0d3984f2586 | 191 | i=(i+1) & 0xFF; |
wim | 1:f0d3984f2586 | 192 | } |
wim | 1:f0d3984f2586 | 193 | |
wim | 1:f0d3984f2586 | 194 | pc.getc(); |
wim | 3:3d4269319b51 | 195 | pc.printf("IO Port Out Done\n\r"); |
wim | 1:f0d3984f2586 | 196 | break; |
wim | 1:f0d3984f2586 | 197 | |
wim | 1:f0d3984f2586 | 198 | case '4' : |
wim | 3:3d4269319b51 | 199 | pc.printf("Transparant Mode, Enter '#' to quit...\n\r"); |
wim | 1:f0d3984f2586 | 200 | |
wim | 2:8aba07490dce | 201 | running_test=true; |
wim | 2:8aba07490dce | 202 | |
wim | 1:f0d3984f2586 | 203 | while (running_test) { |
wim | 1:f0d3984f2586 | 204 | // From SPI/I2C to serial |
wim | 1:f0d3984f2586 | 205 | while (running_test && pc.readable()) { |
wim | 1:f0d3984f2586 | 206 | ch = pc.getc(); |
wim | 3:3d4269319b51 | 207 | running_test = (ch != '#'); |
wim | 1:f0d3984f2586 | 208 | serial_bridge.putc(ch); |
wim | 1:f0d3984f2586 | 209 | } |
wim | 1:f0d3984f2586 | 210 | |
wim | 1:f0d3984f2586 | 211 | // From Serial to SPI/I2C |
wim | 1:f0d3984f2586 | 212 | while (running_test && serial_bridge.readable()) { |
wim | 1:f0d3984f2586 | 213 | ch = serial_bridge.getc(); |
wim | 3:3d4269319b51 | 214 | running_test = (ch != '#'); |
wim | 1:f0d3984f2586 | 215 | pc.putc(ch); |
wim | 1:f0d3984f2586 | 216 | } |
wim | 1:f0d3984f2586 | 217 | |
wim | 1:f0d3984f2586 | 218 | } |
wim | 1:f0d3984f2586 | 219 | |
wim | 3:3d4269319b51 | 220 | pc.printf("\n\rTransparant Mode done\n\r"); |
wim | 1:f0d3984f2586 | 221 | break; |
wim | 1:f0d3984f2586 | 222 | |
wim | 2:8aba07490dce | 223 | case '5' : |
wim | 2:8aba07490dce | 224 | pc.printf("Available for Reading = %3d (Free Space = %3d)\n\r", serial_bridge.readableCount(), SC16IS750_FIFO_RX - serial_bridge.readableCount()); |
wim | 2:8aba07490dce | 225 | pc.printf("Available for Writing = %3d (Used Space = %3d)\n\r", serial_bridge.writableCount(), SC16IS750_FIFO_TX - serial_bridge.writableCount()); |
wim | 2:8aba07490dce | 226 | break; |
wim | 2:8aba07490dce | 227 | |
wim | 2:8aba07490dce | 228 | case '6' : |
wim | 2:8aba07490dce | 229 | pc.printf("Enable RTS/CTS\n\r"); |
wim | 2:8aba07490dce | 230 | serial_bridge.set_flow_control(SC16IS750::RTSCTS); |
wim | 2:8aba07490dce | 231 | break; |
wim | 2:8aba07490dce | 232 | case '7' : |
wim | 2:8aba07490dce | 233 | pc.printf("Disable RTS/CTS\n\r"); |
wim | 2:8aba07490dce | 234 | serial_bridge.set_flow_control(SC16IS750::Disabled); |
wim | 2:8aba07490dce | 235 | break; |
wim | 2:8aba07490dce | 236 | |
wim | 2:8aba07490dce | 237 | case '8' : |
wim | 2:8aba07490dce | 238 | pc.printf("Write block\n\r"); |
wim | 3:3d4269319b51 | 239 | serial_bridge.writeString("Hello World from mbed and SC16IS750 "); |
wim | 3:3d4269319b51 | 240 | break; |
wim | 3:3d4269319b51 | 241 | |
wim | 3:3d4269319b51 | 242 | case '9' : |
wim | 3:3d4269319b51 | 243 | pc.printf("Baudrate = 9600, Divisor = %d\n\r", SC16IS750_BAUDRATE_DIVISOR(9600)); |
wim | 3:3d4269319b51 | 244 | serial_bridge.baud(9600); |
wim | 3:3d4269319b51 | 245 | break; |
wim | 3:3d4269319b51 | 246 | |
wim | 3:3d4269319b51 | 247 | case 'A' : |
wim | 3:3d4269319b51 | 248 | pc.printf("Baudrate = 115200, Divisor = %d\n\r", SC16IS750_BAUDRATE_DIVISOR(115200)); |
wim | 3:3d4269319b51 | 249 | serial_bridge.baud(115200); |
wim | 2:8aba07490dce | 250 | break; |
wim | 2:8aba07490dce | 251 | |
wim | 3:3d4269319b51 | 252 | case 'B' : |
wim | 3:3d4269319b51 | 253 | pc.printf("Transparant Mode with buffer display, Enter '#' to quit...\n\r"); |
wim | 3:3d4269319b51 | 254 | |
wim | 3:3d4269319b51 | 255 | running_test=true; |
wim | 3:3d4269319b51 | 256 | |
wim | 3:3d4269319b51 | 257 | while (running_test) { |
wim | 3:3d4269319b51 | 258 | // From SPI/I2C to serial |
wim | 3:3d4269319b51 | 259 | while (running_test && pc.readable()) { |
wim | 3:3d4269319b51 | 260 | ch = pc.getc(); |
wim | 3:3d4269319b51 | 261 | running_test = (ch != '#'); |
wim | 3:3d4269319b51 | 262 | serial_bridge.putc(ch); |
wim | 3:3d4269319b51 | 263 | |
wim | 3:3d4269319b51 | 264 | // Show buffers when character was entered |
wim | 3:3d4269319b51 | 265 | pc.printf("\n\r"); |
wim | 3:3d4269319b51 | 266 | pc.printf("Available for Reading = %3d (Free Space = %3d)\n\r", serial_bridge.readableCount(), SC16IS750_FIFO_RX - serial_bridge.readableCount()); |
wim | 3:3d4269319b51 | 267 | pc.printf("Available for Writing = %3d (Used Space = %3d)\n\r", serial_bridge.writableCount(), SC16IS750_FIFO_TX - serial_bridge.writableCount()); |
wim | 3:3d4269319b51 | 268 | } |
wim | 3:3d4269319b51 | 269 | |
wim | 3:3d4269319b51 | 270 | |
wim | 3:3d4269319b51 | 271 | // From Serial to SPI/I2C |
wim | 3:3d4269319b51 | 272 | while (running_test && serial_bridge.readable()) { |
wim | 3:3d4269319b51 | 273 | ch = serial_bridge.getc(); |
wim | 3:3d4269319b51 | 274 | running_test = (ch != '#'); |
wim | 3:3d4269319b51 | 275 | pc.putc(ch); |
wim | 3:3d4269319b51 | 276 | } |
wim | 3:3d4269319b51 | 277 | |
wim | 3:3d4269319b51 | 278 | } |
wim | 3:3d4269319b51 | 279 | |
wim | 3:3d4269319b51 | 280 | pc.printf("\n\rTransparant Mode done\n\r"); |
wim | 3:3d4269319b51 | 281 | break; |
wim | 3:3d4269319b51 | 282 | |
wim | 3:3d4269319b51 | 283 | case 'C' : |
wim | 3:3d4269319b51 | 284 | pc.printf("Test printf() \n\r"); |
wim | 3:3d4269319b51 | 285 | |
wim | 3:3d4269319b51 | 286 | serial_bridge.printf("Available for Reading = %3d (Free Space = %3d)\n\r", serial_bridge.readableCount(), SC16IS750_FIFO_RX - serial_bridge.readableCount() ); |
wim | 3:3d4269319b51 | 287 | serial_bridge.printf("Available for Writing = %3d (Used Space = %3d)\n\r", serial_bridge.writableCount(), SC16IS750_FIFO_TX - serial_bridge.writableCount()); |
wim | 3:3d4269319b51 | 288 | |
wim | 3:3d4269319b51 | 289 | pc.printf("\n\rTest printf() done\n\r"); |
wim | 3:3d4269319b51 | 290 | break; |
wim | 1:f0d3984f2586 | 291 | default : |
wim | 2:8aba07490dce | 292 | break; |
wim | 1:f0d3984f2586 | 293 | |
wim | 1:f0d3984f2586 | 294 | } //switch |
wim | 1:f0d3984f2586 | 295 | } //if |
wim | 1:f0d3984f2586 | 296 | } //while |
wim | 1:f0d3984f2586 | 297 | |
wim | 1:f0d3984f2586 | 298 | |
wim | 1:f0d3984f2586 | 299 | |
wim | 1:f0d3984f2586 | 300 | |
wim | 1:f0d3984f2586 | 301 | #if(0) |
wim | 1:f0d3984f2586 | 302 | |
wim | 1:f0d3984f2586 | 303 | |
wim | 0:d83a90125711 | 304 | // CS = 1; |
wim | 0:d83a90125711 | 305 | |
wim | 0:d83a90125711 | 306 | spi.format(8, 0); |
wim | 0:d83a90125711 | 307 | // spi.frequency(100000); |
wim | 0:d83a90125711 | 308 | // spi.frequency(500000); |
wim | 0:d83a90125711 | 309 | spi.frequency(1000000); |
wim | 0:d83a90125711 | 310 | // spi.frequency(1500000); |
wim | 0:d83a90125711 | 311 | |
wim | 0:d83a90125711 | 312 | |
wim | 1:f0d3984f2586 | 313 | |
wim | 0:d83a90125711 | 314 | while(1) { |
wim | 0:d83a90125711 | 315 | CS=0; |
wim | 0:d83a90125711 | 316 | spi.write(0xAA); |
wim | 0:d83a90125711 | 317 | spi.write(0x81); |
wim | 0:d83a90125711 | 318 | CS=1; |
wim | 0:d83a90125711 | 319 | wait_us(5); |
wim | 0:d83a90125711 | 320 | } |
wim | 0:d83a90125711 | 321 | #endif |
wim | 0:d83a90125711 | 322 | |
wim | 0:d83a90125711 | 323 | pc.printf("\nBye World!\n"); |
wim | 0:d83a90125711 | 324 | } |