.

https://www.mediafire.com/file/sjhxgn70gxshilg/protocol_spi_pwm.png/file

main.cpp

Committer:
voltxd
Date:
2022-04-05
Revision:
109:4ee7ffc8f175
Parent:
108:2fd41d299a8c
Child:
110:a6d1d3525014

File content as of revision 109:4ee7ffc8f175:

/* mbed Microcontroller Library
 * Copyright (c) 2019 ARM Limited
 * SPDX-License-Identifier: Apache-2.0
 */

#include "mbed.h"
#include "platform/mbed_thread.h"
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <SPISlave.h>
#include "protocol.h"


// Blinking rate in milliseconds
#define BLINKING_RATE_MS    2000

//Define SPI
#define SPI3_MOSI   D11
#define SPI3_MISO   D12
#define SPI3_SCLK   D13
#define SPI3_CS     A3

//Define PWM
#define PWM_PROP    D10
#define PWM_DIR     D9

//Déclarations PWM
PwmOut propulsion(PWM_PROP);
PwmOut direction(PWM_DIR);

//Déclarations Liaisons
static BufferedSerial serial_port(USBTX, USBRX,115200);
SPISlave device(SPI3_MOSI, SPI3_MISO, SPI3_SCLK, SPI3_CS); // mosi, miso, sclk, ssel

int main()
{
    uint32_t pulsewidth_direction = 1100;
    uint32_t pulsewidth_propulsion = 1500;
    
    char texte[32];
    
    sprintf(texte,"Test\n\r");
    serial_port.write(texte,strlen(texte));
    
    propulsion.period_us(20000);
    propulsion.pulsewidth_us(pulsewidth_propulsion);
    
    thread_sleep_for(2000);
    
    direction.period_us(20000);
    direction.pulsewidth_us(pulsewidth_direction);
    
    device.format(8);
    
    while (true) {
        if (device.receive())
        {
            decodeMessage((char)device.read());
        }
        if (isDataAvailable())
        {
            uint32_t pwms[2];
            getVerifiedPWMValues(pwms);
            pulsewidth_propulsion = pwms[0];
            pulsewidth_direction = pwms[1];
            propulsion.pulsewidth_us(pulsewidth_propulsion);
            direction.pulsewidth_us(pulsewidth_direction);
        }
        
        /*
        
        propulsion.pulsewidth_us(1450);
        thread_sleep_for(BLINKING_RATE_MS);
        led = !led;
        propulsion.pulsewidth_us(1400);
        thread_sleep_for(BLINKING_RATE_MS);
        led = !led;
        propulsion.pulsewidth_us(1500);
        thread_sleep_for(BLINKING_RATE_MS);
        led = !led;
        propulsion.pulsewidth_us(1550);
        thread_sleep_for(BLINKING_RATE_MS);
        led = !led;
        propulsion.pulsewidth_us(1600);
        thread_sleep_for(BLINKING_RATE_MS);
        led = !led;
        propulsion.pulsewidth_us(1800);
        thread_sleep_for(BLINKING_RATE_MS);
        */
        
        
    }
}