.

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

Revision:
112:478ae92cb106
Parent:
111:f11575e7c79b
--- a/main.cpp	Thu Apr 07 12:30:01 2022 +0000
+++ b/main.cpp	Tue Apr 26 11:11:49 2022 +0000
@@ -14,15 +14,18 @@
 #define SPI3_CS     A3
 
 //Define PWM
-#define PWM_PROP    D10
-#define PWM_DIR     D9
+#define PWM_PROP    D9
+#define PWM_DIR     D10
+
+//fontion interrupt SP
+void onRxInterrupt();
 
 //Declaration PWM outputs
 PwmOut propulsion(PWM_PROP);
 PwmOut direction(PWM_DIR);
 
 //Declaration Links
-static BufferedSerial serial_port(USBTX, USBRX,115200);
+static UnbufferedSerial serial_port(USBTX, USBRX,115200);
 SPISlave device(SPI3_MOSI, SPI3_MISO, SPI3_SCLK, SPI3_CS); // mosi, miso, sclk, ssel
 
 int main()
@@ -34,6 +37,9 @@
     //Test Serial port
     serial_port.write("Test\n\r",strlen("Test\n\r"));
     
+    //Interrupt SP
+    serial_port.attach(&onRxInterrupt, SerialBase::RxIrq);
+    
     //Init. propulsion PWM
     propulsion.period_us(20000);
     propulsion.pulsewidth_us(pulsewidth_propulsion);
@@ -53,7 +59,9 @@
         //If SPI received a char, decode it then reply bullshit.
         if(device.receive())
         {
-            decodeMessage((char)device.read());
+            char c = device.read();
+            decodeMessage(c);
+            serial_port.write(&c, 1);
             device.reply(0b10101010);
         }
         
@@ -64,5 +72,19 @@
             propulsion.pulsewidth_us(pulsewidth_propulsion);
             direction.pulsewidth_us(pulsewidth_direction);
         }        
+        
     }
 }
+
+void onRxInterrupt()
+{
+    char c;
+
+
+    // Read the data to clear the receive interrupt.
+    if (serial_port.read(&c, 1)) {
+        decodeMessage(c);
+        serial_port.write(&c, 1);
+    }
+
+}
\ No newline at end of file