.

Dependencies:   L432KC_SPI_Pey_Lal

main.cpp

Committer:
voltxd
Date:
2022-04-07
Revision:
111:f11575e7c79b
Parent:
110:a6d1d3525014
Child:
112:478ae92cb106

File content as of revision 111:f11575e7c79b:

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

#include "mbed.h"
#include "platform/mbed_thread.h"
#include "protocol.h"

//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

//Declaration PWM outputs
PwmOut propulsion(PWM_PROP);
PwmOut direction(PWM_DIR);

//Declaration Links
static BufferedSerial serial_port(USBTX, USBRX,115200);
SPISlave device(SPI3_MOSI, SPI3_MISO, SPI3_SCLK, SPI3_CS); // mosi, miso, sclk, ssel

int main()
{
    //Declaration PWM variables
    uint32_t pulsewidth_direction = 1100;
    uint32_t pulsewidth_propulsion = 1500;
    
    //Test Serial port
    serial_port.write("Test\n\r",strlen("Test\n\r"));
    
    //Init. propulsion PWM
    propulsion.period_us(20000);
    propulsion.pulsewidth_us(pulsewidth_propulsion);
    
    thread_sleep_for(2000);
    
    //Init. Direction PWM
    direction.period_us(20000);
    direction.pulsewidth_us(pulsewidth_direction);
    
    //Init. SPI Link
    device.format(8);
    
    //Infinite loop
    while(1) 
    {
        //If SPI received a char, decode it then reply bullshit.
        if(device.receive())
        {
            decodeMessage((char)device.read());
            device.reply(0b10101010);
        }
        
        //If decoding has ended, get and changes PWM values.
        if(isDataAvailable())
        {
            getVerifiedPWMValues(&pulsewidth_propulsion, &pulsewidth_direction);
            propulsion.pulsewidth_us(pulsewidth_propulsion);
            direction.pulsewidth_us(pulsewidth_direction);
        }        
    }
}