From 4dcc88ba324991f5ebeb7671211801e81e17a7f5 Mon Sep 17 00:00:00 2001 From: Pascal Langer Date: Sun, 18 Aug 2019 18:44:36 +0200 Subject: [PATCH] Serial debug documentation --- docs/Advanced_Debug.md | 15 +++++++++++++++ docs/Advanced_Topics.md | 11 +++++++---- docs/images/Serial_Monitor_1.png | Bin 0 -> 5672 bytes docs/images/Serial_Monitor_2.png | Bin 0 -> 9882 bytes 4 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 docs/Advanced_Debug.md create mode 100644 docs/images/Serial_Monitor_1.png create mode 100644 docs/images/Serial_Monitor_2.png diff --git a/docs/Advanced_Debug.md b/docs/Advanced_Debug.md new file mode 100644 index 0000000..71aa909 --- /dev/null +++ b/docs/Advanced_Debug.md @@ -0,0 +1,15 @@ +# Enable the STM32 module serial debug feature + +To enable serial debug on your module you must know how to buid the firmware from the source code available on this GitHub. To do so follow this page: [Compiling and programming the STM32 module](Compiling_STM32.md). + +Procedure to use serial debug: +1. Edit the file [Multiprotocol.ino](../Multiprotocol/Multiprotocol.ino#L26) +1. Modify at the begining of the file the line: `//#define DEBUG_SERIAL` by removing the // leaving only: `#define DEBUG_SERIAL` +1. Save the file +1. Power on the TX +1. Open in the Arduino IDE the Serial Monitor: Tools->Serial Monitor or Ctrl+Shift+M
+1. Make sure the settings at the bottom of the Serial Monitor window are the same as the picture above especially the baud rate set to 115200 baud +1. Upload the firmware to the module as you usually do with the Arduino IDE and **do not disconnect the USB cable or FTDI** +1. The Serial Monitor window should show the module booting and more depending on the protocol currently loaded
+1. At this stage you can test whatever is needed or have been instructed to do. You can easily select text in the window to copy and paste it on the forum or in a text file. +1. **Important:** to use your module normally and before flying you must reupload the firmware with the debug line commented: `//#define DEBUG_SERIAL` diff --git a/docs/Advanced_Topics.md b/docs/Advanced_Topics.md index edd1523..3afa243 100644 --- a/docs/Advanced_Topics.md +++ b/docs/Advanced_Topics.md @@ -1,11 +1,14 @@ -# Advanced Topics {This page is currently a proof of concept} +# Advanced Topics Warning: the topics on this page are not for the fainthearted. It is strongly recommended that you have some experience in getting up and runnning with your module before you dive in there. On the other hand what is described on this page are some very useful options that could greatly increase the value and the enjoyment of your Multiprotocol module. +# Enable STM32 module serial debug +This document describes how to enable serial debug for STM32 MULTI-modules. This can be useful in case of issues with a protocol or to reverse a protocol based on the XN297L RF component. See the [MULTI-Module Debug](Advanced_Debug.md) page for more details. + +# EEPROM Backup and Restore +This document describes how to back up and restore the EEPROM for both Atmega328p and STM32 MULTI-modules. This can be useful if cloning a module, or to preserve settings. See the [MULTI-Module EEPROM](EEPROM.md) page for more details. + # Telemetry in PPM mode It is possible to access the telemetry stream coming from the receiver through the MULTI-module. This document describes a simple bluetooth module to stream telemetry information to a mobile device like an Android smartphone or tablet. The method may be generalized to feed telemetry to the transmitter if the transmitter has the capabilities to process the information. This is very useful with modules used in the PPM mode with transmitters that do not support telemetry. See the [Advanced Bluetooth Telemetry](Advanced_Bluetooth_Telemetry.md) page for more details. # Manually setting fuses on ATmega328 This document describes a relatively simple process to set the fuses on ATmega328. See the [Advanced Manually Setting ATmega328 Fuses](Advanced_Manually_Setting_ATmega328_Fuses.md) page for more details. - -# EEPROM Backup and Restore -This document describes how to back up and restore the EEPROM for both Atmega328p and STM32 MULTI-modules. This can be useful if cloning a module, or to preserve settings. See the [MULTI-Module EEPROM](EEPROM.md) page for more details. diff --git a/docs/images/Serial_Monitor_1.png b/docs/images/Serial_Monitor_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6ea902f92e4e1ef9de044605c9d497e9efe39827 GIT binary patch literal 5672 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 literal 0 HcmV?d00001 diff --git a/docs/images/Serial_Monitor_2.png b/docs/images/Serial_Monitor_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ce0f4355555a3155681268e1ba506a6b86c1c850 GIT binary patch literal 9882 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 X>$6lt5n&NR2S8a~<7KIw#ryvSo#DE_ literal 0 HcmV?d00001