.
https://www.mediafire.com/file/sjhxgn70gxshilg/protocol_spi_pwm.png/file
main.cpp@108:2fd41d299a8c, 2022-04-05 (annotated)
- Committer:
- voltxd
- Date:
- Tue Apr 05 11:19:38 2022 +0000
- Revision:
- 108:2fd41d299a8c
- Parent:
- 107:0965c72c798e
- Child:
- 109:4ee7ffc8f175
.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mbed_official | 82:abf1b1785bd7 | 1 | /* mbed Microcontroller Library |
mbed_official | 102:6979ad8bc0bc | 2 | * Copyright (c) 2019 ARM Limited |
mbed_official | 82:abf1b1785bd7 | 3 | * SPDX-License-Identifier: Apache-2.0 |
mbed_official | 82:abf1b1785bd7 | 4 | */ |
mbed_official | 82:abf1b1785bd7 | 5 | |
Jonathan Austin |
0:2757d7abb7d9 | 6 | #include "mbed.h" |
mbed_official | 100:ec006d6f3cb6 | 7 | #include "platform/mbed_thread.h" |
ajuton | 107:0965c72c798e | 8 | #include <string.h> |
ajuton | 107:0965c72c798e | 9 | #include <stdio.h> |
voltxd | 108:2fd41d299a8c | 10 | #include <stdlib.h> |
voltxd | 108:2fd41d299a8c | 11 | #include <SPISlave.h> |
Jonathan Austin |
0:2757d7abb7d9 | 12 | |
Jonathan Austin |
0:2757d7abb7d9 | 13 | |
mbed_official | 102:6979ad8bc0bc | 14 | // Blinking rate in milliseconds |
voltxd | 108:2fd41d299a8c | 15 | #define BLINKING_RATE_MS 2000 |
mbed_official | 88:bea4f2daa48c | 16 | |
voltxd | 108:2fd41d299a8c | 17 | //Define SPI |
voltxd | 108:2fd41d299a8c | 18 | #define SPI3_MOSI D11 |
voltxd | 108:2fd41d299a8c | 19 | #define SPI3_MISO D12 |
voltxd | 108:2fd41d299a8c | 20 | #define SPI3_SCLK D13 |
voltxd | 108:2fd41d299a8c | 21 | #define SPI3_CS A3 |
ajuton | 107:0965c72c798e | 22 | |
voltxd | 108:2fd41d299a8c | 23 | //Define PWM |
voltxd | 108:2fd41d299a8c | 24 | #define PWM_PROP D10 |
voltxd | 108:2fd41d299a8c | 25 | #define PWM_DIR D9 |
ajuton | 107:0965c72c798e | 26 | |
voltxd | 108:2fd41d299a8c | 27 | //Déclarations PWM |
voltxd | 108:2fd41d299a8c | 28 | PwmOut propulsion(PWM_PROP); |
voltxd | 108:2fd41d299a8c | 29 | PwmOut direction(PWM_DIR); |
ajuton | 107:0965c72c798e | 30 | |
ajuton | 107:0965c72c798e | 31 | DigitalOut led(LED1); |
ajuton | 107:0965c72c798e | 32 | |
voltxd | 108:2fd41d299a8c | 33 | |
voltxd | 108:2fd41d299a8c | 34 | //Déclarations Liaisons |
ajuton | 107:0965c72c798e | 35 | static BufferedSerial serial_port(USBTX, USBRX,115200); |
voltxd | 108:2fd41d299a8c | 36 | SPISlave device(SPI3_MOSI, SPI3_MISO, SPI3_SCLK, SPI3_CS); // mosi, miso, sclk, ssel |
mbed_official | 102:6979ad8bc0bc | 37 | |
mbed_official | 82:abf1b1785bd7 | 38 | int main() |
mbed_official | 82:abf1b1785bd7 | 39 | { |
ajuton | 107:0965c72c798e | 40 | uint32_t pulsewidth_direction = 1100; |
voltxd | 108:2fd41d299a8c | 41 | char texte[32]; |
voltxd | 108:2fd41d299a8c | 42 | sprintf(texte,"Test\n\r"); |
voltxd | 108:2fd41d299a8c | 43 | serial_port.write(texte,strlen(texte)); |
ajuton | 107:0965c72c798e | 44 | propulsion.period_us(20000); |
ajuton | 107:0965c72c798e | 45 | propulsion.pulsewidth_us(1500); |
voltxd | 108:2fd41d299a8c | 46 | thread_sleep_for(2000); |
ajuton | 107:0965c72c798e | 47 | direction.period_us(20000); |
ajuton | 107:0965c72c798e | 48 | direction.pulsewidth_us(pulsewidth_direction); |
voltxd | 108:2fd41d299a8c | 49 | led = 1; |
voltxd | 108:2fd41d299a8c | 50 | device.format(8); |
voltxd | 108:2fd41d299a8c | 51 | |
Jonathan Austin |
0:2757d7abb7d9 | 52 | while (true) { |
voltxd | 108:2fd41d299a8c | 53 | /* |
ajuton | 107:0965c72c798e | 54 | |
voltxd | 108:2fd41d299a8c | 55 | propulsion.pulsewidth_us(1450); |
voltxd | 108:2fd41d299a8c | 56 | thread_sleep_for(BLINKING_RATE_MS); |
voltxd | 108:2fd41d299a8c | 57 | led = !led; |
voltxd | 108:2fd41d299a8c | 58 | propulsion.pulsewidth_us(1400); |
voltxd | 108:2fd41d299a8c | 59 | thread_sleep_for(BLINKING_RATE_MS); |
voltxd | 108:2fd41d299a8c | 60 | led = !led; |
voltxd | 108:2fd41d299a8c | 61 | propulsion.pulsewidth_us(1500); |
voltxd | 108:2fd41d299a8c | 62 | thread_sleep_for(BLINKING_RATE_MS); |
voltxd | 108:2fd41d299a8c | 63 | led = !led; |
voltxd | 108:2fd41d299a8c | 64 | propulsion.pulsewidth_us(1550); |
voltxd | 108:2fd41d299a8c | 65 | thread_sleep_for(BLINKING_RATE_MS); |
voltxd | 108:2fd41d299a8c | 66 | led = !led; |
voltxd | 108:2fd41d299a8c | 67 | propulsion.pulsewidth_us(1600); |
voltxd | 108:2fd41d299a8c | 68 | thread_sleep_for(BLINKING_RATE_MS); |
voltxd | 108:2fd41d299a8c | 69 | led = !led; |
voltxd | 108:2fd41d299a8c | 70 | propulsion.pulsewidth_us(1800); |
voltxd | 108:2fd41d299a8c | 71 | thread_sleep_for(BLINKING_RATE_MS); |
voltxd | 108:2fd41d299a8c | 72 | */ |
ajuton | 107:0965c72c798e | 73 | |
ajuton | 107:0965c72c798e | 74 | if (device.receive()) { |
voltxd | 108:2fd41d299a8c | 75 | led = !led; |
ajuton | 107:0965c72c798e | 76 | int v = device.read(); // Read byte from master |
voltxd | 108:2fd41d299a8c | 77 | if (v == 'a') |
voltxd | 108:2fd41d299a8c | 78 | { |
voltxd | 108:2fd41d299a8c | 79 | //device.reply('o'); |
voltxd | 108:2fd41d299a8c | 80 | led = 1; |
voltxd | 108:2fd41d299a8c | 81 | } |
voltxd | 108:2fd41d299a8c | 82 | else if (v == 'e') |
voltxd | 108:2fd41d299a8c | 83 | { |
voltxd | 108:2fd41d299a8c | 84 | //device.reply('n'); |
voltxd | 108:2fd41d299a8c | 85 | led = 0; |
voltxd | 108:2fd41d299a8c | 86 | } |
ajuton | 107:0965c72c798e | 87 | } |
Jonathan Austin |
0:2757d7abb7d9 | 88 | } |
Jonathan Austin |
0:2757d7abb7d9 | 89 | } |