From 5b7f1f5e4bd30e6a5311fc6f13f3c527ca8334f3 Mon Sep 17 00:00:00 2001 From: luc lebosse Date: Mon, 29 Aug 2016 10:40:14 +0200 Subject: [PATCH] Merge devt branch to move to 0.92.10 base --- .gitignore | 1 + .travis.yml | 62 +- README.md | 54 +- Translate.xlsx | Bin 0 -> 488331 bytes pinout.xlsx | Bin 34461 -> 34296 bytes .../arduino/sam/cores/arduino/USB/USBCore.cpp | 891 -- .../sam/variants/arduino_due_x/variant.cpp | 492 - .../sam/1.6.4/cores/arduino/USB/USBCore.cpp | 891 -- .../1.6.4/variants/arduino_due_x/variant.cpp | 496 - .../sam/1.6.8}/cores/arduino/USB/USBCore.cpp | 17 +- .../1.6.8}/variants/arduino_due_x/variant.cpp | 8 +- .../src/horus/engine/driver/board.py | 288 + src/ArduinoDUE/Repetier/BedLeveling.cpp | 773 ++ src/ArduinoDUE/Repetier/Commands.cpp | 3576 +++--- src/ArduinoDUE/Repetier/Commands.h | 3 +- src/ArduinoDUE/Repetier/Communication.cpp | 127 +- src/ArduinoDUE/Repetier/Communication.h | 63 +- src/ArduinoDUE/Repetier/Configuration.h | 544 +- src/ArduinoDUE/Repetier/Drivers.cpp | 224 + src/ArduinoDUE/Repetier/Drivers.h | 177 + src/ArduinoDUE/Repetier/Eeprom.cpp | 329 +- src/ArduinoDUE/Repetier/Eeprom.h | 90 +- src/ArduinoDUE/Repetier/Events.h | 93 + src/ArduinoDUE/Repetier/Extruder.cpp | 1540 ++- src/ArduinoDUE/Repetier/Extruder.h | 130 +- src/ArduinoDUE/Repetier/HAL.cpp | 1583 ++- src/ArduinoDUE/Repetier/HAL.h | 916 +- src/ArduinoDUE/Repetier/Printer.cpp | 1972 ++- src/ArduinoDUE/Repetier/Printer.h | 738 +- src/ArduinoDUE/Repetier/Repetier.h | 682 +- src/ArduinoDUE/Repetier/Repetier.ino | 58 +- src/ArduinoDUE/Repetier/SDCard.cpp | 313 +- src/ArduinoDUE/Repetier/SdFat.cpp | 175 +- src/ArduinoDUE/Repetier/SdFat.h | 7 +- src/ArduinoDUE/Repetier/fastio.h | 3372 +---- src/ArduinoDUE/Repetier/gcode.cpp | 410 +- src/ArduinoDUE/Repetier/gcode.h | 60 +- src/ArduinoDUE/Repetier/logo.h | 39 +- src/ArduinoDUE/Repetier/motion.cpp | 1834 ++- src/ArduinoDUE/Repetier/motion.h | 307 +- src/ArduinoDUE/Repetier/pins.h | 1140 +- src/ArduinoDUE/Repetier/u8glib_ex.h | 3544 ++++- src/ArduinoDUE/Repetier/u8glib_ex_stacker.h | 10701 ++++++++++++++++ src/ArduinoDUE/Repetier/ui.cpp | 2022 ++- src/ArduinoDUE/Repetier/ui.h | 1372 +- src/ArduinoDUE/Repetier/uiconfig.h | 47 +- src/ArduinoDUE/Repetier/uilang.cpp | 10261 +++++++++++++++ src/ArduinoDUE/Repetier/uilang.h | 8390 +++++++++--- src/ArduinoDUE/Repetier/uimenu.h | 1900 ++- src/ArduinoDUE/Repetier/userpins.h | 19 +- 50 files changed, 47552 insertions(+), 15179 deletions(-) create mode 100644 Translate.xlsx delete mode 100644 src/ArduinoDUE/AdditionalArduinoFiles/1.5.8/hardware/arduino/sam/cores/arduino/USB/USBCore.cpp delete mode 100644 src/ArduinoDUE/AdditionalArduinoFiles/1.5.8/hardware/arduino/sam/variants/arduino_due_x/variant.cpp delete mode 100644 src/ArduinoDUE/AdditionalArduinoFiles/Arduino - 1.6.5 -Due 1.6.4/Arduino15/packages/hardware/sam/1.6.4/cores/arduino/USB/USBCore.cpp delete mode 100644 src/ArduinoDUE/AdditionalArduinoFiles/Arduino - 1.6.5 -Due 1.6.4/Arduino15/packages/hardware/sam/1.6.4/variants/arduino_due_x/variant.cpp rename src/ArduinoDUE/AdditionalArduinoFiles/{Arduino - 1.6.8 -Due 1.6.7/Arduino15/packages/hardware/sam/1.6.7 => Arduino - 1.6.9 -Due 1.6.8/Arduino15/packages/arduino/hardware/sam/1.6.8}/cores/arduino/USB/USBCore.cpp (98%) rename src/ArduinoDUE/AdditionalArduinoFiles/{Arduino - 1.6.8 -Due 1.6.7/Arduino15/packages/hardware/sam/1.6.7 => Arduino - 1.6.9 -Due 1.6.8/Arduino15/packages/arduino/hardware/sam/1.6.8}/variants/arduino_due_x/variant.cpp (98%) create mode 100644 src/ArduinoDUE/AdditionalArduinoFiles/Horus-0.2rc1/src/horus/engine/driver/board.py create mode 100644 src/ArduinoDUE/Repetier/BedLeveling.cpp create mode 100644 src/ArduinoDUE/Repetier/Drivers.cpp create mode 100644 src/ArduinoDUE/Repetier/Drivers.h create mode 100644 src/ArduinoDUE/Repetier/Events.h create mode 100644 src/ArduinoDUE/Repetier/u8glib_ex_stacker.h create mode 100644 src/ArduinoDUE/Repetier/uilang.cpp diff --git a/.gitignore b/.gitignore index fe36653..a26923b 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ Configuration_*.h Repetier.depend Repetier.layout activate*.bat +~$Translate.xlsx diff --git a/.travis.yml b/.travis.yml index 636d9f5..8ce027a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,46 +5,40 @@ language: bash os: - linux -before_install: - - "/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16" - +env: + matrix: + - DAVINCI=0 MODEL=0 + - DAVINCI=1 MODEL=0 + - DAVINCI=2 MODEL=0 + - DAVINCI=3 MODEL=0 + - DAVINCI=1 MODEL=1 + - DAVINCI=2 MODEL=1 + - DAVINCI=4 MODEL=1 + before_script: - - "export DISPLAY=:99.0" - - sleep 3 # give xvfb some time to start - - wget http://downloads.arduino.cc/arduino-1.6.5-linux64.tar.xz - - tar xf arduino-1.6.5-linux64.tar.xz - - mv arduino-1.6.5 $HOME/arduino_ide - - mkdir -p $HOME/.arduino15/packages/arduino/hardware/sam - - cd $HOME/.arduino15/packages/arduino/hardware/sam - - wget http://downloads.arduino.cc/cores/sam-1.6.4.tar.bz2 - - tar xf sam-1.6.4.tar.bz2 - - mkdir -p $HOME/.arduino15/packages/arduino/tools/arm-none-eabi-gcc - - cd $HOME/.arduino15/packages/arduino/tools/arm-none-eabi-gcc - - wget http://downloads.arduino.cc/gcc-arm-none-eabi-4.8.3-2014q1-linux64.tar.gz - - tar xf gcc-arm-none-eabi-4.8.3-2014q1-linux64.tar.gz - - mv gcc-arm-none-eabi-4.8.3-2014q1 4.8.3-2014q1 - - cp -f "$TRAVIS_BUILD_DIR/src/ArduinoDUE/AdditionalArduinoFiles/Arduino - 1.6.5 -Due 1.6.4/Arduino15/packages/hardware/sam/1.6.4/variants/arduino_due_x/variant.cpp" $HOME/.arduino15/packages/arduino/hardware/sam/1.6.4/variants/arduino_due_x/variant.cpp + - "/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_1.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :1 -ac -screen 0 1280x1024x16" + - sleep 3 + - export DISPLAY=:1.0 + - wget http://downloads.arduino.cc/arduino-1.6.9-linux64.tar.xz + - tar xf arduino-1.6.9-linux64.tar.xz + - mv arduino-1.6.9 $HOME/arduino_ide + - export PATH="$HOME/arduino_ide:$PATH" + - arduino --install-boards arduino:sam:1.6.8 + - arduino --board arduino:sam:arduino_due_x --save-prefs + - arduino --pref "compiler.warning_level=all" --save-prefs + - cp -f "$TRAVIS_BUILD_DIR/src/ArduinoDUE/AdditionalArduinoFiles/Arduino - 1.6.9 -Due 1.6.8/Arduino15/packages/arduino/hardware/sam/1.6.8/variants/arduino_due_x/variant.cpp" $HOME/.arduino15/packages/arduino/hardware/sam/1.6.8/variants/arduino_due_x/variant.cpp script: - cd $TRAVIS_BUILD_DIR - source command.sh - - export PATH="$HOME/arduino_ide:$PATH" - - arduino --board arduino:sam:arduino_due_x --save-prefs - - arduino --get-pref sketchbook.path - - build_sketch ./src/ArduinoDUE/Repetier/Repetier.ino - - sed -i 's/#define DAVINCI 1 /#define DAVINCI 2 /g' ./src/ArduinoDUE/Repetier/Configuration.h - - build_sketch ./src/ArduinoDUE/Repetier/Repetier.ino - - sed -i 's/#define DAVINCI 2 /#define DAVINCI 3 /g' ./src/ArduinoDUE/Repetier/Configuration.h - - build_sketch ./src/ArduinoDUE/Repetier/Repetier.ino - - sed -i 's/#define DAVINCI 3 /#define DAVINCI 0 /g' ./src/ArduinoDUE/Repetier/Configuration.h - - build_sketch ./src/ArduinoDUE/Repetier/Repetier.ino - - sed -i 's/#define DAVINCI 0 /#define DAVINCI 1 /g' ./src/ArduinoDUE/Repetier/Configuration.h - - sed -i 's/#define MODEL 0/#define MODEL 1/g' ./src/ArduinoDUE/Repetier/Configuration.h - - build_sketch ./src/ArduinoDUE/Repetier/Repetier.ino - - sed -i 's/#define DAVINCI 1 /#define DAVINCI 3 /g' ./src/ArduinoDUE/Repetier/Configuration.h - - build_sketch ./src/ArduinoDUE/Repetier/Repetier.ino - - sed -i 's/#define DAVINCI 3 /#define DAVINCI 4 /g' ./src/ArduinoDUE/Repetier/Configuration.h + - sed -i "s/#define DAVINCI 0 /#define DAVINCI $DAVINCI /g" ./src/ArduinoDUE/Repetier/Configuration.h + - sed -i "s/#define DAVINCI 1 /#define DAVINCI $DAVINCI /g" ./src/ArduinoDUE/Repetier/Configuration.h + - sed -i "s/#define DAVINCI 2 /#define DAVINCI $DAVINCI /g" ./src/ArduinoDUE/Repetier/Configuration.h + - sed -i "s/#define DAVINCI 3 /#define DAVINCI $DAVINCI /g" ./src/ArduinoDUE/Repetier/Configuration.h + - sed -i "s/#define DAVINCI 4 /#define DAVINCI $DAVINCI /g" ./src/ArduinoDUE/Repetier/Configuration.h + - sed -i "s/#define MODEL 1/#define MODEL $MODEL/g" ./src/ArduinoDUE/Repetier/Configuration.h + - sed -i "s/#define MODEL 0/#define MODEL $MODEL/g" ./src/ArduinoDUE/Repetier/Configuration.h - build_sketch ./src/ArduinoDUE/Repetier/Repetier.ino notifications: diff --git a/README.md b/README.md index 51327e3..d94f19d 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,24 @@ -##Da Vinci Firmware based on Repetier (0.92.3) +##Da Vinci Firmware based on Repetier (0.92.10) Alpha ============================ -[![Join the chat at https://gitter.im/luc-github/Repetier-Firmware-0.92](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/luc-github/Repetier-Firmware-0.92?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -Ide 1.6.5 and module Due 1.6.4 : [![Build Status](https://travis-ci.org/luc-github/Repetier-Firmware-0.92.svg?branch=master)](https://travis-ci.org/luc-github/Repetier-Firmware-0.92) +[![Join the chat at https://gitter.im/luc-github/Repetier-Firmware-0.92](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/luc-github/Repetier-Firmware-0.92?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +Build Status: [![Build Status](https://travis-ci.org/luc-github/Repetier-Firmware-0.92.svg?branch=master)](https://travis-ci.org/luc-github/Repetier-Firmware-0.92) + This firmware is based on the popular repetier firmware and modified to work with first generation Da Vinci 1.0, 2.0 single fan, 2.0 dual fans and also AiO (NB:scanner function is not supported so AiO will work like an 1.0A) If you change the board, currently DUE based are supported with RADDS, as well as Graphical screen and LCD with encoder, there are some sample configuration files provided for RADDS/DUE/GLCD using 1/128 step drivers. YOU MIGHT DAMAGE YOUR PRINTER OR VOID YOUR WARRANTY, DO IT ON YOUR OWN RISK. When it is possible on 1.0/2.0, currently on 1.0A/2.0A and AiO there is no way to revert to stock fw so be sure of what you are doing. *** -###Support for 1.0A/2.0A/AiO(no scanner) is implemented and need feedback. - -###:boom:New alpha version based on 0.92.10 is ready for test [here](https://github.com/luc-github/Repetier-Firmware-0.92/tree/devt) -* Multilangue :globe_with_meridians: -* AiO support for scanner :camera: -* Better auto leveling :tractor: +AiO scanner support is present in FW but scanner software support is currently basic, [horus](https://github.com/bqlabs/horus) is a good candidat, feel free to help [here](https://github.com/luc-github/Repetier-Firmware-0.92/issues/156) The board can be easily exposed by removing the back panel of the printer secured by two torx screws. Supported boards have a jumper labeled JP1, second generation boards have a jumper labeled J37. More info can be found on the [Voltivo forum](http://voltivo.com/forum/davinci-peersupport/340-new-kind-of-mainboard-no-j1-erase-jumper). *** -Here are just a few of the benifits of using this firmware: +Here are just a few of the benefits of using this firmware: * It works with host software such as [repetier host](http://repetier.com) and [OctoPrint](http://octoprint.org/) giving you full control of your hardware. * It works stand alone if you use a WIFI SD Card. @@ -35,16 +32,16 @@ The previous version (based on repetier v0.91) can be found [here](https://githu *** ##Current Status -####Beta - so far so good +####Alpha - so far so good *** ##Installation 1. With the machine off remove the back panel and short the jumper JP1 or J37 depending on model. Some Boards do not have jumper pins exposed but can still be shorted with a conductive wire. -2. Turn the machine on and wait a few seconds then turn it off again. The machine will have been flashed removing the current stock firmware and allowing it to be detected as a normal arduino DUE. NOTE: Windows users may need to install drivers to detect the board. Consult the Voltivo forums. -Note : points 1 and 2 are only needed to wipe the stock fw or a corrupted fw, for update they are not necessary. -3. Use an arduino IDE supporting arduino DUE, [version 1.5.8+ or 1.6.5](http://arduino.cc/en/Main/OldSoftwareReleases), 1.6.0+ bring several issues, but 1.6.5 seems working well with Due 1.6.4 module for board manager. -4. Update arduino files (variants.cpp and USBCore.cpp) with the one(s) present in src\ArduinoDUE\AdditionalArduinoFiles\1.5.8. or in src\ArduinoDUE\AdditionalArduinoFiles\1.6.5 according your IDE version -NOTE: You do not need to compile arduino from source these files are in the arduino directory structure. On Mac you will need to right click on the Arduino.app to Show Package Contents. +2. Turn the machine on and wait a few seconds then turn it off again. The machine will have been flashed removing the current stock firmware and allowing it to be detected as a normal arduino DUE. NOTE: Windows users may need to install drivers to detect the board. Consult the Voltivo forums. +Note : points 1 and 2 are only needed to wipe the stock fw or a corrupted fw, for update they are not necessary. +3. Use an arduino IDE supporting arduino DUE, [1.6.9](http://arduino.cc/en/Main/OldSoftwareReleases) with Due 1.6.8 module from board manager. +4. Update variants.cpp arduino file with the one present in src\ArduinoDUE\AdditionalArduinoFile according your IDE version +NOTE: You do not need to compile arduino from source these files are in the arduino directory structure (click on preferences.txt in Files/Preferences dialog box). 5. Open the project file named repetier.ino located in src\ArduinoDUE\Repetier directory in the arduino IDE. 6. Modify the DAVINCI define in Configuration.h file to match your targeted Da Vinci. See below. 7. Under the tools menu select the board type as Arduino DUE (Native USB Port) and the proper port you have connected to the printer. NOTE: You can usually find this out by looking at the tools -> port menu both before and after plugging in the printer to your computer's USB. @@ -58,14 +55,14 @@ If done correctly you will see the arduino sketch compile successfully and outpu For information on upgrading from or reverting to stock FW and other procedures please check [Da Vinci Voltivo forum](http://voltivo.com/forum/davinci).

:warning:There is no known way to revert to stock FW on 1.0A/2.0A/AiO until today.

-Do not forget to modify the Configuration.h to match your targeted Da Vinci: 1.0, 2.0 SF or 2.0. +Do not forget to modify the configuration.h to match your targeted Da Vinci: 1.0, 2.0 SF or 2.0. for basic installation just change : '#define DAVINCI 1 // "1" For DAVINCI 1.0, "2" For DAVINCI 2.0 with 1 FAN, "3" For DAVINCI 2.0 with 2 FANS, 4 For AiO (no scanner)' 0 for not Davinci board (like DUE/RADDS) 1 for DaVinci 1.0 (1Fan, 1 Extruder) 2 for DaVinci 2.0 SF (1Fan, 2 Extruders) 3 for DaVinci 2.0 (2Fans, 2 Extruders) - 4 for DaVinci AiO (no scanner) + 4 for DaVinci AiO Support for 1.0A and 2.0A: need to change #define MODEL 0 to #define MODEL 1 @@ -78,13 +75,18 @@ Or a great video done by Daniel Gonos: https://www.youtube.com/watch?v=rjuCvlnpB *** ##TODO or Questions ? -[Check issue list](https://github.com/luc-github/Repetier-Firmware-0.92/issues) -[FAQ](https://github.com/luc-github/Repetier-Firmware-0.92/issues?utf8=%E2%9C%93&q=is%3Aclosed+label%3AFAQ+) +* [Check issue list](https://github.com/luc-github/Repetier-Firmware-0.92/issues) +Do not ask help on repetier github they do not support this FW / printer - please use this [github for issues](https://github.com/luc-github/Repetier-Firmware-0.92/issues) + +* [FAQ](https://github.com/luc-github/Repetier-Firmware-0.92/issues?utf8=%E2%9C%93&q=is%3Aclosed+label%3AFAQ+) + +* [Documentation](https://github.com/luc-github/Repetier-Firmware-0.92/wiki) TBD - feel free to help *** ##Implemented -* Standard GCODE commands -* Single/Dual extruders support (DaVinci 1.0(a)/2.0(a) and AiO without scanner) +* 0.92.10 [Repetier](https://github.com/repetier/Repetier-Firmware) based +* Standard GCODE commands +* Single/Dual extruders support (DaVinci 1.0/2.0 all generations but AiO) * Single Fan / Dual fans support according printer configuration * Repurpose of second fan usage to be controlled by M106/M107 commands on Da Vinci 2.0 * Sound and Lights management, including powersaving function (light can be managed remotely by GCODE) @@ -104,7 +106,8 @@ Or a great video done by Daniel Gonos: https://www.youtube.com/watch?v=rjuCvlnpB * Several fixes from original FW * Watchdog * Basic Wifi support for module ESP8266 (https://github.com/luc-github/ESP8266/blob/master/README.md#result-of-esp12e-on-davinci) -* Customized thermistor tables for bed and extruder(s) as Davinci board do not follow design of others 3D printer boards so standard tables do not work properly [check here](http://voltivo.com/forum/davinci-firmware/438-repetier-91-e3d-v6-extruder#3631) +* Customized thermistor tables for bed and extruder(s) as Davinci boards do not follow design of others 3D printer boards so standard tables do not work properly [check here](http://voltivo.com/forum/davinci-firmware/438-repetier-91-e3d-v6-extruder#3631) +* Multilanguage at runtime (EN/FR/GE/NL/SW) more to come if get help : check [here](https://github.com/luc-github/Repetier-Firmware-0.92/issues/123) * More to come .... *** @@ -119,7 +122,4 @@ If not, you should have "Watchdog feature was not compiled into this version!" i ##Current menu (not up to date): Easy: Advanced : -*** -##Donation: -Every support is welcome: [PayPal – The safer, easier way to pay online.](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=VT5LV38N4U3VQ) -Especially if need to buy new printer to add FW support. + diff --git a/Translate.xlsx b/Translate.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..bf2d58f07c2d4ce10c24827922faabfceeddb1f4 GIT binary patch literal 488331 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�V4Yl(k(}FK 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 Us&FL-^VG!y>%TU|8(JiTC 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

QVfky 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 F{y)EM-=6>g literal 34461 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 diff --git a/src/ArduinoDUE/AdditionalArduinoFiles/1.5.8/hardware/arduino/sam/cores/arduino/USB/USBCore.cpp b/src/ArduinoDUE/AdditionalArduinoFiles/1.5.8/hardware/arduino/sam/cores/arduino/USB/USBCore.cpp deleted file mode 100644 index d51ec5e..0000000 --- a/src/ArduinoDUE/AdditionalArduinoFiles/1.5.8/hardware/arduino/sam/cores/arduino/USB/USBCore.cpp +++ /dev/null @@ -1,891 +0,0 @@ -// Copyright (c) 2010, Peter Barrett -/* -** Permission to use, copy, modify, and/or distribute this software for -** any purpose with or without fee is hereby granted, provided that the -** above copyright notice and this permission notice appear in all copies. -** -** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL -** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED -** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR -** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES -** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -** SOFTWARE. -*/ - -#include "Arduino.h" -#include "USBAPI.h" -#include "Reset.h" -#include - -//#define TRACE_CORE(x) x -#define TRACE_CORE(x) - -static const uint32_t EndPoints[] = -{ - EP_TYPE_CONTROL, - -#ifdef CDC_ENABLED - EP_TYPE_INTERRUPT_IN, // CDC_ENDPOINT_ACM - EP_TYPE_BULK_OUT, // CDC_ENDPOINT_OUT - EP_TYPE_BULK_IN, // CDC_ENDPOINT_IN -#endif - -#ifdef HID_ENABLED - EP_TYPE_INTERRUPT_IN_HID // HID_ENDPOINT_INT -#endif -}; - -/** Pulse generation counters to keep track of the number of milliseconds remaining for each pulse type */ -#define TX_RX_LED_PULSE_MS 100 -volatile uint8_t TxLEDPulse; /**< Milliseconds remaining for data Tx LED pulse */ -volatile uint8_t RxLEDPulse; /**< Milliseconds remaining for data Rx LED pulse */ -static char isRemoteWakeUpEnabled = 0; -static char isEndpointHalt = 0; -//================================================================== -//================================================================== - -extern const uint16_t STRING_LANGUAGE[]; -extern const uint8_t STRING_PRODUCT[]; -extern const uint8_t STRING_MANUFACTURER[]; -extern const DeviceDescriptor USB_DeviceDescriptor; -extern const DeviceDescriptor USB_DeviceDescriptorA; - -const uint16_t STRING_LANGUAGE[2] = { - (3<<8) | (2+2), - 0x0409 // English -}; - -#ifndef USB_PRODUCT -// Use a hardcoded product name if none is provided -#if USB_PID == USB_PID_DUE -#define USB_PRODUCT "Arduino Due" -#else -#define USB_PRODUCT "USB IO Board" -#endif -#endif - -const uint8_t STRING_PRODUCT[] = USB_PRODUCT; - -#if USB_VID == 0x2341 -# if defined(USB_MANUFACTURER) -# undef USB_MANUFACTURER -# endif -# define USB_MANUFACTURER "Arduino LLC" -#elif !defined(USB_MANUFACTURER) -// Fall through to unknown if no manufacturer name was provided in a macro -# define USB_MANUFACTURER "Unknown" -#endif - -const uint8_t STRING_MANUFACTURER[12] = USB_MANUFACTURER; - -#ifdef CDC_ENABLED -#define DEVICE_CLASS 0x02 -#else -#define DEVICE_CLASS 0x00 -#endif - -// DEVICE DESCRIPTOR -const DeviceDescriptor USB_DeviceDescriptor = - D_DEVICE(0x00,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1); - -const DeviceDescriptor USB_DeviceDescriptorA = - D_DEVICE(DEVICE_CLASS,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1); - -const DeviceDescriptor USB_DeviceQualifier = - D_QUALIFIER(0x00,0x00,0x00,64,1); - -//! 7.1.20 Test Mode Support -static const unsigned char test_packet_buffer[] = { - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // JKJKJKJK * 9 - 0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA, // JJKKJJKK * 8 - 0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE, // JJJJKKKK * 8 - 0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, // JJJJJJJKKKKKKK * 8 - 0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD, // JJJJJJJK * 8 - 0xFC,0x7E,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0x7E // {JKKKKKKK * 10}, JK -}; - -//================================================================== -//================================================================== - -volatile uint32_t _usbConfiguration = 0; -volatile uint32_t _usbInitialized = 0; -uint32_t _usbSetInterface = 0; -uint32_t _cdcComposite = 0; - -//================================================================== -//================================================================== - -#define USB_RECV_TIMEOUT -class LockEP -{ - irqflags_t flags; -public: - LockEP(uint32_t ep) : flags(cpu_irq_save()) - { - } - ~LockEP() - { - cpu_irq_restore(flags); - } -}; - -// Number of bytes, assumes a rx endpoint -uint32_t USBD_Available(uint32_t ep) -{ - LockEP lock(ep); - return UDD_FifoByteCount(ep & 0xF); -} - -// Non Blocking receive -// Return number of bytes read -uint32_t USBD_Recv(uint32_t ep, void* d, uint32_t len) -{ - if (!_usbConfiguration) - return -1; - - LockEP lock(ep); - uint32_t n = UDD_FifoByteCount(ep & 0xF); - len = min(n,len); - n = len; - uint8_t* dst = (uint8_t*)d; - while (n--) - *dst++ = UDD_Recv8(ep & 0xF); - if (len && !UDD_FifoByteCount(ep & 0xF)) // release empty buffer - UDD_ReleaseRX(ep & 0xF); - - return len; -} - -// Recv 1 byte if ready -uint32_t USBD_Recv(uint32_t ep) -{ - uint8_t c; - if (USBD_Recv(ep & 0xF, &c, 1) != 1) - return -1; - else - return c; -} - -// Space in send EP -//uint32_t USBD_SendSpace(uint32_t ep) -//{ - //LockEP lock(ep); -//// if (!UDD_ReadWriteAllowed(ep & 0xF)) - ////{ - ////printf("pb "); // UOTGHS->UOTGHS_DEVEPTISR[%d]=0x%X\n\r", ep, UOTGHS->UOTGHS_DEVEPTISR[ep]); - ////return 0; - ////} - - //if(ep==0) return 64 - UDD_FifoByteCount(ep & 0xF); // EP0_SIZE jcb - //else return 512 - UDD_FifoByteCount(ep & 0xF); // EPX_SIZE jcb -//} - -// Blocking Send of data to an endpoint -uint32_t USBD_Send(uint32_t ep, const void* d, uint32_t len) -{ - uint32_t n; - int r = len; - const uint8_t* data = (const uint8_t*)d; - - if (!_usbConfiguration) - { - TRACE_CORE(printf("pb conf\n\r");) - return -1; - } - - while (len) - { - if(ep==0) n = EP0_SIZE; - else n = EPX_SIZE; - if (n > len) - n = len; - len -= n; - int count=0; - while( UOTGHS_DEVEPTISR_TXINI != (UOTGHS->UOTGHS_DEVEPTISR[ep & 0xF] & UOTGHS_DEVEPTISR_TXINI )) - { - count++; - if (count>10000) return len; - } - UDD_Send(ep & 0xF, data, n); - data += n; - } - //TXLED1; // light the TX LED - //TxLEDPulse = TX_RX_LED_PULSE_MS; - return r; -} - -int _cmark; -int _cend; - -void USBD_InitControl(int end) -{ - _cmark = 0; - _cend = end; -} - -// Clipped by _cmark/_cend -int USBD_SendControl(uint8_t flags, const void* d, uint32_t len) -{ - const uint8_t* data = (const uint8_t*)d; - uint32_t length = len; - uint32_t sent = 0; - uint32_t pos = 0; - - TRACE_CORE(printf("=> USBD_SendControl TOTAL len=%lu\r\n", len);) - - if (_cmark < _cend) - { - while (len > 0) - { - sent = UDD_Send(EP0, data + pos, len); - TRACE_CORE(printf("=> USBD_SendControl sent=%lu\r\n", sent);) - pos += sent; - len -= sent; - } - } - - _cmark += length; - - return length; -} - -// Send a USB descriptor string. The string is stored as a -// plain ASCII string but is sent out as UTF-16 with the -// correct 2-byte prefix -static bool USB_SendStringDescriptor(const uint8_t *string, int wLength) { - uint16_t buff[64]; - int l = 1; - wLength-=2; - while (*string && wLength>0) { - buff[l++] = (uint8_t)(*string++); - wLength-=2; - } - buff[0] = (3<<8) | (l*2); - return USBD_SendControl(0, (uint8_t*)buff, l*2); -} - -// Does not timeout or cross fifo boundaries -// Will only work for transfers <= 64 bytes -// TODO -int USBD_RecvControl(void* d, uint32_t len) -{ - UDD_WaitOUT(); - UDD_Recv(EP0, (uint8_t*)d, len); - UDD_ClearOUT(); - - return len; -} - -// Handle CLASS_INTERFACE requests -bool USBD_ClassInterfaceRequest(Setup& setup) -{ - uint8_t i = setup.wIndex; - - TRACE_CORE(printf("=> USBD_ClassInterfaceRequest\r\n");) - -#ifdef CDC_ENABLED - if (CDC_ACM_INTERFACE == i) - { - return CDC_Setup(setup); - } -#endif - -#ifdef HID_ENABLED - if (HID_INTERFACE == i) - { - return HID_Setup(setup); - } -#endif - - return false; -} - -int USBD_SendInterfaces(void) -{ - int total = 0; - uint8_t interfaces = 0; - -#ifdef CDC_ENABLED - total = CDC_GetInterface(&interfaces); -#endif - -#ifdef HID_ENABLED - total += HID_GetInterface(&interfaces); -#endif - - total = total; // Get rid of compiler warning - TRACE_CORE(printf("=> USBD_SendInterfaces, total=%d interfaces=%d\r\n", total, interfaces);) - return interfaces; -} - -int USBD_SendOtherInterfaces(void) -{ - int total = 0; - uint8_t interfaces = 0; - -#ifdef CDC_ENABLED - total = CDC_GetOtherInterface(&interfaces); -#endif - -#ifdef HID_ENABLED - total += HID_GetInterface(&interfaces); -#endif - - total = total; // Get rid of compiler warning - TRACE_CORE(printf("=> USBD_SendInterfaces, total=%d interfaces=%d\r\n", total, interfaces);) - return interfaces; -} - -// Construct a dynamic configuration descriptor -// This really needs dynamic endpoint allocation etc -// TODO -static bool USBD_SendConfiguration(int maxlen) -{ - // Count and measure interfaces - USBD_InitControl(0); - //TRACE_CORE(printf("=> USBD_SendConfiguration _cmark1=%d\r\n", _cmark);) - int interfaces = USBD_SendInterfaces(); - //TRACE_CORE(printf("=> USBD_SendConfiguration _cmark2=%d\r\n", _cmark);) - //TRACE_CORE(printf("=> USBD_SendConfiguration sizeof=%d\r\n", sizeof(ConfigDescriptor));) - -_Pragma("pack(1)") - ConfigDescriptor config = D_CONFIG(_cmark + sizeof(ConfigDescriptor),interfaces); -_Pragma("pack()") - //TRACE_CORE(printf("=> USBD_SendConfiguration clen=%d\r\n", config.clen);) - - //TRACE_CORE(printf("=> USBD_SendConfiguration maxlen=%d\r\n", maxlen);) - - // Now send them - USBD_InitControl(maxlen); - USBD_SendControl(0,&config,sizeof(ConfigDescriptor)); - USBD_SendInterfaces(); - return true; -} - -static bool USBD_SendOtherConfiguration(int maxlen) -{ - // Count and measure interfaces - USBD_InitControl(0); - //TRACE_CORE(printf("=> USBD_SendConfiguration _cmark1=%d\r\n", _cmark);) - int interfaces = USBD_SendOtherInterfaces(); - //TRACE_CORE(printf("=> USBD_SendConfiguration _cmark2=%d\r\n", _cmark);) - //TRACE_CORE(printf("=> USBD_SendConfiguration sizeof=%d\r\n", sizeof(ConfigDescriptor));) - -_Pragma("pack(1)") - ConfigDescriptor config = D_OTHERCONFIG(_cmark + sizeof(ConfigDescriptor),interfaces); -_Pragma("pack()") - //TRACE_CORE(printf("=> USBD_SendConfiguration clen=%d\r\n", config.clen);) - - //TRACE_CORE(printf("=> USBD_SendConfiguration maxlen=%d\r\n", maxlen);) - - // Now send them - USBD_InitControl(maxlen); - USBD_SendControl(0,&config,sizeof(ConfigDescriptor)); - USBD_SendOtherInterfaces(); - return true; -} - -static bool USBD_SendDescriptor(Setup& setup) -{ - uint8_t t = setup.wValueH; - uint8_t desc_length = 0; - const uint8_t* desc_addr = 0; - - if (USB_CONFIGURATION_DESCRIPTOR_TYPE == t) - { - TRACE_CORE(printf("=> USBD_SendDescriptor : USB_CONFIGURATION_DESCRIPTOR_TYPE length=%d\r\n", setup.wLength);) - return USBD_SendConfiguration(setup.wLength); - } - - USBD_InitControl(setup.wLength); -#ifdef HID_ENABLED - if (HID_REPORT_DESCRIPTOR_TYPE == t) - { - TRACE_CORE(puts("=> USBD_SendDescriptor : HID_REPORT_DESCRIPTOR_TYPE\r\n");) - return HID_GetDescriptor(t); - } -#endif - - if (USB_DEVICE_DESCRIPTOR_TYPE == t) - { - TRACE_CORE(puts("=> USBD_SendDescriptor : USB_DEVICE_DESCRIPTOR_TYPE\r\n");) - if (setup.wLength == 8) - { - _cdcComposite = 1; - } - desc_addr = _cdcComposite ? (const uint8_t*)&USB_DeviceDescriptorA : (const uint8_t*)&USB_DeviceDescriptor; - if( *desc_addr > setup.wLength ) { - desc_length = setup.wLength; - } - } - else if (USB_STRING_DESCRIPTOR_TYPE == t) - { - TRACE_CORE(puts("=> USBD_SendDescriptor : USB_STRING_DESCRIPTOR_TYPE\r\n");) - if (setup.wValueL == 0) { - desc_addr = (const uint8_t*)&STRING_LANGUAGE; - } - else if (setup.wValueL == IPRODUCT) { - return USB_SendStringDescriptor(STRING_PRODUCT, setup.wLength); - } - else if (setup.wValueL == IMANUFACTURER) { - return USB_SendStringDescriptor(STRING_MANUFACTURER, setup.wLength); - } - else { - return false; - } - if( *desc_addr > setup.wLength ) { - desc_length = setup.wLength; - } - } - else if (USB_DEVICE_QUALIFIER == t) - { - // Device qualifier descriptor requested - desc_addr = (const uint8_t*)&USB_DeviceQualifier; - if( *desc_addr > setup.wLength ) { - desc_length = setup.wLength; - } - } - else if (USB_OTHER_SPEED_CONFIGURATION == t) - { - // Other configuration descriptor requested - return USBD_SendOtherConfiguration(setup.wLength); - } - else - { - //printf("Device ERROR"); - } - - if (desc_addr == 0) - { - return false; - } - - if (desc_length == 0) - { - desc_length = *desc_addr; - } - - TRACE_CORE(printf("=> USBD_SendDescriptor : desc_addr=%p desc_length=%d\r\n", desc_addr, desc_length);) - USBD_SendControl(0, desc_addr, desc_length); - - return true; -} - - -static void USB_SendZlp( void ) -{ - while( UOTGHS_DEVEPTISR_TXINI != (UOTGHS->UOTGHS_DEVEPTISR[0] & UOTGHS_DEVEPTISR_TXINI ) ) - { - if((UOTGHS->UOTGHS_DEVISR & UOTGHS_DEVISR_SUSP) == UOTGHS_DEVISR_SUSP) - { - return; - } - } - UOTGHS->UOTGHS_DEVEPTICR[0] = UOTGHS_DEVEPTICR_TXINIC; -} - - -static void Test_Mode_Support( uint8_t wIndex ) -{ - uint8_t i; - uint8_t *ptr_dest = (uint8_t *) &udd_get_endpoint_fifo_access8(2); - - switch( wIndex ) - { - case 4: - //Test mode Test_Packet: - //Upon command, a port must repetitively transmit the following test packet until - //the exit action is taken. This enables the testing of rise and fall times, eye - //patterns, jitter, and any other dynamic waveform specifications. - //The test packet is made up by concatenating the following strings. - //(Note: For J/K NRZI data, and for NRZ data, the bit on the left is the first one - //transmitted. "S" indicates that a bit stuff occurs, which inserts an "extra" NRZI data bit. - //"* N" is used to indicate N occurrences of a string of bits or symbols.) - //A port in Test_Packet mode must send this packet repetitively. The inter-packet timing - //must be no less than the minimum allowable inter-packet gap as defined in Section 7.1.18 and - //no greater than 125 us. - - // Send ZLP - USB_SendZlp(); - - UOTGHS->UOTGHS_DEVDMA[0].UOTGHS_DEVDMACONTROL = 0; // raz - UOTGHS->UOTGHS_DEVDMA[1].UOTGHS_DEVDMACONTROL = 0; // raz - - // Configure endpoint 2, 64 bytes, direction IN, type BULK, 1 bank - UOTGHS->UOTGHS_DEVEPTCFG[2] = UOTGHS_DEVEPTCFG_EPSIZE_64_BYTE - | UOTGHS_DEVEPTCFG_EPDIR_IN - | UOTGHS_DEVEPTCFG_EPTYPE_BLK - | UOTGHS_DEVEPTCFG_EPBK_1_BANK; - // Check if the configuration is ok - UOTGHS->UOTGHS_DEVEPTCFG[2] |= UOTGHS_DEVEPTCFG_ALLOC; - while((UOTGHS->UOTGHS_DEVEPTISR[2]&UOTGHS_DEVEPTISR_CFGOK)==0) {} - UOTGHS->UOTGHS_DEVEPT |= UOTGHS_DEVEPT_EPEN2; - // Write FIFO - for( i=0; iUOTGHS_DEVCTRL |= UOTGHS_DEVCTRL_TSTPCKT; - // Send packet - UOTGHS->UOTGHS_DEVEPTICR[2] = UOTGHS_DEVEPTICR_TXINIC; - UOTGHS->UOTGHS_DEVEPTIDR[2] = UOTGHS_DEVEPTIDR_FIFOCONC; - for(;;); -// break; - - case 1: - //Test mode Test_J: - //Upon command, a port's transceiver must enter the high-speed J state and remain in that - //state until the exit action is taken. This enables the testing of the high output drive - //level on the D+ line. - // Send a ZLP - USB_SendZlp(); - UOTGHS->UOTGHS_DEVCTRL |= UOTGHS_DEVCTRL_TSTJ; - for(;;); -// break; - - case 2: - //Test mode Test_K: - //Upon command, a port's transceiver must enter the high-speed K state and remain in - //that state until the exit action is taken. This enables the testing of the high output drive - //level on the D- line. - // Send a ZLP - USB_SendZlp(); - UOTGHS->UOTGHS_DEVCTRL |= UOTGHS_DEVCTRL_TSTK; - for(;;); -// break; - - case 3: - //Test mode Test_SE0_NAK: - //Upon command, a port's transceiver must enter the high-speed receive mode - //and remain in that mode until the exit action is taken. This enables the testing - //of output impedance, low level output voltage, and loading characteristics. - //In addition, while in this mode, upstream facing ports (and only upstream facing ports) - //must respond to any IN token packet with a NAK handshake (only if the packet CRC is - //determined to be correct) within the normal allowed device response time. This enables testing of - //the device squelch level circuitry and, additionally, provides a general purpose stimulus/response - //test for basic functional testing. - - // Send a ZLP - USB_SendZlp(); - UOTGHS->UOTGHS_DEVIDR = UOTGHS_DEVIDR_SUSPEC - | UOTGHS_DEVIDR_MSOFEC - | UOTGHS_DEVIDR_SOFEC - | UOTGHS_DEVIDR_EORSTEC - | UOTGHS_DEVIDR_WAKEUPEC - | UOTGHS_DEVIDR_EORSMEC - | UOTGHS_DEVIDR_UPRSMEC - | UOTGHS_DEVIDR_PEP_0 - | UOTGHS_DEVIDR_PEP_1 - | UOTGHS_DEVIDR_PEP_2 - | UOTGHS_DEVIDR_PEP_3 - | UOTGHS_DEVIDR_PEP_4 - | UOTGHS_DEVIDR_PEP_5 - | UOTGHS_DEVIDR_PEP_6 - | UOTGHS_DEVIDR_DMA_1 - | UOTGHS_DEVIDR_DMA_2 - | UOTGHS_DEVIDR_DMA_3 - | UOTGHS_DEVIDR_DMA_4 - | UOTGHS_DEVIDR_DMA_5 - | UOTGHS_DEVIDR_DMA_6; - for(;;); -// break; - } -} - - -//unsigned int iii=0; -// Endpoint 0 interrupt -static void USB_ISR(void) -{ -// printf("ISR=0x%X\n\r", UOTGHS->UOTGHS_DEVISR); // jcb -// if( iii++ > 1500 ) while(1); // jcb - // End of bus reset - if (Is_udd_reset()) - { - TRACE_CORE(printf(">>> End of Reset\r\n");) - - // Reset USB address to 0 - udd_configure_address(0); - udd_enable_address(); - - // Configure EP 0 - UDD_InitEP(0, EP_TYPE_CONTROL); - udd_enable_setup_received_interrupt(0); - udd_enable_endpoint_interrupt(0); - - _usbConfiguration = 0; - udd_ack_reset(); - } - -#ifdef CDC_ENABLED - if (Is_udd_endpoint_interrupt(CDC_RX)) - { - udd_ack_out_received(CDC_RX); - - // Handle received bytes - if (USBD_Available(CDC_RX)) - SerialUSB.accept(); - } - - if (Is_udd_sof()) - { - udd_ack_sof(); - // USBD_Flush(CDC_TX); // jcb - } -#endif - - // EP 0 Interrupt - if (Is_udd_endpoint_interrupt(0) ) - { - if (!UDD_ReceivedSetupInt()) - { - return; - } - - Setup setup; - UDD_Recv(EP0, (uint8_t*)&setup, 8); - UDD_ClearSetupInt(); - - uint8_t requestType = setup.bmRequestType; - if (requestType & REQUEST_DEVICETOHOST) - { - TRACE_CORE(puts(">>> EP0 Int: IN Request\r\n");) - UDD_WaitIN(); - } - else - { - TRACE_CORE(puts(">>> EP0 Int: OUT Request\r\n");) - UDD_ClearIN(); - } - - bool ok = true; - if (REQUEST_STANDARD == (requestType & REQUEST_TYPE)) - { - // Standard Requests - uint8_t r = setup.bRequest; - if (GET_STATUS == r) - { - if( setup.bmRequestType == 0 ) // device - { - // Send the device status - TRACE_CORE(puts(">>> EP0 Int: GET_STATUS\r\n");) - // Check current configuration for power mode (if device is configured) - // TODO - // Check if remote wake-up is enabled - // TODO - UDD_Send8(EP0, 0); // TODO - UDD_Send8(EP0, 0); - } - // if( setup.bmRequestType == 2 ) // Endpoint: - else - { - // Send the endpoint status - // Check if the endpoint if currently halted - if( isEndpointHalt == 1 ) - UDD_Send8(EP0, 1); // TODO - else - UDD_Send8(EP0, 0); // TODO - UDD_Send8(EP0, 0); - } - } - else if (CLEAR_FEATURE == r) - { - // Check which is the selected feature - if( setup.wValueL == 1) // DEVICEREMOTEWAKEUP - { - // Enable remote wake-up and send a ZLP - if( isRemoteWakeUpEnabled == 1 ) - UDD_Send8(EP0, 1); - else - UDD_Send8(EP0, 0); - UDD_Send8(EP0, 0); - } - else // if( setup.wValueL == 0) // ENDPOINTHALT - { - isEndpointHalt = 0; // TODO - UDD_Send8(EP0, 0); - UDD_Send8(EP0, 0); - } - - } - else if (SET_FEATURE == r) - { - // Check which is the selected feature - if( setup.wValueL == 1) // DEVICEREMOTEWAKEUP - { - // Enable remote wake-up and send a ZLP - isRemoteWakeUpEnabled = 1; - UDD_Send8(EP0, 0); - } - if( setup.wValueL == 0) // ENDPOINTHALT - { - // Halt endpoint - isEndpointHalt = 1; - //USBD_Halt(USBGenericRequest_GetEndpointNumber(pRequest)); - UDD_Send8(EP0, 0); - } - if( setup.wValueL == 2) // TEST_MODE - { - // 7.1.20 Test Mode Support, 9.4.9 SetFeature - if( (setup.bmRequestType == 0 /*USBGenericRequest_DEVICE*/) && - ((setup.wIndex & 0x000F) == 0) ) - { - // the lower byte of wIndex must be zero - // the most significant byte of wIndex is used to specify the specific test mode - - UOTGHS->UOTGHS_DEVIDR &= ~UOTGHS_DEVIDR_SUSPEC; - UOTGHS->UOTGHS_DEVCTRL |= UOTGHS_DEVCTRL_SPDCONF_HIGH_SPEED; // remove suspend ? - - Test_Mode_Support( (setup.wIndex & 0xFF00)>>8 ); - } - } - } - else if (SET_ADDRESS == r) - { - TRACE_CORE(puts(">>> EP0 Int: SET_ADDRESS\r\n");) - UDD_WaitIN(); - UDD_SetAddress(setup.wValueL); - } - else if (GET_DESCRIPTOR == r) - { - TRACE_CORE(puts(">>> EP0 Int: GET_DESCRIPTOR\r\n");) - ok = USBD_SendDescriptor(setup); - } - else if (SET_DESCRIPTOR == r) - { - TRACE_CORE(puts(">>> EP0 Int: SET_DESCRIPTOR\r\n");) - ok = false; - } - else if (GET_CONFIGURATION == r) - { - TRACE_CORE(puts(">>> EP0 Int: GET_CONFIGURATION\r\n");) - UDD_Send8(EP0, _usbConfiguration); - } - else if (SET_CONFIGURATION == r) - { - if (REQUEST_DEVICE == (requestType & REQUEST_RECIPIENT)) - { - TRACE_CORE(printf(">>> EP0 Int: SET_CONFIGURATION REQUEST_DEVICE %d\r\n", setup.wValueL);) - - UDD_InitEndpoints(EndPoints, (sizeof(EndPoints) / sizeof(EndPoints[0]))); - _usbConfiguration = setup.wValueL; - -#ifdef CDC_ENABLED - // Enable interrupt for CDC reception from host (OUT packet) - udd_enable_out_received_interrupt(CDC_RX); - udd_enable_endpoint_interrupt(CDC_RX); -#endif - } - else - { - TRACE_CORE(puts(">>> EP0 Int: SET_CONFIGURATION failed!\r\n");) - ok = false; - } - } - else if (GET_INTERFACE == r) - { - TRACE_CORE(puts(">>> EP0 Int: GET_INTERFACE\r\n");) - UDD_Send8(EP0, _usbSetInterface); - } - else if (SET_INTERFACE == r) - { - _usbSetInterface = setup.wValueL; - TRACE_CORE(puts(">>> EP0 Int: SET_INTERFACE\r\n");) - } - } - else - { - TRACE_CORE(puts(">>> EP0 Int: ClassInterfaceRequest\r\n");) - - UDD_WaitIN(); // Workaround: need tempo here, else CDC serial won't open correctly - - USBD_InitControl(setup.wLength); // Max length of transfer - ok = USBD_ClassInterfaceRequest(setup); - } - - if (ok) - { - TRACE_CORE(puts(">>> EP0 Int: Send packet\r\n");) - UDD_ClearIN(); - } - else - { - TRACE_CORE(puts(">>> EP0 Int: Stall\r\n");) - UDD_Stall(); - } - } -} - -void USBD_Flush(uint32_t ep) -{ - if (UDD_FifoByteCount(ep)) - UDD_ReleaseTX(ep); -} - -// VBUS or counting frames -// Any frame counting? -uint32_t USBD_Connected(void) -{ - uint8_t f = UDD_GetFrameNumber(); - - delay(3); - - return f != UDD_GetFrameNumber(); -} - - -//======================================================================= -//======================================================================= - -USBDevice_ USBDevice; - -USBDevice_::USBDevice_() -{ - UDD_SetStack(&USB_ISR); - - if (UDD_Init() == 0UL) - { - _usbInitialized=1UL; - } -} - -bool USBDevice_::attach(void) -{ - if (_usbInitialized != 0UL) - { - UDD_Attach(); - _usbConfiguration = 0; - return true; - } - else - { - return false; - } -} - -bool USBDevice_::detach(void) -{ - if (_usbInitialized != 0UL) - { - UDD_Detach(); - return true; - } - else - { - return false; - } -} - -// Check for interrupts -// TODO: VBUS detection -bool USBDevice_::configured() -{ - return _usbConfiguration; -} - -void USBDevice_::poll() -{ -} diff --git a/src/ArduinoDUE/AdditionalArduinoFiles/1.5.8/hardware/arduino/sam/variants/arduino_due_x/variant.cpp b/src/ArduinoDUE/AdditionalArduinoFiles/1.5.8/hardware/arduino/sam/variants/arduino_due_x/variant.cpp deleted file mode 100644 index d1350bb..0000000 --- a/src/ArduinoDUE/AdditionalArduinoFiles/1.5.8/hardware/arduino/sam/variants/arduino_due_x/variant.cpp +++ /dev/null @@ -1,492 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#include "variant.h" - -/* - * DUE Board pin | PORT | Label - * ----------------+--------+------- - * 0 | PA8 | "RX0" - * 1 | PA9 | "TX0" - * 2 TIOA0 | PB25 | - * 3 TIOA7 | PC28 | - * 4 NPCS1 | PA29 | - * TIOB6 | PC26 | - * 5 TIOA6 | PC25 | - * 6 PWML7 | PC24 | - * 7 PWML6 | PC23 | - * 8 PWML5 | PC22 | - * 9 PWML4 | PC21 | - * 10 NPCS0 | PA28 | - * TIOB7 | PC29 | - * 11 TIOA8 | PD7 | - * 12 TIOB8 | PD8 | - * 13 TIOB0 | PB27 | LED AMBER "L" - * 14 TXD3 | PD4 | "TX3" - * 15 RXD3 | PD5 | "RX3" - * 16 TXD1 | PA13 | "TX2" - * 17 RXD1 | PA12 | "RX2" - * 18 TXD0 | PA11 | "TX1" - * 19 RXD0 | PA10 | "RX1" - * 20 | PB12 | "SDA" - * 21 | PB13 | "SCL" - * 22 | PB26 | - * 23 | PA14 | - * 24 | PA15 | - * 25 | PD0 | - * 26 | PD1 | - * 27 | PD2 | - * 28 | PD3 | - * 29 | PD6 | - * 30 | PD9 | - * 31 | PA7 | - * 32 | PD10 | - * 33 | PC1 | - * 34 | PC2 | - * 35 | PC3 | - * 36 | PC4 | - * 37 | PC5 | - * 38 | PC6 | - * 39 | PC7 | - * 40 | PC8 | - * 41 | PC9 | - * 42 | PA19 | - * 43 | PA20 | - * 44 | PC19 | - * 45 | PC18 | - * 46 | PC17 | - * 47 | PC16 | - * 48 | PC15 | - * 49 | PC14 | - * 50 | PC13 | - * 51 | PC12 | - * 52 NPCS2 | PB21 | - * 53 | PB14 | - * 54 | PA16 | "A0" - * 55 | PA24 | "A1" - * 56 | PA23 | "A2" - * 57 | PA22 | "A3" - * 58 TIOB2 | PA6 | "A4" - * 69 | PA4 | "A5" - * 60 TIOB1 | PA3 | "A6" - * 61 TIOA1 | PA2 | "A7" - * 62 | PB17 | "A8" - * 63 | PB18 | "A9" - * 64 | PB19 | "A10" - * 65 | PB20 | "A11" - * 66 | PB15 | "DAC0" - * 67 | PB16 | "DAC1" - * 68 | PA1 | "CANRX" - * 69 | PA0 | "CANTX" - * 70 | PA17 | "SDA1" - * 71 | PA18 | "SCL1" - * 72 | PC30 | LED AMBER "RX" - * 73 | PA21 | LED AMBER "TX" - * 74 MISO | PA25 | - * 75 MOSI | PA26 | - * 76 SCLK | PA27 | - * 77 NPCS0 | PA28 | - * 78 NPCS3 | PB23 | unconnected! - * - * USB pin | PORT - * ----------------+-------- - * ID | PB11 - * VBOF | PB10 - * - */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Pins descriptions - */ -extern const PinDescription g_APinDescription[]= -{ - // 0 .. 53 - Digital pins - // ---------------------- - // 0/1 - UART (Serial) - { PIOA, PIO_PA8A_URXD, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // URXD - { PIOA, PIO_PA9A_UTXD, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // UTXD - - // 2 - { PIOB, PIO_PB25B_TIOA0, ID_PIOB, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM, TC0_CHA0 }, // TIOA0 - { PIOC, PIO_PC28B_TIOA7, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM, TC2_CHA7 }, // TIOA7 - { PIOC, PIO_PC26B_TIOB6, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM, TC2_CHB6 }, // TIOB6 - - // 5 - { PIOC, PIO_PC25B_TIOA6, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM, TC2_CHA6 }, // TIOA6 - { PIOC, PIO_PC24B_PWML7, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM_CH7, NOT_ON_TIMER }, // PWML7 - { PIOC, PIO_PC23B_PWML6, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM_CH6, NOT_ON_TIMER }, // PWML6 - { PIOC, PIO_PC22B_PWML5, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM_CH5, NOT_ON_TIMER }, // PWML5 - { PIOC, PIO_PC21B_PWML4, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM_CH4, NOT_ON_TIMER }, // PWML4 - // 10 - { PIOC, PIO_PC29B_TIOB7, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM, TC2_CHB7 }, // TIOB7 - { PIOD, PIO_PD7B_TIOA8, ID_PIOD, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM, TC2_CHA8 }, // TIOA8 - { PIOD, PIO_PD8B_TIOB8, ID_PIOD, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM, TC2_CHB8 }, // TIOB8 - - // 13 - AMBER LED - { PIOB, PIO_PB27B_TIOB0, ID_PIOB, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM, TC0_CHB0 }, // TIOB0 - - // 14/15 - USART3 (Serial3) - { PIOD, PIO_PD4B_TXD3, ID_PIOD, PIO_PERIPH_B, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TXD3 - { PIOD, PIO_PD5B_RXD3, ID_PIOD, PIO_PERIPH_B, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // RXD3 - - // 16/17 - USART1 (Serial2) - { PIOA, PIO_PA13A_TXD1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TXD1 - { PIOA, PIO_PA12A_RXD1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // RXD1 - - // 18/19 - USART0 (Serial1) - { PIOA, PIO_PA11A_TXD0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TXD0 - { PIOA, PIO_PA10A_RXD0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // RXD0 - - // 20/21 - TWI1 - { PIOB, PIO_PB12A_TWD1, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TWD1 - SDA0 - { PIOB, PIO_PB13A_TWCK1, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TWCK1 - SCL0 - - // 22 - { PIOB, PIO_PB26, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 22 - { PIOA, PIO_PA14, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 23 - { PIOA, PIO_PA15, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 24 - { PIOD, PIO_PD0, ID_PIOD, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 25 - - // 26 - { PIOD, PIO_PD1, ID_PIOD, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 26 - { PIOD, PIO_PD2, ID_PIOD, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 27 - { PIOD, PIO_PD3, ID_PIOD, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 28 - { PIOD, PIO_PD6, ID_PIOD, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 29 - - // 30 - { PIOD, PIO_PD9, ID_PIOD, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 30 - { PIOA, PIO_PA7, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 31 - { PIOD, PIO_PD10, ID_PIOD, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 32 - { PIOC, PIO_PC1, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 33 - - // 34 - { PIOC, PIO_PC2, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 34 - { PIOC, PIO_PC3, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 35 - { PIOC, PIO_PC4, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 36 - { PIOC, PIO_PC5, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 37 - - // 38 - { PIOC, PIO_PC6, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 38 - { PIOC, PIO_PC7, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 39 - { PIOC, PIO_PC8, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 40 - { PIOC, PIO_PC9, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 41 - - // 42 - { PIOA, PIO_PA19, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 42 - { PIOA, PIO_PA20, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 43 - { PIOC, PIO_PC19, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 44 - { PIOC, PIO_PC18, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 45 - - // 46 - { PIOC, PIO_PC17, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 46 - { PIOC, PIO_PC16, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 47 - { PIOC, PIO_PC15, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 48 - { PIOC, PIO_PC14, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 49 - - // 50 - { PIOC, PIO_PC13, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 50 - { PIOC, PIO_PC12, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 51 - { PIOB, PIO_PB21, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 52 - { PIOB, PIO_PB14, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 53 - - - // 54 .. 65 - Analog pins - // ---------------------- - { PIOA, PIO_PA16X1_AD7, ID_PIOA, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC0, ADC7, NOT_ON_PWM, NOT_ON_TIMER }, // AD0 - { PIOA, PIO_PA24X1_AD6, ID_PIOA, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC1, ADC6, NOT_ON_PWM, NOT_ON_TIMER }, // AD1 - { PIOA, PIO_PA23X1_AD5, ID_PIOA, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC2, ADC5, NOT_ON_PWM, NOT_ON_TIMER }, // AD2 - { PIOA, PIO_PA22X1_AD4, ID_PIOA, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC3, ADC4, NOT_ON_PWM, NOT_ON_TIMER }, // AD3 - // 58 - { PIOA, PIO_PA6X1_AD3, ID_PIOA, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC4, ADC3, NOT_ON_PWM, TC0_CHB2 }, // AD4 - { PIOA, PIO_PA4X1_AD2, ID_PIOA, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC5, ADC2, NOT_ON_PWM, NOT_ON_TIMER }, // AD5 - { PIOA, PIO_PA3X1_AD1, ID_PIOA, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC6, ADC1, NOT_ON_PWM, TC0_CHB1 }, // AD6 - { PIOA, PIO_PA2X1_AD0, ID_PIOA, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC7, ADC0, NOT_ON_PWM, TC0_CHA1 }, // AD7 - // 62 - { PIOB, PIO_PB17X1_AD10, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC8, ADC10, NOT_ON_PWM, NOT_ON_TIMER }, // AD8 - { PIOB, PIO_PB18X1_AD11, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC9, ADC11, NOT_ON_PWM, NOT_ON_TIMER }, // AD9 - { PIOB, PIO_PB19X1_AD12, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC10, ADC12, NOT_ON_PWM, NOT_ON_TIMER }, // AD10 - { PIOB, PIO_PB20X1_AD13, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC11, ADC13, NOT_ON_PWM, NOT_ON_TIMER }, // AD11 - - // 66/67 - DAC0/DAC1 - { PIOB, PIO_PB15X1_DAC0, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC12, DA0, NOT_ON_PWM, NOT_ON_TIMER }, // DAC0 - { PIOB, PIO_PB16X1_DAC1, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC13, DA1, NOT_ON_PWM, NOT_ON_TIMER }, // DAC1 - - // 68/69 - CANRX0/CANTX0 - { PIOA, PIO_PA1A_CANRX0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, ADC14, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // CANRX - { PIOA, PIO_PA0A_CANTX0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, ADC15, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // CANTX - - // 70/71 - TWI0 - { PIOA, PIO_PA17A_TWD0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TWD0 - SDA1 - { PIOA, PIO_PA18A_TWCK0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TWCK0 - SCL1 - - // 72/73 - LEDs - { PIOC, PIO_PC30, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // LED AMBER RXL - { PIOA, PIO_PA21, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // LED AMBER TXL - - // 74/75/76 - SPI - { PIOA, PIO_PA25A_SPI0_MISO,ID_PIOA,PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // MISO - { PIOA, PIO_PA26A_SPI0_MOSI,ID_PIOA,PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // MOSI - { PIOA, PIO_PA27A_SPI0_SPCK,ID_PIOA,PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // SPCK - - // 77 - SPI CS0 - { PIOA, PIO_PA28A_SPI0_NPCS0,ID_PIOA,PIO_PERIPH_A,PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // NPCS0 - - // 78 - SPI CS3 (unconnected) - { PIOB, PIO_PB23B_SPI0_NPCS3,ID_PIOB,PIO_PERIPH_B,PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // NPCS3 - - // 79 .. 84 - "All pins" masks - - // 79 - TWI0 all pins - { PIOA, PIO_PA17A_TWD0|PIO_PA18A_TWCK0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - // 80 - TWI1 all pins - { PIOB, PIO_PB12A_TWD1|PIO_PB13A_TWCK1, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - // 81 - UART (Serial) all pins - { PIOA, PIO_PA8A_URXD|PIO_PA9A_UTXD, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - // 82 - USART0 (Serial1) all pins - { PIOA, PIO_PA11A_TXD0|PIO_PA10A_RXD0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - // 83 - USART1 (Serial2) all pins - { PIOA, PIO_PA13A_TXD1|PIO_PA12A_RXD1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - // 84 - USART3 (Serial3) all pins - { PIOD, PIO_PD4B_TXD3|PIO_PD5B_RXD3, ID_PIOD, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - - // 85 - USB - { PIOB, PIO_PB11A_UOTGID, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ID -// { PIOB, PIO_PB11A_UOTGID|PIO_PB10A_UOTGVBOF, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ID - VBOF - // 86 - SPI CS2 - { PIOB, PIO_PB21B_SPI0_NPCS2, ID_PIOB, PIO_PERIPH_B, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // NPCS2 - - // 87 - SPI CS1 - { PIOA, PIO_PA29A_SPI0_NPCS1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // NPCS1 - - // 88/89 - CANRX1/CANTX1 (same physical pin for 66/53) - { PIOB, PIO_PB15A_CANRX1, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // CANRX1 - { PIOB, PIO_PB14A_CANTX1, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // CANTX1 - - // 90 .. 91 - "All CAN pins" masks - // 90 - CAN0 all pins - { PIOA, PIO_PA1A_CANRX0|PIO_PA0A_CANTX0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - // 91 - CAN1 all pins - { PIOB, PIO_PB15A_CANRX1|PIO_PB14A_CANTX1, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - - // 92 .. 99 placeholders, future-proofing. - { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - // 100 - 108 extra SAM3X8E pins, not wired on Due - { PIOA, PIO_PA5, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 100 - { PIOC, PIO_PC27, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 101 - { PIOA, PIO_PA0, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 102 - { PIOA, PIO_PA1, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 103 - { PIOC, PIO_PC11, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 104 - { PIOC, PIO_PC8B_PWML3, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM_CH3, NOT_ON_TIMER }, // PWM 105 - { PIOC, PIO_PC2B_PWML0, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM_CH0, NOT_ON_TIMER }, // PWM 106 - { PIOC, PIO_PC6B_PWML2, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM_CH2, NOT_ON_TIMER }, //PWM 107 - { PIOC, PIO_PC20, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, //PWM 108 - // 109 .. 114 - { PIOA, PIO_PA20A_MCCDA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN_HSMCI_MCCDA_GPIO 109 - { PIOA, PIO_PA19A_MCCK, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN_HSMCI_MCCK_GPIO 110 - { PIOA, PIO_PA21A_MCDA0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN_HSMCI_MCDA0_GPIO 111 - { PIOA, PIO_PA22A_MCDA1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN_HSMCI_MCDA1_GPIO 112 - { PIOA, PIO_PA23A_MCDA2, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN_HSMCI_MCDA2_GPIO 113 - { PIOA, PIO_PA24A_MCDA3, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN_HSMCI_MCDA3_GPIO 114 - // 115 .. 124 - ETHERNET MAC - { PIOB, PIO_PB0A_ETXCK, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ETXCK 115 - { PIOB, PIO_PB1A_ETXEN, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ETXEN 116 - { PIOB, PIO_PB2A_ETX0, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ETX0 117 - { PIOB, PIO_PB3A_ETX1, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ETX1 118 - { PIOB, PIO_PB4A_ECRSDV, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ECRSDV 119 - { PIOB, PIO_PB5A_ERX0, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ERX0 120 - { PIOB, PIO_PB6A_ERX1, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ERX1 121 - { PIOB, PIO_PB7A_ERXER, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ERXER 122 - { PIOB, PIO_PB8A_EMDC, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // EMDC 123 - { PIOB, PIO_PB9A_EMDIO, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // EMDIO 124 - // 125 - { PIOB, PIO_PB24, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 125 - { PIOB, PIO_PB21X1_AD14, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC0, ADC14, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 126 - PB21 with enabled ADC - { PIOB, PIO_PB13X1_AD9, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC0, ADC9, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 127 - PB13 with enabled ACD AD9 - { PIOB, PIO_PB22, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 128 - PB22 E1 Enabled - { PIOB, PIO_PB10A_UOTGVBOF, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ID - VBOF 129 - - // END - { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER } -} ; - -#ifdef __cplusplus -} -#endif - -/* - * UART objects - */ -RingBuffer rx_buffer1; - -UARTClass Serial(UART, UART_IRQn, ID_UART, &rx_buffer1); -void serialEvent() __attribute__((weak)); -void serialEvent() { } - -// IT handlers -void UART_Handler(void) -{ - Serial.IrqHandler(); -} - -// ---------------------------------------------------------------------------- -/* - * USART objects - */ -RingBuffer rx_buffer2; -RingBuffer rx_buffer3; -RingBuffer rx_buffer4; - -USARTClass Serial1(USART0, USART0_IRQn, ID_USART0, &rx_buffer2); -void serialEvent1() __attribute__((weak)); -void serialEvent1() { } -USARTClass Serial2(USART1, USART1_IRQn, ID_USART1, &rx_buffer3); -void serialEvent2() __attribute__((weak)); -void serialEvent2() { } -USARTClass Serial3(USART3, USART3_IRQn, ID_USART3, &rx_buffer4); -void serialEvent3() __attribute__((weak)); -void serialEvent3() { } - -// IT handlers -void USART0_Handler(void) -{ - Serial1.IrqHandler(); -} - -void USART1_Handler(void) -{ - Serial2.IrqHandler(); -} - -void USART3_Handler(void) -{ - Serial3.IrqHandler(); -} - -// ---------------------------------------------------------------------------- - -void serialEventRun(void) -{ - if (Serial.available()) serialEvent(); - if (Serial1.available()) serialEvent1(); - if (Serial2.available()) serialEvent2(); - if (Serial3.available()) serialEvent3(); -} - -// ---------------------------------------------------------------------------- - -#ifdef __cplusplus -extern "C" { -#endif - -void __libc_init_array(void); - -void init( void ) -{ - SystemInit(); - - // Set Systick to 1ms interval, common to all SAM3 variants - if (SysTick_Config(SystemCoreClock / 1000)) - { - // Capture error - while (true); - } - - // Disable watchdog - //WDT_Disable(WDT); - // Initialize C library - __libc_init_array(); - - // Disable pull-up on every pin - for (int i = 0; i < PINS_COUNT; i++) - digitalWrite(i, LOW); - - // Enable parallel access on PIO output data registers - PIOA->PIO_OWER = 0xFFFFFFFF; - PIOB->PIO_OWER = 0xFFFFFFFF; - PIOC->PIO_OWER = 0xFFFFFFFF; - PIOD->PIO_OWER = 0xFFFFFFFF; - - // Initialize Serial port U(S)ART pins - PIO_Configure( - g_APinDescription[PINS_UART].pPort, - g_APinDescription[PINS_UART].ulPinType, - g_APinDescription[PINS_UART].ulPin, - g_APinDescription[PINS_UART].ulPinConfiguration); - digitalWrite(0, HIGH); // Enable pullup for RX0 - PIO_Configure( - g_APinDescription[PINS_USART0].pPort, - g_APinDescription[PINS_USART0].ulPinType, - g_APinDescription[PINS_USART0].ulPin, - g_APinDescription[PINS_USART0].ulPinConfiguration); - PIO_Configure( - g_APinDescription[PINS_USART1].pPort, - g_APinDescription[PINS_USART1].ulPinType, - g_APinDescription[PINS_USART1].ulPin, - g_APinDescription[PINS_USART1].ulPinConfiguration); - PIO_Configure( - g_APinDescription[PINS_USART3].pPort, - g_APinDescription[PINS_USART3].ulPinType, - g_APinDescription[PINS_USART3].ulPin, - g_APinDescription[PINS_USART3].ulPinConfiguration); - - // Initialize USB pins - PIO_Configure( - g_APinDescription[PINS_USB].pPort, - g_APinDescription[PINS_USB].ulPinType, - g_APinDescription[PINS_USB].ulPin, - g_APinDescription[PINS_USB].ulPinConfiguration); - - // Initialize CAN pins - PIO_Configure( - g_APinDescription[PINS_CAN0].pPort, - g_APinDescription[PINS_CAN0].ulPinType, - g_APinDescription[PINS_CAN0].ulPin, - g_APinDescription[PINS_CAN0].ulPinConfiguration); - PIO_Configure( - g_APinDescription[PINS_CAN1].pPort, - g_APinDescription[PINS_CAN1].ulPinType, - g_APinDescription[PINS_CAN1].ulPin, - g_APinDescription[PINS_CAN1].ulPinConfiguration); - - // Initialize Analog Controller - pmc_enable_periph_clk(ID_ADC); - adc_init(ADC, SystemCoreClock, ADC_FREQ_MAX, ADC_STARTUP_FAST); - adc_configure_timing(ADC, 0, ADC_SETTLING_TIME_3, 1); - adc_configure_trigger(ADC, ADC_TRIG_SW, 0); // Disable hardware trigger. - adc_disable_interrupt(ADC, 0xFFFFFFFF); // Disable all ADC interrupts. - adc_disable_all_channel(ADC); - - // Initialize analogOutput module - analogOutputInit(); -} - -#ifdef __cplusplus -} -#endif - diff --git a/src/ArduinoDUE/AdditionalArduinoFiles/Arduino - 1.6.5 -Due 1.6.4/Arduino15/packages/hardware/sam/1.6.4/cores/arduino/USB/USBCore.cpp b/src/ArduinoDUE/AdditionalArduinoFiles/Arduino - 1.6.5 -Due 1.6.4/Arduino15/packages/hardware/sam/1.6.4/cores/arduino/USB/USBCore.cpp deleted file mode 100644 index d51ec5e..0000000 --- a/src/ArduinoDUE/AdditionalArduinoFiles/Arduino - 1.6.5 -Due 1.6.4/Arduino15/packages/hardware/sam/1.6.4/cores/arduino/USB/USBCore.cpp +++ /dev/null @@ -1,891 +0,0 @@ -// Copyright (c) 2010, Peter Barrett -/* -** Permission to use, copy, modify, and/or distribute this software for -** any purpose with or without fee is hereby granted, provided that the -** above copyright notice and this permission notice appear in all copies. -** -** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL -** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED -** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR -** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES -** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -** SOFTWARE. -*/ - -#include "Arduino.h" -#include "USBAPI.h" -#include "Reset.h" -#include - -//#define TRACE_CORE(x) x -#define TRACE_CORE(x) - -static const uint32_t EndPoints[] = -{ - EP_TYPE_CONTROL, - -#ifdef CDC_ENABLED - EP_TYPE_INTERRUPT_IN, // CDC_ENDPOINT_ACM - EP_TYPE_BULK_OUT, // CDC_ENDPOINT_OUT - EP_TYPE_BULK_IN, // CDC_ENDPOINT_IN -#endif - -#ifdef HID_ENABLED - EP_TYPE_INTERRUPT_IN_HID // HID_ENDPOINT_INT -#endif -}; - -/** Pulse generation counters to keep track of the number of milliseconds remaining for each pulse type */ -#define TX_RX_LED_PULSE_MS 100 -volatile uint8_t TxLEDPulse; /**< Milliseconds remaining for data Tx LED pulse */ -volatile uint8_t RxLEDPulse; /**< Milliseconds remaining for data Rx LED pulse */ -static char isRemoteWakeUpEnabled = 0; -static char isEndpointHalt = 0; -//================================================================== -//================================================================== - -extern const uint16_t STRING_LANGUAGE[]; -extern const uint8_t STRING_PRODUCT[]; -extern const uint8_t STRING_MANUFACTURER[]; -extern const DeviceDescriptor USB_DeviceDescriptor; -extern const DeviceDescriptor USB_DeviceDescriptorA; - -const uint16_t STRING_LANGUAGE[2] = { - (3<<8) | (2+2), - 0x0409 // English -}; - -#ifndef USB_PRODUCT -// Use a hardcoded product name if none is provided -#if USB_PID == USB_PID_DUE -#define USB_PRODUCT "Arduino Due" -#else -#define USB_PRODUCT "USB IO Board" -#endif -#endif - -const uint8_t STRING_PRODUCT[] = USB_PRODUCT; - -#if USB_VID == 0x2341 -# if defined(USB_MANUFACTURER) -# undef USB_MANUFACTURER -# endif -# define USB_MANUFACTURER "Arduino LLC" -#elif !defined(USB_MANUFACTURER) -// Fall through to unknown if no manufacturer name was provided in a macro -# define USB_MANUFACTURER "Unknown" -#endif - -const uint8_t STRING_MANUFACTURER[12] = USB_MANUFACTURER; - -#ifdef CDC_ENABLED -#define DEVICE_CLASS 0x02 -#else -#define DEVICE_CLASS 0x00 -#endif - -// DEVICE DESCRIPTOR -const DeviceDescriptor USB_DeviceDescriptor = - D_DEVICE(0x00,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1); - -const DeviceDescriptor USB_DeviceDescriptorA = - D_DEVICE(DEVICE_CLASS,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1); - -const DeviceDescriptor USB_DeviceQualifier = - D_QUALIFIER(0x00,0x00,0x00,64,1); - -//! 7.1.20 Test Mode Support -static const unsigned char test_packet_buffer[] = { - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // JKJKJKJK * 9 - 0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA, // JJKKJJKK * 8 - 0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE, // JJJJKKKK * 8 - 0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, // JJJJJJJKKKKKKK * 8 - 0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD, // JJJJJJJK * 8 - 0xFC,0x7E,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0x7E // {JKKKKKKK * 10}, JK -}; - -//================================================================== -//================================================================== - -volatile uint32_t _usbConfiguration = 0; -volatile uint32_t _usbInitialized = 0; -uint32_t _usbSetInterface = 0; -uint32_t _cdcComposite = 0; - -//================================================================== -//================================================================== - -#define USB_RECV_TIMEOUT -class LockEP -{ - irqflags_t flags; -public: - LockEP(uint32_t ep) : flags(cpu_irq_save()) - { - } - ~LockEP() - { - cpu_irq_restore(flags); - } -}; - -// Number of bytes, assumes a rx endpoint -uint32_t USBD_Available(uint32_t ep) -{ - LockEP lock(ep); - return UDD_FifoByteCount(ep & 0xF); -} - -// Non Blocking receive -// Return number of bytes read -uint32_t USBD_Recv(uint32_t ep, void* d, uint32_t len) -{ - if (!_usbConfiguration) - return -1; - - LockEP lock(ep); - uint32_t n = UDD_FifoByteCount(ep & 0xF); - len = min(n,len); - n = len; - uint8_t* dst = (uint8_t*)d; - while (n--) - *dst++ = UDD_Recv8(ep & 0xF); - if (len && !UDD_FifoByteCount(ep & 0xF)) // release empty buffer - UDD_ReleaseRX(ep & 0xF); - - return len; -} - -// Recv 1 byte if ready -uint32_t USBD_Recv(uint32_t ep) -{ - uint8_t c; - if (USBD_Recv(ep & 0xF, &c, 1) != 1) - return -1; - else - return c; -} - -// Space in send EP -//uint32_t USBD_SendSpace(uint32_t ep) -//{ - //LockEP lock(ep); -//// if (!UDD_ReadWriteAllowed(ep & 0xF)) - ////{ - ////printf("pb "); // UOTGHS->UOTGHS_DEVEPTISR[%d]=0x%X\n\r", ep, UOTGHS->UOTGHS_DEVEPTISR[ep]); - ////return 0; - ////} - - //if(ep==0) return 64 - UDD_FifoByteCount(ep & 0xF); // EP0_SIZE jcb - //else return 512 - UDD_FifoByteCount(ep & 0xF); // EPX_SIZE jcb -//} - -// Blocking Send of data to an endpoint -uint32_t USBD_Send(uint32_t ep, const void* d, uint32_t len) -{ - uint32_t n; - int r = len; - const uint8_t* data = (const uint8_t*)d; - - if (!_usbConfiguration) - { - TRACE_CORE(printf("pb conf\n\r");) - return -1; - } - - while (len) - { - if(ep==0) n = EP0_SIZE; - else n = EPX_SIZE; - if (n > len) - n = len; - len -= n; - int count=0; - while( UOTGHS_DEVEPTISR_TXINI != (UOTGHS->UOTGHS_DEVEPTISR[ep & 0xF] & UOTGHS_DEVEPTISR_TXINI )) - { - count++; - if (count>10000) return len; - } - UDD_Send(ep & 0xF, data, n); - data += n; - } - //TXLED1; // light the TX LED - //TxLEDPulse = TX_RX_LED_PULSE_MS; - return r; -} - -int _cmark; -int _cend; - -void USBD_InitControl(int end) -{ - _cmark = 0; - _cend = end; -} - -// Clipped by _cmark/_cend -int USBD_SendControl(uint8_t flags, const void* d, uint32_t len) -{ - const uint8_t* data = (const uint8_t*)d; - uint32_t length = len; - uint32_t sent = 0; - uint32_t pos = 0; - - TRACE_CORE(printf("=> USBD_SendControl TOTAL len=%lu\r\n", len);) - - if (_cmark < _cend) - { - while (len > 0) - { - sent = UDD_Send(EP0, data + pos, len); - TRACE_CORE(printf("=> USBD_SendControl sent=%lu\r\n", sent);) - pos += sent; - len -= sent; - } - } - - _cmark += length; - - return length; -} - -// Send a USB descriptor string. The string is stored as a -// plain ASCII string but is sent out as UTF-16 with the -// correct 2-byte prefix -static bool USB_SendStringDescriptor(const uint8_t *string, int wLength) { - uint16_t buff[64]; - int l = 1; - wLength-=2; - while (*string && wLength>0) { - buff[l++] = (uint8_t)(*string++); - wLength-=2; - } - buff[0] = (3<<8) | (l*2); - return USBD_SendControl(0, (uint8_t*)buff, l*2); -} - -// Does not timeout or cross fifo boundaries -// Will only work for transfers <= 64 bytes -// TODO -int USBD_RecvControl(void* d, uint32_t len) -{ - UDD_WaitOUT(); - UDD_Recv(EP0, (uint8_t*)d, len); - UDD_ClearOUT(); - - return len; -} - -// Handle CLASS_INTERFACE requests -bool USBD_ClassInterfaceRequest(Setup& setup) -{ - uint8_t i = setup.wIndex; - - TRACE_CORE(printf("=> USBD_ClassInterfaceRequest\r\n");) - -#ifdef CDC_ENABLED - if (CDC_ACM_INTERFACE == i) - { - return CDC_Setup(setup); - } -#endif - -#ifdef HID_ENABLED - if (HID_INTERFACE == i) - { - return HID_Setup(setup); - } -#endif - - return false; -} - -int USBD_SendInterfaces(void) -{ - int total = 0; - uint8_t interfaces = 0; - -#ifdef CDC_ENABLED - total = CDC_GetInterface(&interfaces); -#endif - -#ifdef HID_ENABLED - total += HID_GetInterface(&interfaces); -#endif - - total = total; // Get rid of compiler warning - TRACE_CORE(printf("=> USBD_SendInterfaces, total=%d interfaces=%d\r\n", total, interfaces);) - return interfaces; -} - -int USBD_SendOtherInterfaces(void) -{ - int total = 0; - uint8_t interfaces = 0; - -#ifdef CDC_ENABLED - total = CDC_GetOtherInterface(&interfaces); -#endif - -#ifdef HID_ENABLED - total += HID_GetInterface(&interfaces); -#endif - - total = total; // Get rid of compiler warning - TRACE_CORE(printf("=> USBD_SendInterfaces, total=%d interfaces=%d\r\n", total, interfaces);) - return interfaces; -} - -// Construct a dynamic configuration descriptor -// This really needs dynamic endpoint allocation etc -// TODO -static bool USBD_SendConfiguration(int maxlen) -{ - // Count and measure interfaces - USBD_InitControl(0); - //TRACE_CORE(printf("=> USBD_SendConfiguration _cmark1=%d\r\n", _cmark);) - int interfaces = USBD_SendInterfaces(); - //TRACE_CORE(printf("=> USBD_SendConfiguration _cmark2=%d\r\n", _cmark);) - //TRACE_CORE(printf("=> USBD_SendConfiguration sizeof=%d\r\n", sizeof(ConfigDescriptor));) - -_Pragma("pack(1)") - ConfigDescriptor config = D_CONFIG(_cmark + sizeof(ConfigDescriptor),interfaces); -_Pragma("pack()") - //TRACE_CORE(printf("=> USBD_SendConfiguration clen=%d\r\n", config.clen);) - - //TRACE_CORE(printf("=> USBD_SendConfiguration maxlen=%d\r\n", maxlen);) - - // Now send them - USBD_InitControl(maxlen); - USBD_SendControl(0,&config,sizeof(ConfigDescriptor)); - USBD_SendInterfaces(); - return true; -} - -static bool USBD_SendOtherConfiguration(int maxlen) -{ - // Count and measure interfaces - USBD_InitControl(0); - //TRACE_CORE(printf("=> USBD_SendConfiguration _cmark1=%d\r\n", _cmark);) - int interfaces = USBD_SendOtherInterfaces(); - //TRACE_CORE(printf("=> USBD_SendConfiguration _cmark2=%d\r\n", _cmark);) - //TRACE_CORE(printf("=> USBD_SendConfiguration sizeof=%d\r\n", sizeof(ConfigDescriptor));) - -_Pragma("pack(1)") - ConfigDescriptor config = D_OTHERCONFIG(_cmark + sizeof(ConfigDescriptor),interfaces); -_Pragma("pack()") - //TRACE_CORE(printf("=> USBD_SendConfiguration clen=%d\r\n", config.clen);) - - //TRACE_CORE(printf("=> USBD_SendConfiguration maxlen=%d\r\n", maxlen);) - - // Now send them - USBD_InitControl(maxlen); - USBD_SendControl(0,&config,sizeof(ConfigDescriptor)); - USBD_SendOtherInterfaces(); - return true; -} - -static bool USBD_SendDescriptor(Setup& setup) -{ - uint8_t t = setup.wValueH; - uint8_t desc_length = 0; - const uint8_t* desc_addr = 0; - - if (USB_CONFIGURATION_DESCRIPTOR_TYPE == t) - { - TRACE_CORE(printf("=> USBD_SendDescriptor : USB_CONFIGURATION_DESCRIPTOR_TYPE length=%d\r\n", setup.wLength);) - return USBD_SendConfiguration(setup.wLength); - } - - USBD_InitControl(setup.wLength); -#ifdef HID_ENABLED - if (HID_REPORT_DESCRIPTOR_TYPE == t) - { - TRACE_CORE(puts("=> USBD_SendDescriptor : HID_REPORT_DESCRIPTOR_TYPE\r\n");) - return HID_GetDescriptor(t); - } -#endif - - if (USB_DEVICE_DESCRIPTOR_TYPE == t) - { - TRACE_CORE(puts("=> USBD_SendDescriptor : USB_DEVICE_DESCRIPTOR_TYPE\r\n");) - if (setup.wLength == 8) - { - _cdcComposite = 1; - } - desc_addr = _cdcComposite ? (const uint8_t*)&USB_DeviceDescriptorA : (const uint8_t*)&USB_DeviceDescriptor; - if( *desc_addr > setup.wLength ) { - desc_length = setup.wLength; - } - } - else if (USB_STRING_DESCRIPTOR_TYPE == t) - { - TRACE_CORE(puts("=> USBD_SendDescriptor : USB_STRING_DESCRIPTOR_TYPE\r\n");) - if (setup.wValueL == 0) { - desc_addr = (const uint8_t*)&STRING_LANGUAGE; - } - else if (setup.wValueL == IPRODUCT) { - return USB_SendStringDescriptor(STRING_PRODUCT, setup.wLength); - } - else if (setup.wValueL == IMANUFACTURER) { - return USB_SendStringDescriptor(STRING_MANUFACTURER, setup.wLength); - } - else { - return false; - } - if( *desc_addr > setup.wLength ) { - desc_length = setup.wLength; - } - } - else if (USB_DEVICE_QUALIFIER == t) - { - // Device qualifier descriptor requested - desc_addr = (const uint8_t*)&USB_DeviceQualifier; - if( *desc_addr > setup.wLength ) { - desc_length = setup.wLength; - } - } - else if (USB_OTHER_SPEED_CONFIGURATION == t) - { - // Other configuration descriptor requested - return USBD_SendOtherConfiguration(setup.wLength); - } - else - { - //printf("Device ERROR"); - } - - if (desc_addr == 0) - { - return false; - } - - if (desc_length == 0) - { - desc_length = *desc_addr; - } - - TRACE_CORE(printf("=> USBD_SendDescriptor : desc_addr=%p desc_length=%d\r\n", desc_addr, desc_length);) - USBD_SendControl(0, desc_addr, desc_length); - - return true; -} - - -static void USB_SendZlp( void ) -{ - while( UOTGHS_DEVEPTISR_TXINI != (UOTGHS->UOTGHS_DEVEPTISR[0] & UOTGHS_DEVEPTISR_TXINI ) ) - { - if((UOTGHS->UOTGHS_DEVISR & UOTGHS_DEVISR_SUSP) == UOTGHS_DEVISR_SUSP) - { - return; - } - } - UOTGHS->UOTGHS_DEVEPTICR[0] = UOTGHS_DEVEPTICR_TXINIC; -} - - -static void Test_Mode_Support( uint8_t wIndex ) -{ - uint8_t i; - uint8_t *ptr_dest = (uint8_t *) &udd_get_endpoint_fifo_access8(2); - - switch( wIndex ) - { - case 4: - //Test mode Test_Packet: - //Upon command, a port must repetitively transmit the following test packet until - //the exit action is taken. This enables the testing of rise and fall times, eye - //patterns, jitter, and any other dynamic waveform specifications. - //The test packet is made up by concatenating the following strings. - //(Note: For J/K NRZI data, and for NRZ data, the bit on the left is the first one - //transmitted. "S" indicates that a bit stuff occurs, which inserts an "extra" NRZI data bit. - //"* N" is used to indicate N occurrences of a string of bits or symbols.) - //A port in Test_Packet mode must send this packet repetitively. The inter-packet timing - //must be no less than the minimum allowable inter-packet gap as defined in Section 7.1.18 and - //no greater than 125 us. - - // Send ZLP - USB_SendZlp(); - - UOTGHS->UOTGHS_DEVDMA[0].UOTGHS_DEVDMACONTROL = 0; // raz - UOTGHS->UOTGHS_DEVDMA[1].UOTGHS_DEVDMACONTROL = 0; // raz - - // Configure endpoint 2, 64 bytes, direction IN, type BULK, 1 bank - UOTGHS->UOTGHS_DEVEPTCFG[2] = UOTGHS_DEVEPTCFG_EPSIZE_64_BYTE - | UOTGHS_DEVEPTCFG_EPDIR_IN - | UOTGHS_DEVEPTCFG_EPTYPE_BLK - | UOTGHS_DEVEPTCFG_EPBK_1_BANK; - // Check if the configuration is ok - UOTGHS->UOTGHS_DEVEPTCFG[2] |= UOTGHS_DEVEPTCFG_ALLOC; - while((UOTGHS->UOTGHS_DEVEPTISR[2]&UOTGHS_DEVEPTISR_CFGOK)==0) {} - UOTGHS->UOTGHS_DEVEPT |= UOTGHS_DEVEPT_EPEN2; - // Write FIFO - for( i=0; iUOTGHS_DEVCTRL |= UOTGHS_DEVCTRL_TSTPCKT; - // Send packet - UOTGHS->UOTGHS_DEVEPTICR[2] = UOTGHS_DEVEPTICR_TXINIC; - UOTGHS->UOTGHS_DEVEPTIDR[2] = UOTGHS_DEVEPTIDR_FIFOCONC; - for(;;); -// break; - - case 1: - //Test mode Test_J: - //Upon command, a port's transceiver must enter the high-speed J state and remain in that - //state until the exit action is taken. This enables the testing of the high output drive - //level on the D+ line. - // Send a ZLP - USB_SendZlp(); - UOTGHS->UOTGHS_DEVCTRL |= UOTGHS_DEVCTRL_TSTJ; - for(;;); -// break; - - case 2: - //Test mode Test_K: - //Upon command, a port's transceiver must enter the high-speed K state and remain in - //that state until the exit action is taken. This enables the testing of the high output drive - //level on the D- line. - // Send a ZLP - USB_SendZlp(); - UOTGHS->UOTGHS_DEVCTRL |= UOTGHS_DEVCTRL_TSTK; - for(;;); -// break; - - case 3: - //Test mode Test_SE0_NAK: - //Upon command, a port's transceiver must enter the high-speed receive mode - //and remain in that mode until the exit action is taken. This enables the testing - //of output impedance, low level output voltage, and loading characteristics. - //In addition, while in this mode, upstream facing ports (and only upstream facing ports) - //must respond to any IN token packet with a NAK handshake (only if the packet CRC is - //determined to be correct) within the normal allowed device response time. This enables testing of - //the device squelch level circuitry and, additionally, provides a general purpose stimulus/response - //test for basic functional testing. - - // Send a ZLP - USB_SendZlp(); - UOTGHS->UOTGHS_DEVIDR = UOTGHS_DEVIDR_SUSPEC - | UOTGHS_DEVIDR_MSOFEC - | UOTGHS_DEVIDR_SOFEC - | UOTGHS_DEVIDR_EORSTEC - | UOTGHS_DEVIDR_WAKEUPEC - | UOTGHS_DEVIDR_EORSMEC - | UOTGHS_DEVIDR_UPRSMEC - | UOTGHS_DEVIDR_PEP_0 - | UOTGHS_DEVIDR_PEP_1 - | UOTGHS_DEVIDR_PEP_2 - | UOTGHS_DEVIDR_PEP_3 - | UOTGHS_DEVIDR_PEP_4 - | UOTGHS_DEVIDR_PEP_5 - | UOTGHS_DEVIDR_PEP_6 - | UOTGHS_DEVIDR_DMA_1 - | UOTGHS_DEVIDR_DMA_2 - | UOTGHS_DEVIDR_DMA_3 - | UOTGHS_DEVIDR_DMA_4 - | UOTGHS_DEVIDR_DMA_5 - | UOTGHS_DEVIDR_DMA_6; - for(;;); -// break; - } -} - - -//unsigned int iii=0; -// Endpoint 0 interrupt -static void USB_ISR(void) -{ -// printf("ISR=0x%X\n\r", UOTGHS->UOTGHS_DEVISR); // jcb -// if( iii++ > 1500 ) while(1); // jcb - // End of bus reset - if (Is_udd_reset()) - { - TRACE_CORE(printf(">>> End of Reset\r\n");) - - // Reset USB address to 0 - udd_configure_address(0); - udd_enable_address(); - - // Configure EP 0 - UDD_InitEP(0, EP_TYPE_CONTROL); - udd_enable_setup_received_interrupt(0); - udd_enable_endpoint_interrupt(0); - - _usbConfiguration = 0; - udd_ack_reset(); - } - -#ifdef CDC_ENABLED - if (Is_udd_endpoint_interrupt(CDC_RX)) - { - udd_ack_out_received(CDC_RX); - - // Handle received bytes - if (USBD_Available(CDC_RX)) - SerialUSB.accept(); - } - - if (Is_udd_sof()) - { - udd_ack_sof(); - // USBD_Flush(CDC_TX); // jcb - } -#endif - - // EP 0 Interrupt - if (Is_udd_endpoint_interrupt(0) ) - { - if (!UDD_ReceivedSetupInt()) - { - return; - } - - Setup setup; - UDD_Recv(EP0, (uint8_t*)&setup, 8); - UDD_ClearSetupInt(); - - uint8_t requestType = setup.bmRequestType; - if (requestType & REQUEST_DEVICETOHOST) - { - TRACE_CORE(puts(">>> EP0 Int: IN Request\r\n");) - UDD_WaitIN(); - } - else - { - TRACE_CORE(puts(">>> EP0 Int: OUT Request\r\n");) - UDD_ClearIN(); - } - - bool ok = true; - if (REQUEST_STANDARD == (requestType & REQUEST_TYPE)) - { - // Standard Requests - uint8_t r = setup.bRequest; - if (GET_STATUS == r) - { - if( setup.bmRequestType == 0 ) // device - { - // Send the device status - TRACE_CORE(puts(">>> EP0 Int: GET_STATUS\r\n");) - // Check current configuration for power mode (if device is configured) - // TODO - // Check if remote wake-up is enabled - // TODO - UDD_Send8(EP0, 0); // TODO - UDD_Send8(EP0, 0); - } - // if( setup.bmRequestType == 2 ) // Endpoint: - else - { - // Send the endpoint status - // Check if the endpoint if currently halted - if( isEndpointHalt == 1 ) - UDD_Send8(EP0, 1); // TODO - else - UDD_Send8(EP0, 0); // TODO - UDD_Send8(EP0, 0); - } - } - else if (CLEAR_FEATURE == r) - { - // Check which is the selected feature - if( setup.wValueL == 1) // DEVICEREMOTEWAKEUP - { - // Enable remote wake-up and send a ZLP - if( isRemoteWakeUpEnabled == 1 ) - UDD_Send8(EP0, 1); - else - UDD_Send8(EP0, 0); - UDD_Send8(EP0, 0); - } - else // if( setup.wValueL == 0) // ENDPOINTHALT - { - isEndpointHalt = 0; // TODO - UDD_Send8(EP0, 0); - UDD_Send8(EP0, 0); - } - - } - else if (SET_FEATURE == r) - { - // Check which is the selected feature - if( setup.wValueL == 1) // DEVICEREMOTEWAKEUP - { - // Enable remote wake-up and send a ZLP - isRemoteWakeUpEnabled = 1; - UDD_Send8(EP0, 0); - } - if( setup.wValueL == 0) // ENDPOINTHALT - { - // Halt endpoint - isEndpointHalt = 1; - //USBD_Halt(USBGenericRequest_GetEndpointNumber(pRequest)); - UDD_Send8(EP0, 0); - } - if( setup.wValueL == 2) // TEST_MODE - { - // 7.1.20 Test Mode Support, 9.4.9 SetFeature - if( (setup.bmRequestType == 0 /*USBGenericRequest_DEVICE*/) && - ((setup.wIndex & 0x000F) == 0) ) - { - // the lower byte of wIndex must be zero - // the most significant byte of wIndex is used to specify the specific test mode - - UOTGHS->UOTGHS_DEVIDR &= ~UOTGHS_DEVIDR_SUSPEC; - UOTGHS->UOTGHS_DEVCTRL |= UOTGHS_DEVCTRL_SPDCONF_HIGH_SPEED; // remove suspend ? - - Test_Mode_Support( (setup.wIndex & 0xFF00)>>8 ); - } - } - } - else if (SET_ADDRESS == r) - { - TRACE_CORE(puts(">>> EP0 Int: SET_ADDRESS\r\n");) - UDD_WaitIN(); - UDD_SetAddress(setup.wValueL); - } - else if (GET_DESCRIPTOR == r) - { - TRACE_CORE(puts(">>> EP0 Int: GET_DESCRIPTOR\r\n");) - ok = USBD_SendDescriptor(setup); - } - else if (SET_DESCRIPTOR == r) - { - TRACE_CORE(puts(">>> EP0 Int: SET_DESCRIPTOR\r\n");) - ok = false; - } - else if (GET_CONFIGURATION == r) - { - TRACE_CORE(puts(">>> EP0 Int: GET_CONFIGURATION\r\n");) - UDD_Send8(EP0, _usbConfiguration); - } - else if (SET_CONFIGURATION == r) - { - if (REQUEST_DEVICE == (requestType & REQUEST_RECIPIENT)) - { - TRACE_CORE(printf(">>> EP0 Int: SET_CONFIGURATION REQUEST_DEVICE %d\r\n", setup.wValueL);) - - UDD_InitEndpoints(EndPoints, (sizeof(EndPoints) / sizeof(EndPoints[0]))); - _usbConfiguration = setup.wValueL; - -#ifdef CDC_ENABLED - // Enable interrupt for CDC reception from host (OUT packet) - udd_enable_out_received_interrupt(CDC_RX); - udd_enable_endpoint_interrupt(CDC_RX); -#endif - } - else - { - TRACE_CORE(puts(">>> EP0 Int: SET_CONFIGURATION failed!\r\n");) - ok = false; - } - } - else if (GET_INTERFACE == r) - { - TRACE_CORE(puts(">>> EP0 Int: GET_INTERFACE\r\n");) - UDD_Send8(EP0, _usbSetInterface); - } - else if (SET_INTERFACE == r) - { - _usbSetInterface = setup.wValueL; - TRACE_CORE(puts(">>> EP0 Int: SET_INTERFACE\r\n");) - } - } - else - { - TRACE_CORE(puts(">>> EP0 Int: ClassInterfaceRequest\r\n");) - - UDD_WaitIN(); // Workaround: need tempo here, else CDC serial won't open correctly - - USBD_InitControl(setup.wLength); // Max length of transfer - ok = USBD_ClassInterfaceRequest(setup); - } - - if (ok) - { - TRACE_CORE(puts(">>> EP0 Int: Send packet\r\n");) - UDD_ClearIN(); - } - else - { - TRACE_CORE(puts(">>> EP0 Int: Stall\r\n");) - UDD_Stall(); - } - } -} - -void USBD_Flush(uint32_t ep) -{ - if (UDD_FifoByteCount(ep)) - UDD_ReleaseTX(ep); -} - -// VBUS or counting frames -// Any frame counting? -uint32_t USBD_Connected(void) -{ - uint8_t f = UDD_GetFrameNumber(); - - delay(3); - - return f != UDD_GetFrameNumber(); -} - - -//======================================================================= -//======================================================================= - -USBDevice_ USBDevice; - -USBDevice_::USBDevice_() -{ - UDD_SetStack(&USB_ISR); - - if (UDD_Init() == 0UL) - { - _usbInitialized=1UL; - } -} - -bool USBDevice_::attach(void) -{ - if (_usbInitialized != 0UL) - { - UDD_Attach(); - _usbConfiguration = 0; - return true; - } - else - { - return false; - } -} - -bool USBDevice_::detach(void) -{ - if (_usbInitialized != 0UL) - { - UDD_Detach(); - return true; - } - else - { - return false; - } -} - -// Check for interrupts -// TODO: VBUS detection -bool USBDevice_::configured() -{ - return _usbConfiguration; -} - -void USBDevice_::poll() -{ -} diff --git a/src/ArduinoDUE/AdditionalArduinoFiles/Arduino - 1.6.5 -Due 1.6.4/Arduino15/packages/hardware/sam/1.6.4/variants/arduino_due_x/variant.cpp b/src/ArduinoDUE/AdditionalArduinoFiles/Arduino - 1.6.5 -Due 1.6.4/Arduino15/packages/hardware/sam/1.6.4/variants/arduino_due_x/variant.cpp deleted file mode 100644 index fa81e84..0000000 --- a/src/ArduinoDUE/AdditionalArduinoFiles/Arduino - 1.6.5 -Due 1.6.4/Arduino15/packages/hardware/sam/1.6.4/variants/arduino_due_x/variant.cpp +++ /dev/null @@ -1,496 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#include "variant.h" - -/* - * DUE Board pin | PORT | Label - * ----------------+--------+------- - * 0 | PA8 | "RX0" - * 1 | PA9 | "TX0" - * 2 TIOA0 | PB25 | - * 3 TIOA7 | PC28 | - * 4 NPCS1 | PA29 | - * TIOB6 | PC26 | - * 5 TIOA6 | PC25 | - * 6 PWML7 | PC24 | - * 7 PWML6 | PC23 | - * 8 PWML5 | PC22 | - * 9 PWML4 | PC21 | - * 10 NPCS0 | PA28 | - * TIOB7 | PC29 | - * 11 TIOA8 | PD7 | - * 12 TIOB8 | PD8 | - * 13 TIOB0 | PB27 | LED AMBER "L" - * 14 TXD3 | PD4 | "TX3" - * 15 RXD3 | PD5 | "RX3" - * 16 TXD1 | PA13 | "TX2" - * 17 RXD1 | PA12 | "RX2" - * 18 TXD0 | PA11 | "TX1" - * 19 RXD0 | PA10 | "RX1" - * 20 | PB12 | "SDA" - * 21 | PB13 | "SCL" - * 22 | PB26 | - * 23 | PA14 | - * 24 | PA15 | - * 25 | PD0 | - * 26 | PD1 | - * 27 | PD2 | - * 28 | PD3 | - * 29 | PD6 | - * 30 | PD9 | - * 31 | PA7 | - * 32 | PD10 | - * 33 | PC1 | - * 34 | PC2 | - * 35 | PC3 | - * 36 | PC4 | - * 37 | PC5 | - * 38 | PC6 | - * 39 | PC7 | - * 40 | PC8 | - * 41 | PC9 | - * 42 | PA19 | - * 43 | PA20 | - * 44 | PC19 | - * 45 | PC18 | - * 46 | PC17 | - * 47 | PC16 | - * 48 | PC15 | - * 49 | PC14 | - * 50 | PC13 | - * 51 | PC12 | - * 52 NPCS2 | PB21 | - * 53 | PB14 | - * 54 | PA16 | "A0" - * 55 | PA24 | "A1" - * 56 | PA23 | "A2" - * 57 | PA22 | "A3" - * 58 TIOB2 | PA6 | "A4" - * 69 | PA4 | "A5" - * 60 TIOB1 | PA3 | "A6" - * 61 TIOA1 | PA2 | "A7" - * 62 | PB17 | "A8" - * 63 | PB18 | "A9" - * 64 | PB19 | "A10" - * 65 | PB20 | "A11" - * 66 | PB15 | "DAC0" - * 67 | PB16 | "DAC1" - * 68 | PA1 | "CANRX" - * 69 | PA0 | "CANTX" - * 70 | PA17 | "SDA1" - * 71 | PA18 | "SCL1" - * 72 | PC30 | LED AMBER "RX" - * 73 | PA21 | LED AMBER "TX" - * 74 MISO | PA25 | - * 75 MOSI | PA26 | - * 76 SCLK | PA27 | - * 77 NPCS0 | PA28 | - * 78 NPCS3 | PB23 | unconnected! - * - * USB pin | PORT - * ----------------+-------- - * ID | PB11 - * VBOF | PB10 - * - */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Pins descriptions - */ -extern const PinDescription g_APinDescription[]= -{ - // 0 .. 53 - Digital pins - // ---------------------- - // 0/1 - UART (Serial) - { PIOA, PIO_PA8A_URXD, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // URXD - { PIOA, PIO_PA9A_UTXD, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // UTXD - - // 2 - { PIOB, PIO_PB25B_TIOA0, ID_PIOB, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM, TC0_CHA0 }, // TIOA0 - { PIOC, PIO_PC28B_TIOA7, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM, TC2_CHA7 }, // TIOA7 - { PIOC, PIO_PC26B_TIOB6, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM, TC2_CHB6 }, // TIOB6 - - // 5 - { PIOC, PIO_PC25B_TIOA6, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM, TC2_CHA6 }, // TIOA6 - { PIOC, PIO_PC24B_PWML7, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM_CH7, NOT_ON_TIMER }, // PWML7 - { PIOC, PIO_PC23B_PWML6, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM_CH6, NOT_ON_TIMER }, // PWML6 - { PIOC, PIO_PC22B_PWML5, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM_CH5, NOT_ON_TIMER }, // PWML5 - { PIOC, PIO_PC21B_PWML4, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM_CH4, NOT_ON_TIMER }, // PWML4 - // 10 - { PIOC, PIO_PC29B_TIOB7, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM, TC2_CHB7 }, // TIOB7 - { PIOD, PIO_PD7B_TIOA8, ID_PIOD, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM, TC2_CHA8 }, // TIOA8 - { PIOD, PIO_PD8B_TIOB8, ID_PIOD, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM, TC2_CHB8 }, // TIOB8 - - // 13 - AMBER LED - { PIOB, PIO_PB27B_TIOB0, ID_PIOB, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM, TC0_CHB0 }, // TIOB0 - - // 14/15 - USART3 (Serial3) - { PIOD, PIO_PD4B_TXD3, ID_PIOD, PIO_PERIPH_B, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TXD3 - { PIOD, PIO_PD5B_RXD3, ID_PIOD, PIO_PERIPH_B, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // RXD3 - - // 16/17 - USART1 (Serial2) - { PIOA, PIO_PA13A_TXD1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TXD1 - { PIOA, PIO_PA12A_RXD1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // RXD1 - - // 18/19 - USART0 (Serial1) - { PIOA, PIO_PA11A_TXD0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TXD0 - { PIOA, PIO_PA10A_RXD0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // RXD0 - - // 20/21 - TWI1 - { PIOB, PIO_PB12A_TWD1, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TWD1 - SDA0 - { PIOB, PIO_PB13A_TWCK1, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TWCK1 - SCL0 - - // 22 - { PIOB, PIO_PB26, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 22 - { PIOA, PIO_PA14, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 23 - { PIOA, PIO_PA15, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 24 - { PIOD, PIO_PD0, ID_PIOD, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 25 - - // 26 - { PIOD, PIO_PD1, ID_PIOD, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 26 - { PIOD, PIO_PD2, ID_PIOD, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 27 - { PIOD, PIO_PD3, ID_PIOD, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 28 - { PIOD, PIO_PD6, ID_PIOD, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 29 - - // 30 - { PIOD, PIO_PD9, ID_PIOD, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 30 - { PIOA, PIO_PA7, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 31 - { PIOD, PIO_PD10, ID_PIOD, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 32 - { PIOC, PIO_PC1, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 33 - - // 34 - { PIOC, PIO_PC2, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 34 - { PIOC, PIO_PC3, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 35 - { PIOC, PIO_PC4, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 36 - { PIOC, PIO_PC5, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 37 - - // 38 - { PIOC, PIO_PC6, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 38 - { PIOC, PIO_PC7, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 39 - { PIOC, PIO_PC8, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 40 - { PIOC, PIO_PC9, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 41 - - // 42 - { PIOA, PIO_PA19, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 42 - { PIOA, PIO_PA20, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 43 - { PIOC, PIO_PC19, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 44 - { PIOC, PIO_PC18, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 45 - - // 46 - { PIOC, PIO_PC17, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 46 - { PIOC, PIO_PC16, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 47 - { PIOC, PIO_PC15, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 48 - { PIOC, PIO_PC14, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 49 - - // 50 - { PIOC, PIO_PC13, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 50 - { PIOC, PIO_PC12, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 51 - { PIOB, PIO_PB21, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 52 - { PIOB, PIO_PB14, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 53 - - - // 54 .. 65 - Analog pins - // ---------------------- - { PIOA, PIO_PA16X1_AD7, ID_PIOA, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC0, ADC7, NOT_ON_PWM, NOT_ON_TIMER }, // AD0 - { PIOA, PIO_PA24X1_AD6, ID_PIOA, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC1, ADC6, NOT_ON_PWM, NOT_ON_TIMER }, // AD1 - { PIOA, PIO_PA23X1_AD5, ID_PIOA, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC2, ADC5, NOT_ON_PWM, NOT_ON_TIMER }, // AD2 - { PIOA, PIO_PA22X1_AD4, ID_PIOA, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC3, ADC4, NOT_ON_PWM, NOT_ON_TIMER }, // AD3 - // 58 - { PIOA, PIO_PA6X1_AD3, ID_PIOA, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC4, ADC3, NOT_ON_PWM, TC0_CHB2 }, // AD4 - { PIOA, PIO_PA4X1_AD2, ID_PIOA, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC5, ADC2, NOT_ON_PWM, NOT_ON_TIMER }, // AD5 - { PIOA, PIO_PA3X1_AD1, ID_PIOA, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC6, ADC1, NOT_ON_PWM, TC0_CHB1 }, // AD6 - { PIOA, PIO_PA2X1_AD0, ID_PIOA, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC7, ADC0, NOT_ON_PWM, TC0_CHA1 }, // AD7 - // 62 - { PIOB, PIO_PB17X1_AD10, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC8, ADC10, NOT_ON_PWM, NOT_ON_TIMER }, // AD8 - { PIOB, PIO_PB18X1_AD11, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC9, ADC11, NOT_ON_PWM, NOT_ON_TIMER }, // AD9 - { PIOB, PIO_PB19X1_AD12, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC10, ADC12, NOT_ON_PWM, NOT_ON_TIMER }, // AD10 - { PIOB, PIO_PB20X1_AD13, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC11, ADC13, NOT_ON_PWM, NOT_ON_TIMER }, // AD11 - - // 66/67 - DAC0/DAC1 - { PIOB, PIO_PB15X1_DAC0, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC12, DA0, NOT_ON_PWM, NOT_ON_TIMER }, // DAC0 - { PIOB, PIO_PB16X1_DAC1, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC13, DA1, NOT_ON_PWM, NOT_ON_TIMER }, // DAC1 - - // 68/69 - CANRX0/CANTX0 - { PIOA, PIO_PA1A_CANRX0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, ADC14, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // CANRX - { PIOA, PIO_PA0A_CANTX0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, ADC15, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // CANTX - - // 70/71 - TWI0 - { PIOA, PIO_PA17A_TWD0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TWD0 - SDA1 - { PIOA, PIO_PA18A_TWCK0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TWCK0 - SCL1 - - // 72/73 - LEDs - { PIOC, PIO_PC30, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // LED AMBER RXL - { PIOA, PIO_PA21, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // LED AMBER TXL - - // 74/75/76 - SPI - { PIOA, PIO_PA25A_SPI0_MISO,ID_PIOA,PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // MISO - { PIOA, PIO_PA26A_SPI0_MOSI,ID_PIOA,PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // MOSI - { PIOA, PIO_PA27A_SPI0_SPCK,ID_PIOA,PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // SPCK - - // 77 - SPI CS0 - { PIOA, PIO_PA28A_SPI0_NPCS0,ID_PIOA,PIO_PERIPH_A,PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // NPCS0 - - // 78 - SPI CS3 (unconnected) - { PIOB, PIO_PB23B_SPI0_NPCS3,ID_PIOB,PIO_PERIPH_B,PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // NPCS3 - - // 79 .. 84 - "All pins" masks - - // 79 - TWI0 all pins - { PIOA, PIO_PA17A_TWD0|PIO_PA18A_TWCK0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - // 80 - TWI1 all pins - { PIOB, PIO_PB12A_TWD1|PIO_PB13A_TWCK1, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - // 81 - UART (Serial) all pins - { PIOA, PIO_PA8A_URXD|PIO_PA9A_UTXD, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - // 82 - USART0 (Serial1) all pins - { PIOA, PIO_PA11A_TXD0|PIO_PA10A_RXD0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - // 83 - USART1 (Serial2) all pins - { PIOA, PIO_PA13A_TXD1|PIO_PA12A_RXD1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - // 84 - USART3 (Serial3) all pins - { PIOD, PIO_PD4B_TXD3|PIO_PD5B_RXD3, ID_PIOD, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - - // 85 - USB - { PIOB, PIO_PB11A_UOTGID, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ID -// { PIOB, PIO_PB11A_UOTGID|PIO_PB10A_UOTGVBOF, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ID - VBOF - // 86 - SPI CS2 - { PIOB, PIO_PB21B_SPI0_NPCS2, ID_PIOB, PIO_PERIPH_B, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // NPCS2 - - // 87 - SPI CS1 - { PIOA, PIO_PA29A_SPI0_NPCS1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // NPCS1 - - // 88/89 - CANRX1/CANTX1 (same physical pin for 66/53) - { PIOB, PIO_PB15A_CANRX1, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // CANRX1 - { PIOB, PIO_PB14A_CANTX1, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // CANTX1 - - // 90 .. 91 - "All CAN pins" masks - // 90 - CAN0 all pins - { PIOA, PIO_PA1A_CANRX0|PIO_PA0A_CANTX0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - // 91 - CAN1 all pins - { PIOB, PIO_PB15A_CANRX1|PIO_PB14A_CANTX1, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - - // 92 .. 99 placeholders, future-proofing. - { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - // 100 - 108 extra SAM3X8E pins, not wired on Due - { PIOA, PIO_PA5, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 100 - { PIOC, PIO_PC27, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 101 - { PIOA, PIO_PA0, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 102 - { PIOA, PIO_PA1, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 103 - { PIOC, PIO_PC11, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 104 - { PIOC, PIO_PC8B_PWML3, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM_CH3, NOT_ON_TIMER }, // PWM 105 - { PIOC, PIO_PC2B_PWML0, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM_CH0, NOT_ON_TIMER }, // PWM 106 - { PIOC, PIO_PC6B_PWML2, ID_PIOC, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM_CH2, NOT_ON_TIMER }, //PWM 107 - { PIOC, PIO_PC20, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, //PWM 108 - // 109 .. 114 - { PIOA, PIO_PA20A_MCCDA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN_HSMCI_MCCDA_GPIO 109 - { PIOA, PIO_PA19A_MCCK, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN_HSMCI_MCCK_GPIO 110 - { PIOA, PIO_PA21A_MCDA0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN_HSMCI_MCDA0_GPIO 111 - { PIOA, PIO_PA22A_MCDA1, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN_HSMCI_MCDA1_GPIO 112 - { PIOA, PIO_PA23A_MCDA2, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN_HSMCI_MCDA2_GPIO 113 - { PIOA, PIO_PA24A_MCDA3, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN_HSMCI_MCDA3_GPIO 114 - // 115 .. 124 - ETHERNET MAC - { PIOB, PIO_PB0A_ETXCK, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ETXCK 115 - { PIOB, PIO_PB1A_ETXEN, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ETXEN 116 - { PIOB, PIO_PB2A_ETX0, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ETX0 117 - { PIOB, PIO_PB3A_ETX1, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ETX1 118 - { PIOB, PIO_PB4A_ECRSDV, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ECRSDV 119 - { PIOB, PIO_PB5A_ERX0, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ERX0 120 - { PIOB, PIO_PB6A_ERX1, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ERX1 121 - { PIOB, PIO_PB7A_ERXER, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ERXER 122 - { PIOB, PIO_PB8A_EMDC, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // EMDC 123 - { PIOB, PIO_PB9A_EMDIO, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // EMDIO 124 - // 125 - { PIOB, PIO_PB24, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 125 - { PIOB, PIO_PB21X1_AD14, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC0, ADC14, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 126 - PB21 with enabled ADC - { PIOB, PIO_PB13X1_AD9, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC0, ADC9, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 127 - PB13 with enabled ACD AD9 - { PIOB, PIO_PB22, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 128 - PB22 E1 Enabled - { PIOB, PIO_PB10A_UOTGVBOF, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ID - VBOF 129 - - // END - { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER } -} ; - -#ifdef __cplusplus -} -#endif - -/* - * UART objects - */ -RingBuffer rx_buffer1; -RingBuffer tx_buffer1; - -UARTClass Serial(UART, UART_IRQn, ID_UART, &rx_buffer1, &tx_buffer1); -void serialEvent() __attribute__((weak)); -void serialEvent() { } - -// IT handlers -void UART_Handler(void) -{ - Serial.IrqHandler(); -} - -// ---------------------------------------------------------------------------- -/* - * USART objects - */ -RingBuffer rx_buffer2; -RingBuffer rx_buffer3; -RingBuffer rx_buffer4; -RingBuffer tx_buffer2; -RingBuffer tx_buffer3; -RingBuffer tx_buffer4; - -USARTClass Serial1(USART0, USART0_IRQn, ID_USART0, &rx_buffer2, &tx_buffer2); -void serialEvent1() __attribute__((weak)); -void serialEvent1() { } -USARTClass Serial2(USART1, USART1_IRQn, ID_USART1, &rx_buffer3, &tx_buffer3); -void serialEvent2() __attribute__((weak)); -void serialEvent2() { } -USARTClass Serial3(USART3, USART3_IRQn, ID_USART3, &rx_buffer4, &tx_buffer4); -void serialEvent3() __attribute__((weak)); -void serialEvent3() { } - -// IT handlers -void USART0_Handler(void) -{ - Serial1.IrqHandler(); -} - -void USART1_Handler(void) -{ - Serial2.IrqHandler(); -} - -void USART3_Handler(void) -{ - Serial3.IrqHandler(); -} - -// ---------------------------------------------------------------------------- - -void serialEventRun(void) -{ - if (Serial.available()) serialEvent(); - if (Serial1.available()) serialEvent1(); - if (Serial2.available()) serialEvent2(); - if (Serial3.available()) serialEvent3(); -} - -// ---------------------------------------------------------------------------- - -#ifdef __cplusplus -extern "C" { -#endif - -void __libc_init_array(void); - -void init( void ) -{ - SystemInit(); - - // Set Systick to 1ms interval, common to all SAM3 variants - if (SysTick_Config(SystemCoreClock / 1000)) - { - // Capture error - while (true); - } - - // Disable watchdog - //WDT_Disable(WDT); - // Initialize C library - __libc_init_array(); - - // Disable pull-up on every pin - for (unsigned i = 0; i < PINS_COUNT; i++) - digitalWrite(i, LOW); - - // Enable parallel access on PIO output data registers - PIOA->PIO_OWER = 0xFFFFFFFF; - PIOB->PIO_OWER = 0xFFFFFFFF; - PIOC->PIO_OWER = 0xFFFFFFFF; - PIOD->PIO_OWER = 0xFFFFFFFF; - - // Initialize Serial port U(S)ART pins - PIO_Configure( - g_APinDescription[PINS_UART].pPort, - g_APinDescription[PINS_UART].ulPinType, - g_APinDescription[PINS_UART].ulPin, - g_APinDescription[PINS_UART].ulPinConfiguration); - digitalWrite(0, HIGH); // Enable pullup for RX0 - PIO_Configure( - g_APinDescription[PINS_USART0].pPort, - g_APinDescription[PINS_USART0].ulPinType, - g_APinDescription[PINS_USART0].ulPin, - g_APinDescription[PINS_USART0].ulPinConfiguration); - PIO_Configure( - g_APinDescription[PINS_USART1].pPort, - g_APinDescription[PINS_USART1].ulPinType, - g_APinDescription[PINS_USART1].ulPin, - g_APinDescription[PINS_USART1].ulPinConfiguration); - PIO_Configure( - g_APinDescription[PINS_USART3].pPort, - g_APinDescription[PINS_USART3].ulPinType, - g_APinDescription[PINS_USART3].ulPin, - g_APinDescription[PINS_USART3].ulPinConfiguration); - - // Initialize USB pins - PIO_Configure( - g_APinDescription[PINS_USB].pPort, - g_APinDescription[PINS_USB].ulPinType, - g_APinDescription[PINS_USB].ulPin, - g_APinDescription[PINS_USB].ulPinConfiguration); - - // Initialize CAN pins - PIO_Configure( - g_APinDescription[PINS_CAN0].pPort, - g_APinDescription[PINS_CAN0].ulPinType, - g_APinDescription[PINS_CAN0].ulPin, - g_APinDescription[PINS_CAN0].ulPinConfiguration); - PIO_Configure( - g_APinDescription[PINS_CAN1].pPort, - g_APinDescription[PINS_CAN1].ulPinType, - g_APinDescription[PINS_CAN1].ulPin, - g_APinDescription[PINS_CAN1].ulPinConfiguration); - - // Initialize Analog Controller - pmc_enable_periph_clk(ID_ADC); - adc_init(ADC, SystemCoreClock, ADC_FREQ_MAX, ADC_STARTUP_FAST); - adc_configure_timing(ADC, 0, ADC_SETTLING_TIME_3, 1); - adc_configure_trigger(ADC, ADC_TRIG_SW, 0); // Disable hardware trigger. - adc_disable_interrupt(ADC, 0xFFFFFFFF); // Disable all ADC interrupts. - adc_disable_all_channel(ADC); - - // Initialize analogOutput module - analogOutputInit(); -} - -#ifdef __cplusplus -} -#endif - diff --git a/src/ArduinoDUE/AdditionalArduinoFiles/Arduino - 1.6.8 -Due 1.6.7/Arduino15/packages/hardware/sam/1.6.7/cores/arduino/USB/USBCore.cpp b/src/ArduinoDUE/AdditionalArduinoFiles/Arduino - 1.6.9 -Due 1.6.8/Arduino15/packages/arduino/hardware/sam/1.6.8/cores/arduino/USB/USBCore.cpp similarity index 98% rename from src/ArduinoDUE/AdditionalArduinoFiles/Arduino - 1.6.8 -Due 1.6.7/Arduino15/packages/hardware/sam/1.6.7/cores/arduino/USB/USBCore.cpp rename to src/ArduinoDUE/AdditionalArduinoFiles/Arduino - 1.6.9 -Due 1.6.8/Arduino15/packages/arduino/hardware/sam/1.6.8/cores/arduino/USB/USBCore.cpp index fa83806..615bd64 100644 --- a/src/ArduinoDUE/AdditionalArduinoFiles/Arduino - 1.6.8 -Due 1.6.7/Arduino15/packages/hardware/sam/1.6.7/cores/arduino/USB/USBCore.cpp +++ b/src/ArduinoDUE/AdditionalArduinoFiles/Arduino - 1.6.9 -Due 1.6.8/Arduino15/packages/arduino/hardware/sam/1.6.8/cores/arduino/USB/USBCore.cpp @@ -66,27 +66,16 @@ const uint16_t STRING_LANGUAGE[2] = { }; #ifndef USB_PRODUCT -// Use a hardcoded product name if none is provided -#if USB_PID == USB_PID_DUE #define USB_PRODUCT "Arduino Due" -#else -#define USB_PRODUCT "USB IO Board" -#endif #endif const uint8_t STRING_PRODUCT[] = USB_PRODUCT; -#if USB_VID == 0x2341 -# if defined(USB_MANUFACTURER) -# undef USB_MANUFACTURER -# endif -# define USB_MANUFACTURER "Arduino LLC" -#elif !defined(USB_MANUFACTURER) -// Fall through to unknown if no manufacturer name was provided in a macro -# define USB_MANUFACTURER "Unknown" +#ifndef USB_MANUFACTURER +#define USB_MANUFACTURER "Arduino LLC" #endif -const uint8_t STRING_MANUFACTURER[12] = USB_MANUFACTURER; +const uint8_t STRING_MANUFACTURER[] = USB_MANUFACTURER; #ifdef CDC_ENABLED #define DEVICE_CLASS 0x02 diff --git a/src/ArduinoDUE/AdditionalArduinoFiles/Arduino - 1.6.8 -Due 1.6.7/Arduino15/packages/hardware/sam/1.6.7/variants/arduino_due_x/variant.cpp b/src/ArduinoDUE/AdditionalArduinoFiles/Arduino - 1.6.9 -Due 1.6.8/Arduino15/packages/arduino/hardware/sam/1.6.8/variants/arduino_due_x/variant.cpp similarity index 98% rename from src/ArduinoDUE/AdditionalArduinoFiles/Arduino - 1.6.8 -Due 1.6.7/Arduino15/packages/hardware/sam/1.6.7/variants/arduino_due_x/variant.cpp rename to src/ArduinoDUE/AdditionalArduinoFiles/Arduino - 1.6.9 -Due 1.6.8/Arduino15/packages/arduino/hardware/sam/1.6.8/variants/arduino_due_x/variant.cpp index 4d0d4d3..792b7d4 100644 --- a/src/ArduinoDUE/AdditionalArduinoFiles/Arduino - 1.6.8 -Due 1.6.7/Arduino15/packages/hardware/sam/1.6.7/variants/arduino_due_x/variant.cpp +++ b/src/ArduinoDUE/AdditionalArduinoFiles/Arduino - 1.6.9 -Due 1.6.8/Arduino15/packages/arduino/hardware/sam/1.6.8/variants/arduino_due_x/variant.cpp @@ -268,10 +268,8 @@ extern const PinDescription g_APinDescription[]= // 84 - USART3 (Serial3) all pins { PIOD, PIO_PD4B_TXD3|PIO_PD5B_RXD3, ID_PIOD, PIO_PERIPH_B, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, - // 85 - USB -//For Davinci only - { PIOB, PIO_PB11A_UOTGID, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ID -// { PIOB, PIO_PB11A_UOTGID|PIO_PB10A_UOTGVBOF, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ID - VBOF + // 85 - USB + { PIOB, PIO_PB11A_UOTGID|PIO_PB10A_UOTGVBOF, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ID - VBOF // 86 - SPI CS2 { PIOB, PIO_PB21B_SPI0_NPCS2, ID_PIOB, PIO_PERIPH_B, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // NPCS2 @@ -330,7 +328,7 @@ extern const PinDescription g_APinDescription[]= { PIOB, PIO_PB21X1_AD14, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC0, ADC14, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 126 - PB21 with enabled ADC { PIOB, PIO_PB13X1_AD9, ID_PIOB, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC0, ADC9, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 127 - PB13 with enabled ACD AD9 { PIOB, PIO_PB22, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 128 - PB22 E1 Enabled - { PIOB, PIO_PB10A_UOTGVBOF, ID_PIOB, PIO_PERIPH_A, PIO_DEFAULT, PIN_ATTR_DIGITAL,NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ID - VBOF 129 + { PIOB, PIO_PB10B_A18, ID_PIOB, PIO_PERIPH_B, PIO_DEFAULT, PIN_ATTR_DIGITAL,NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // ID 129 // END { NULL, 0, 0, PIO_NOT_A_PIN, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER } diff --git a/src/ArduinoDUE/AdditionalArduinoFiles/Horus-0.2rc1/src/horus/engine/driver/board.py b/src/ArduinoDUE/AdditionalArduinoFiles/Horus-0.2rc1/src/horus/engine/driver/board.py new file mode 100644 index 0000000..7f50a26 --- /dev/null +++ b/src/ArduinoDUE/AdditionalArduinoFiles/Horus-0.2rc1/src/horus/engine/driver/board.py @@ -0,0 +1,288 @@ +# -*- coding: utf-8 -*- +# This file is part of the Horus Project + +__author__ = 'Jesús Arroyo Torrens ' +__copyright__ = 'Copyright (C) 2014-2016 Mundo Reader S.L.' +__license__ = 'GNU General Public License v2 http://www.gnu.org/licenses/gpl2.html' + +import time +import glob +import serial +import threading +import platform + +import logging +logger = logging.getLogger(__name__) + +system = platform.system() + + +class WrongFirmware(Exception): + + def __init__(self): + Exception.__init__(self, "Wrong Firmware") + + +class BoardNotConnected(Exception): + + def __init__(self): + Exception.__init__(self, "Board Not Connected") + + +class OldFirmware(Exception): + + def __init__(self): + Exception.__init__(self, "Old Firmware") + + +class Board(object): + + """Board class. For accessing to the scanner board + Mofified for Davinci AiO support + Gcode commands: + + G201 Fnnn : feed rate + G201 Xnnn : move motor in mm + G201 Ennn : move motor in deg + G50 : reset origin position + M17 : motor_disable + M18 : motor_enable + M70 Tn : switch off laser n, 0 index based + M71 Tn : switch on laser n, 0 index based + + M60 Tn : read ldr sensor + + """ + + def __init__(self, parent=None, serial_name='/dev/ttyUSB0', baud_rate=115200): + self.parent = parent + self.serial_name = serial_name + self.baud_rate = baud_rate + self.unplug_callback = None + + self._serial_port = None + self._is_connected = False + self._motor_enabled = False + self._motor_position = 0 + self._motor_speed = 0 + self._motor_acceleration = 0 + self._motor_direction = 1 + self._laser_number = 2 + self._laser_enabled = self._laser_number * [False] + self._tries = 0 # Check if command fails + + def connect(self): + """Open serial port and perform handshake""" + logger.info("Connecting board {0} {1}".format(self.serial_name, self.baud_rate)) + self._is_connected = False + try: + self._serial_port = serial.Serial(self.serial_name, self.baud_rate, timeout=2) + if self._serial_port.isOpen(): + #self._reset() # Force Reset and flush + # version = self._serial_port.readline() + # if "Horus 0.1 ['$' for help]" in version: + # raise OldFirmware() + # elif "Horus 0.2 ['$' for help]" in version: + self.motor_speed(1) + self._serial_port.timeout = 0.05 + self._is_connected = True + # Set current position as origin + self.motor_reset_origin() + logger.info(" Done") + #else: + # raise WrongFirmware() + else: + raise BoardNotConnected() + except Exception as exception: + logger.error("Error opening the port {0}\n".format(self.serial_name)) + self._serial_port = None + raise exception + + def disconnect(self): + """Close serial port""" + if self._is_connected: + logger.info("Disconnecting board {0}".format(self.serial_name)) + try: + if self._serial_port is not None: + self.lasers_off() + self.motor_disable() + self._is_connected = False + self._serial_port.close() + del self._serial_port + except serial.SerialException: + logger.error("Error closing the port {0}\n".format(self.serial_name)) + logger.info(" Done") + + def set_unplug_callback(self, value): + self.unplug_callback = value + + def motor_invert(self, value): + if value: + self._motor_direction = -1 + else: + self._motor_direction = +1 + + def motor_speed(self, value): + if self._is_connected: + if self._motor_speed != value: + self._motor_speed = value + #Davici Specific + self._send_command("G201 F{0}".format(value)) + + def motor_acceleration(self, value): + if self._is_connected: + if self._motor_acceleration != value: + self._motor_acceleration = value + #Davinci Specific + #self._send_command("$120={0}".format(value)) + + def motor_enable(self): + if self._is_connected: + if not self._motor_enabled: + self._motor_enabled = True + # Save current speed value + speed = self._motor_speed + self.motor_speed(1) + # Enable stepper motor + self._send_command("M17") + time.sleep(1) + # Restore speed value + self.motor_speed(speed) + + def motor_disable(self): + if self._is_connected: + if self._motor_enabled: + self._motor_enabled = False + self._send_command("M18") + + def motor_reset_origin(self): + if self._is_connected: + self._send_command("G50") + self._motor_position = 0 + + def motor_move(self, step=0, nonblocking=False, callback=None): + if self._is_connected: + self._motor_position += step * self._motor_direction + #Davici Specific + self.send_command("G201 E{0}".format(self._motor_position), nonblocking, callback) + + def laser_on(self, index): + if self._is_connected: + if not self._laser_enabled[index]: + self._laser_enabled[index] = True + #Davici Specific + if index == 0: + strindex="1" + else : + strindex="0" + self._send_command("M71 T" + strindex) + + def laser_off(self, index): + if self._is_connected: + if self._laser_enabled[index]: + self._laser_enabled[index] = False + #Davici Specific + if index == 0: + strindex="1" + else : + strindex="0" + self._send_command("M70 T" + strindex) + + def lasers_on(self): + for i in xrange(self._laser_number): + self.laser_on(i) + + def lasers_off(self): + for i in xrange(self._laser_number): + self.laser_off(i) + + def ldr_sensor(self, pin): + value = self._send_command("M60 T" + pin, read_lines=True).split("\n")[0] + try: + return int(value) + except ValueError: + return 0 + + def send_command(self, req, nonblocking=False, callback=None, read_lines=False): + if nonblocking: + threading.Thread(target=self._send_command, + args=(req, callback, read_lines)).start() + else: + self._send_command(req, callback, read_lines) + + def _send_command(self, req, callback=None, read_lines=False): + """Sends the request and returns the response""" + ret = '' + logger.debug(req) + if self._is_connected and req != '': + if self._serial_port is not None and self._serial_port.isOpen(): + try: + self._serial_port.flushInput() + self._serial_port.flushOutput() + self._serial_port.write(req + "\r\n") + while req != '~' and req != '!' and ret == '': + ret = self.read(read_lines) + time.sleep(0.01) + self._success() + except: + if hasattr(self, '_serial_port'): + if callback is not None: + callback(ret) + self._fail() + if callback is not None: + callback(ret) + return ret + + def read(self, read_lines=False): + if read_lines: + return ''.join(self._serial_port.readlines()) + else: + return ''.join(self._serial_port.readline()) + + def _success(self): + self._tries = 0 + + def _fail(self): + if self._is_connected: + logger.debug("Board fail") + self._tries += 1 + if self._tries >= 3: + self._tries = 0 + if self.unplug_callback is not None and \ + self.parent is not None and \ + not self.parent.unplugged: + self.parent.unplugged = True + self.unplug_callback() + + def _reset(self): + self._serial_port.flushInput() + self._serial_port.flushOutput() + self._serial_port.write("\x18\r\n") # Ctrl-x + self._serial_port.readline() + + def get_serial_list(self): + """Obtain list of serial devices""" + baselist = [] + if system == 'Windows': + import _winreg + try: + key = _winreg.OpenKey( + _winreg.HKEY_LOCAL_MACHINE, "HARDWARE\\DEVICEMAP\\SERIALCOMM") + i = 0 + while True: + try: + values = _winreg.EnumValue(key, i) + except: + return baselist + if 'USBSER' in values[0] or \ + 'VCP' in values[0] or \ + '\Device\Serial' in values[0]: + baselist.append(values[1]) + i += 1 + except: + return baselist + else: + for device in ['/dev/ttyACM*', '/dev/ttyUSB*', '/dev/tty.usb*', '/dev/tty.wchusb*', + '/dev/cu.*', '/dev/rfcomm*']: + baselist = baselist + glob.glob(device) + return baselist diff --git a/src/ArduinoDUE/Repetier/BedLeveling.cpp b/src/ArduinoDUE/Repetier/BedLeveling.cpp new file mode 100644 index 0000000..257362e --- /dev/null +++ b/src/ArduinoDUE/Repetier/BedLeveling.cpp @@ -0,0 +1,773 @@ + +/* +More and more printers now have automatic bed leveling using an ever increasing variety of methods. +This makes the leveling routine one of the most complex parts of the firmware and there is not one +way to level but hundreds of combinations. + +First you should decide on the correction method. Once we know how our bed is tilted we want to +remove that. This correction is defined by BED_CORRECTION_METHOD and allows the following values: +BED_CORRECTION_METHOD 0 +Use a rotation matrix. This will make z axis go up/down while moving in x/y direction to compensate +the tilt. For multiple extruders make sure the height match the tilt of the bed or one will scratch. + +BED_CORRECTION_METHOD 1 +Motorized correction. This method needs a bed that is fixed on 3 points from which 2 have a motor +to change the height. The positions are defined by +BED_MOTOR_1_X, BED_MOTOR_1_Y, BED_MOTOR_2_X, BED_MOTOR_2_Y, BED_MOTOR_3_X, BED_MOTOR_3_Y +Motor 2 and 3 are the one driven by motor driver 0 and 1. These can be extra motors like Felix Pro 1 +uses them or a system with 3 z axis where motors can be controlled individually like the Sparkcube +does. + +Next we have to distinguish several methods of z probing sensors. Each have their own advantages and +disadvantages. First the z probe has a position when activated and that position is defined by +#define Z_PROBE_X_OFFSET 0 +#define Z_PROBE_Y_OFFSET 0 +This is needed since we need to know where we measure the height when the z probe triggers. When +probing is activated you will see a move to make probe go over current extruder position. The +position can be changed in eeprom later on. + +Some probes need to be activated/deactivated so we can use them. This is defined in the scripts +#define Z_PROBE_START_SCRIPT "" +#define Z_PROBE_FINISHED_SCRIPT "" + +Now when we probe we want to know the distance of the extruder to the bed. This is defined by +#define Z_PROBE_HEIGHT 4 +The 4 means that when we trigger the distance of the nozzle tip is 4mm. If your switch tends +to return different points you might repeat a measured point and use the average height: +#define Z_PROBE_SWITCHING_DISTANCE 1 +#define Z_PROBE_REPETITIONS 5 +Switching distance is the z raise needed to turn back a signal reliably to off. Inductive sensors +need only a bit while mechanical switches may require a bit more. + +Next thing to consider is the force for switching. Some beds use a cantilever design and pushing on +the outside easily bends the bed. If your sensor needs some force to trigger you add the error of +bending. For this reason you might add a bending correction. Currently you define +#define BENDING_CORRECTION_A 0 +#define BENDING_CORRECTION_B 0 +#define BENDING_CORRECTION_C 0 +which are the deflections at the 3 z probe points. For all other possible measurements these values +get interpolated. You can modify the values later on in eeprom. For force less sensors set them to 0. + +Next thing is endstop handling. Without bed leveling you normally home to minimum position for x,y and z. +With bed leveling this is not that easy any more. Since we do bed leveling we already assume the bed is +not leveled for x/y moves. So without correction we would hit the bed for different x/y positions at +different heights. As a result we have no real minimum position. That makes a z min endstop quite useless. +There is an exception to this. If your nozzle triggers z min or if a inductive sensor would trigger at a given +position we could use that signal. With nozzle triggers you need to be careful as a drop of filament +would change the height. The other problem is that while homing the auto leveling is not used. So +the only position would be if the z min sensor is directly over the 0,0 coordinate which is the rotation point +if we have matrix based correction. For motor based correction this will work everywhere correctly. + +So the only useful position for a z endstop is z max position. Apart from not having the bed tilt problem it +also allows homing with a full bed so you can continue an aborted print with some gcode tweaking. With z max +homing we adjust the error by simply changing the max. z height. One thing you need to remember is setting +#define ENDSTOP_Z_BACK_ON_HOME 4 +so we release the z max endstop. This is very important if we move xy at z max. Auto leveling might want to +increase z and the endstop might prevent it causing wrong position and a head crash if we later go down. +The value should be larger then the maximum expected tilt. + +Now it is time to define how we measure the bed rotation. Here again we have several methods to choose. +All methods need at least 3 points to define the bed rotation correctly. The quality we get comes +from the selection of the right points and method. + +BED_LEVELING_METHOD 0 +This method measures at the 3 probe points and creates a plane through these points. If you have +a really planar bed this gives the optimum result. The 3 points must not be in one line and have +a long distance to increase numerical stability. + +BED_LEVELING_METHOD 1 +This measures a grid. Probe point 1 is the origin and points 2 and 3 span a grid. We measure +BED_LEVELING_GRID_SIZE points in each direction and compute a regression plane through all +points. This gives a good overall plane if you have small bumps measuring inaccuracies. + +BED_LEVELING_METHOD 2 +Bending correcting 4 point measurement. This is for cantilevered beds that have the rotation axis +not at the side but inside the bed. Here we can assume no bending on the axis and a symmetric +bending to both sides of the axis. So probe points 2 and 3 build the symmetric axis and +point 1 is mirrored to 1m across the axis. Using the symmetry we then remove the bending +from 1 and use that as plane. + +By now the leveling process is finished. All errors that remain are measuring errors and bumps on +the bed it self. For deltas you can enable distortion correction to follow the bumps. + +There are 2 ways to consider a changing bed coating, which are defined by Z_PROBE_Z_OFFSET_MODE. +Z_PROBE_Z_OFFSET_MODE = 0 means we measure the surface of the bed below any coating. This is e.g. +the case with inductive sensors where we put BuildTak on top. In that case we can set Z_PROBE_Z_OFFSET +to the thickness of BuildTak to compensate. If we later change the coating, we only change Z_PROBE_Z_OFFSET +to new coating thickness. + +Z_PROBE_Z_OFFSET_MODE = 1 means we measure the surface of the coating, e.g. because we have a mechanical switch. +In that case we add Z_PROBE_Z_OFFSET for the measured height to compensate for correct distance to bed surface. + +In homing to max we reduce z length by Z_PROBE_Z_OFFSET to get a correct height. +In homing to z min we assume z endstop is bed level so we move up Z_PROBE_Z_OFFSET after endstop is hit. This +requires the extruder to bend the coating thickness without harm! +*/ + +#include "Repetier.h" + +#ifndef BED_LEVELING_METHOD +#define BED_LEVELING_METHOD 0 +#endif + +#ifndef BED_CORRECTION_METHOD +#define BED_CORRECTION_METHOD 0 +#endif + +#ifndef BED_LEVELING_GRID_SIZE +#define BED_LEVELING_GRID_SIZE 5 +#endif + +#ifndef BED_LEVELING_REPETITIONS +#define BED_LEVELING_REPETITIONS 1 +#endif + + +class PlaneBuilder { + float sum_xx,sum_xy,sum_yy,sum_x,sum_y,sum_xz,sum_yz,sum_z,n; + public: + PlaneBuilder() { + reset(); + } + void reset() { + sum_xx = sum_xy = sum_yy = sum_x = sum_y = sum_xz = sum_yz = sum_z = n = 0; + } + void addPoint(float x,float y,float z) { + n++; + sum_xx += x * x; + sum_xy += x * y; + sum_yy += y * y; + sum_x += x; + sum_y += y; + sum_xz += x * z; + sum_yz += y * z; + sum_z += z; + } + void createPlane(Plane &plane,bool silent=false) { + float det = (sum_x * (sum_xy * sum_y - sum_x * sum_yy) + sum_xx * (n * sum_yy - sum_y * sum_y) + sum_xy * (sum_x * sum_y - n * sum_xy)); + plane.a = ((sum_xy * sum_y - sum_x * sum_yy) * sum_z + (sum_x * sum_y - n * sum_xy) * sum_yz + sum_xz * (n * sum_yy - sum_y * sum_y)) / det; + plane.b = ((sum_x * sum_xy - sum_xx * sum_y) * sum_z + (n * sum_xx - sum_x * sum_x) * sum_yz + sum_xz * (sum_x * sum_y - n * sum_xy)) / det; + plane.c = ((sum_xx * sum_yy - sum_xy * sum_xy) * sum_z + (sum_x * sum_xy - sum_xx * sum_y) * sum_yz + sum_xz * (sum_xy * sum_y - sum_x * sum_yy)) / det; + if(!silent) { + Com::printF(PSTR("plane: a = "),plane.a,4); + Com::printF(PSTR(" b = "),plane.b,4); + Com::printFLN(PSTR(" c = "),plane.c,4); + } + } +}; + +#if FEATURE_AUTOLEVEL && FEATURE_Z_PROBE + +bool measureAutolevelPlane(Plane &plane) { + PlaneBuilder builder; + builder.reset(); +#if BED_LEVELING_METHOD == 0 // 3 point + float h; + Printer::moveTo(EEPROM::zProbeX1(),EEPROM::zProbeY1(),IGNORE_COORDINATE,IGNORE_COORDINATE,EEPROM::zProbeXYSpeed()); + h = Printer::runZProbe(false,false); + if(h == ILLEGAL_Z_PROBE) + { + //Davinci Specific + Printer::Z_probe[0]=-2000; + Printer::zprobe_ok = false; + return false; + } + else + { + Printer::Z_probe[0]=h; + } + uid.refreshPage(); + builder.addPoint(EEPROM::zProbeX1(),EEPROM::zProbeY1(),h); + Printer::moveTo(EEPROM::zProbeX2(),EEPROM::zProbeY2(),IGNORE_COORDINATE,IGNORE_COORDINATE,EEPROM::zProbeXYSpeed()); + h = Printer::runZProbe(false,false); + if(h == ILLEGAL_Z_PROBE) + { + //Davinci Specific + Printer::Z_probe[1]=-2000; + Printer::zprobe_ok = false; + return false; + } + else + { + Printer::Z_probe[1]=h; + } + uid.refreshPage(); + builder.addPoint(EEPROM::zProbeX2(),EEPROM::zProbeY2(),h); + Printer::moveTo(EEPROM::zProbeX3(),EEPROM::zProbeY3(),IGNORE_COORDINATE,IGNORE_COORDINATE,EEPROM::zProbeXYSpeed()); + h = Printer::runZProbe(false,false); + if(h == ILLEGAL_Z_PROBE) + { + //Davinci Specific + Printer::Z_probe[2]=-2000; + Printer::zprobe_ok = false; + return false; + } + else + { + Printer::Z_probe[2]=h; + } + uid.refreshPage(); + builder.addPoint(EEPROM::zProbeX3(),EEPROM::zProbeY3(),h); +#elif BED_LEVELING_METHOD == 1 // linear regression + float delta = 1.0 / (BED_LEVELING_GRID_SIZE - 1); + float ox = EEPROM::zProbeX1(); + float oy = EEPROM::zProbeY1(); + float ax = delta * (EEPROM::zProbeX2() - EEPROM::zProbeX1()); + float ay = delta * (EEPROM::zProbeY2() - EEPROM::zProbeY1()); + float bx = delta * (EEPROM::zProbeX3() - EEPROM::zProbeX1()); + float by = delta * (EEPROM::zProbeY3() - EEPROM::zProbeY1()); + for(int ix = 0; ix < BED_LEVELING_GRID_SIZE; ix++) { + for(int iy = 0; iy < BED_LEVELING_GRID_SIZE; iy++) { + float px = ox + static_cast(ix) * ax + static_cast(iy) * bx; + float py = oy + static_cast(ix) * ay + static_cast(iy) * by; + Printer::moveTo(px,py,IGNORE_COORDINATE,IGNORE_COORDINATE,EEPROM::zProbeXYSpeed()); + float h = Printer::runZProbe(false,false); + if(h == ILLEGAL_Z_PROBE) + return false; + builder.addPoint(px,py,h); + } + } + +#elif BED_LEVELING_METHOD == 2 // 4 point symmetric + float h1,h2,h3,h4; + float apx = EEPROM::zProbeX1() - EEPROM::zProbeX2(); + float apy = EEPROM::zProbeY1() - EEPROM::zProbeY2(); + float abx = EEPROM::zProbeX3() - EEPROM::zProbeX2(); + float aby = EEPROM::zProbeY3() - EEPROM::zProbeY2(); + float ab2 = abx * abx + aby * aby; + float abap = apx * abx + apy * aby; + float t = abap / ab2; + float xx = EEPROM::zProbeX2() + t * abx; + float xy = EEPROM::zProbeY2() + t * aby; + float x1Mirror = EEPROM::zProbeX1() + 2.0 * (xx - EEPROM::zProbeX1()); + float y1Mirror = EEPROM::zProbeY1() + 2.0 * (xy - EEPROM::zProbeY1()); + Printer::moveTo(EEPROM::zProbeX1(),EEPROM::zProbeY1(),IGNORE_COORDINATE,IGNORE_COORDINATE,EEPROM::zProbeXYSpeed()); + h1 = Printer::runZProbe(false,false); + if(h1 == ILLEGAL_Z_PROBE) + return false; + Printer::moveTo(EEPROM::zProbeX2(),EEPROM::zProbeY2(),IGNORE_COORDINATE,IGNORE_COORDINATE,EEPROM::zProbeXYSpeed()); + h2 = Printer::runZProbe(false,false); + if(h2 == ILLEGAL_Z_PROBE) + return false; + Printer::moveTo(EEPROM::zProbeX3(),EEPROM::zProbeY3(),IGNORE_COORDINATE,IGNORE_COORDINATE,EEPROM::zProbeXYSpeed()); + h3 = Printer::runZProbe(false,false); + if(h3 == ILLEGAL_Z_PROBE) + return false; + Printer::moveTo(x1Mirror,y1Mirror,IGNORE_COORDINATE,IGNORE_COORDINATE,EEPROM::zProbeXYSpeed()); + h4 = Printer::runZProbe(false,false); + if(h4 == ILLEGAL_Z_PROBE) + return false; + t = h2 + (h3 - h2) * t; // theoretical height for crossing point for symmetric axis + h1 = t - (h4 - h1) * 0.5; // remove bending part + builder.addPoint(EEPROM::zProbeX1(), EEPROM::zProbeY1(), h1); + builder.addPoint(EEPROM::zProbeX2(), EEPROM::zProbeY2(), h2); + builder.addPoint(EEPROM::zProbeX3(), EEPROM::zProbeY3(), h3); +#else +#error Unknown bed leveling method +#endif + builder.createPlane(plane,false); + return true; +} + +void correctAutolevel(GCode *code,Plane &plane) { +#if BED_CORRECTION_METHOD == 0 // rotation matrix + //Printer::buildTransformationMatrix(plane.z(EEPROM::zProbeX1(),EEPROM::zProbeY1()),plane.z(EEPROM::zProbeX2(),EEPROM::zProbeY2()),plane.z(EEPROM::zProbeX3(),EEPROM::zProbeY3())); + Printer::buildTransformationMatrix(plane); +#elif BED_CORRECTION_METHOD == 1 // motorized correction +#if !defined(NUM_MOTOR_DRIVERS) || NUM_MOTOR_DRIVERS < 2 +#error You need to define 2 motors for motorized bed correction +#endif + Commands::waitUntilEndOfAllMoves(); // move steppers might be leveling steppers as well ! + float h1 = plane.z(BED_MOTOR_1_X,BED_MOTOR_1_Y); + float h2 = plane.z(BED_MOTOR_2_X,BED_MOTOR_2_Y); + float h3 = plane.z(BED_MOTOR_3_X,BED_MOTOR_3_Y); + // h1 is reference heights, h2 => motor 0, h3 => motor 1 + h2 -= h1; + h3 -= h1; +#if defined(LIMIT_MOTORIZED_CORRECTION) + if(h2 < -LIMIT_MOTORIZED_CORRECTION) h2 = -LIMIT_MOTORIZED_CORRECTION; + if(h2 > LIMIT_MOTORIZED_CORRECTION) h2 = LIMIT_MOTORIZED_CORRECTION; + if(h3 < -LIMIT_MOTORIZED_CORRECTION) h3 = -LIMIT_MOTORIZED_CORRECTION; + if(h3 > LIMIT_MOTORIZED_CORRECTION) h3 = LIMIT_MOTORIZED_CORRECTION; +#endif + MotorDriverInterface *motor2 = getMotorDriver(0); + MotorDriverInterface *motor3 = getMotorDriver(1); + motor2->setCurrentAs(0); + motor3->setCurrentAs(0); + motor2->gotoPosition(h2); + motor3->gotoPosition(h3); + motor2->disable(); + motor3->disable(); // now bed is even + Printer::currentPositionSteps[Z_AXIS] = h1 * Printer::axisStepsPerMM[Z_AXIS]; +#else +#error Unknown bed correction method set +#endif +} + +/* +Implementation of the G32 command +G32 S<0..2> - Autolevel print bed. S = 1 measure zLength, S = 2 Measure and store new zLength +S = 0 : Do not update length - use this if you have not homed before or you mess up zlength! +S = 1 : Measure zLength so homing works +S = 2 : Like s = 1 plus store results in EEPROM for next connection. +*/ +bool runBedLeveling(GCode *com) { + float h1,h2,h3,hc,oldFeedrate = Printer::feedrate; + int s = com->hasS() ? com->S : -1; +#if DISTORTION_CORRECTION + bool distEnabled = Printer::distortion.isEnabled(); + Printer::distortion.disable(false); // if level has changed, distortion is also invalid +#endif + Printer::setAutolevelActive(false); // iterate + Printer::resetTransformationMatrix(true); // in case we switch from matrix to motorized! +#if DRIVE_SYSTEM == DELTA + // It is not possible to go to the edges at the top, also users try + // it often and wonder why the coordinate system is then wrong. + // For that reason we ensure a correct behavior by code. + Printer::homeAxis(true, true, true); + Printer::moveTo(IGNORE_COORDINATE, IGNORE_COORDINATE, EEPROM::zProbeBedDistance() + EEPROM::zProbeHeight(), IGNORE_COORDINATE, Printer::homingFeedrate[Z_AXIS]); +#endif + Printer::startProbing(true); + //GCode::executeFString(Com::tZProbeStartScript); + Printer::coordinateOffset[X_AXIS] = Printer::coordinateOffset[Y_AXIS] = Printer::coordinateOffset[Z_AXIS] = 0; + Plane plane; +#if BED_CORRECTION_METHOD == 1 + for(int r = 0; r < BED_LEVELING_REPETITIONS; r++) { +#if DRIVE_SYSTEM == DELTA + if(r > 0) { + Printer::finishProbing(); + Printer::homeAxis(true, true, true); + Printer::moveTo(IGNORE_COORDINATE, IGNORE_COORDINATE, EEPROM::zProbeBedDistance() + EEPROM::zProbeHeight(), IGNORE_COORDINATE, Printer::homingFeedrate[Z_AXIS]); + Printer::startProbing(true); + } +#endif // DELTA +#endif // BED_CORRECTION_METHOD == 1 + if(!measureAutolevelPlane(plane)) { + Com::printErrorFLN(PSTR("Probing had returned errors - autoleveling canceled.")); + return false; + } + correctAutolevel(com,plane); + + // Leveling is finished now update own positions and store leveling data if needed + //float currentZ = plane.z((float)Printer::currentPositionSteps[X_AXIS] * Printer::invAxisStepsPerMM[X_AXIS],(float)Printer::currentPositionSteps[Y_AXIS] * Printer::invAxisStepsPerMM[Y_AXIS]); + float currentZ = plane.z(0.0,0.0); // we rotated around this point, so that is now z height + Com::printF(PSTR("CurrentZ:"),currentZ); + Com::printFLN(PSTR(" atZ:"),Printer::currentPosition[Z_AXIS]); + // With max z endstop we adjust zlength so after next homing we have also a calibrated printer + Printer::zMin = 0; +#if MAX_HARDWARE_ENDSTOP_Z + //float xRot,yRot,zRot; + //Printer::transformFromPrinter(Printer::currentPosition[X_AXIS],Printer::currentPosition[Y_AXIS],Printer::currentPosition[Z_AXIS],xRot,yRot,zRot); + //Com::printFLN(PSTR("Z after rotation:"),zRot); + // With max z endstop we adjust zlength so after next homing we have also a calibrated printer + if(s != 0) { + // at origin rotations have no influence so use values there to update + Printer::zLength += currentZ - Printer::currentPosition[Z_AXIS]; + //Printer::zLength += /*currentZ*/ plane.z((float)Printer::currentPositionSteps[X_AXIS] * Printer::invAxisStepsPerMM[X_AXIS],(float)Printer::currentPositionSteps[Y_AXIS] * Printer::invAxisStepsPerMM[Y_AXIS]) - zRot; + Com::printFLN(Com::tZProbePrinterHeight, Printer::zLength); + } +#endif + Printer::currentPositionSteps[Z_AXIS] = currentZ * Printer::axisStepsPerMM[Z_AXIS]; + Printer::updateCurrentPosition(true); // set position based on steps position +#if BED_CORRECTION_METHOD == 1 + if(fabs(plane.a) < 0.00025 && fabsf(plane.b) < 0.00025 ) + break; // we reached achievable precision so we can stop + } +#endif // BED_CORRECTION_METHOD == 1 + Printer::updateDerivedParameter(); + Printer::finishProbing(); +#if BED_CORRECTION_METHOD != 1 + Printer::setAutolevelActive(true); // only for software correction or we can spare the comp. time +#endif + if(s >= 2) { + EEPROM::storeDataIntoEEPROM(); + } + Printer::updateCurrentPosition(true); + Commands::printCurrentPosition(PSTR("G32 ")); +#if DISTORTION_CORRECTION + if(distEnabled) + Printer::distortion.enable(false); // if level has changed, distortion is also invalid +#endif +#if DRIVE_SYSTEM == DELTA + Printer::homeAxis(true, true, true); // shifting z makes positioning invalid, need to recalibrate +#endif + Printer::feedrate = oldFeedrate; + return true; +} + +#endif + +void Printer::setAutolevelActive(bool on) { +#if FEATURE_AUTOLEVEL + if(on == isAutolevelActive()) return; + flag0 = (on ? flag0 | PRINTER_FLAG0_AUTOLEVEL_ACTIVE : flag0 & ~PRINTER_FLAG0_AUTOLEVEL_ACTIVE); + if(on) + Com::printInfoFLN(Com::tAutolevelEnabled); + else + Com::printInfoFLN(Com::tAutolevelDisabled); + updateCurrentPosition(false); +#endif // FEATURE_AUTOLEVEL +} +#if MAX_HARDWARE_ENDSTOP_Z +float Printer::runZMaxProbe() { +#if NONLINEAR_SYSTEM + long startZ = realDeltaPositionSteps[Z_AXIS] = currentNonlinearPositionSteps[Z_AXIS]; // update real +#endif + Commands::waitUntilEndOfAllMoves(); + long probeDepth = 2*(Printer::zMaxSteps-Printer::zMinSteps); + stepsRemainingAtZHit = -1; + setZProbingActive(true); + PrintLine::moveRelativeDistanceInSteps(0,0,probeDepth,0,EEPROM::zProbeSpeed(),true,true); + if(stepsRemainingAtZHit < 0) { + Com::printErrorFLN(PSTR("z-max homing failed")); + return ILLEGAL_Z_PROBE; + } + setZProbingActive(false); + currentPositionSteps[Z_AXIS] -= stepsRemainingAtZHit; +#if NONLINEAR_SYSTEM + probeDepth -= (realDeltaPositionSteps[Z_AXIS] - startZ); +#else + probeDepth -= stepsRemainingAtZHit; +#endif + float distance = (float)probeDepth * invAxisStepsPerMM[Z_AXIS]; + Com::printF(Com::tZProbeMax,distance); + Com::printF(Com::tSpaceXColon,realXPosition()); + Com::printFLN(Com::tSpaceYColon,realYPosition()); + PrintLine::moveRelativeDistanceInSteps(0,0,-probeDepth,0,EEPROM::zProbeSpeed(),true,true); + return distance; +} +#endif + +#if FEATURE_Z_PROBE +void Printer::startProbing(bool runScript) { + float oldOffX = Printer::offsetX; + float oldOffY = Printer::offsetY; + float oldOffZ = Printer::offsetZ; + if(runScript) + GCode::executeFString(Com::tZProbeStartScript); + float maxStartHeight = EEPROM::zProbeBedDistance() + (EEPROM::zProbeHeight() > 0 ? EEPROM::zProbeHeight() : 0) + 0.1; + if(currentPosition[Z_AXIS] > maxStartHeight) { + moveTo(IGNORE_COORDINATE, IGNORE_COORDINATE, maxStartHeight, IGNORE_COORDINATE, homingFeedrate[Z_AXIS]); + } + // Fix position to be inside print area when probe is enabled + float ZPOffsetX = EEPROM::zProbeXOffset(); + float ZPOffsetY = EEPROM::zProbeYOffset(); + float xExtra = 0,yExtra = 0; + if(ZPOffsetX > 0 && Printer::currentPosition[X_AXIS] - ZPOffsetX < Printer::xMin) + xExtra = Printer::xMin + ZPOffsetX - Printer::currentPosition[X_AXIS]; + if(ZPOffsetY > 0 && Printer::currentPosition[Y_AXIS] - ZPOffsetY < Printer::yMin) + yExtra = Printer::yMin + ZPOffsetY - Printer::currentPosition[Y_AXIS]; + if(ZPOffsetX < 0 && Printer::currentPosition[X_AXIS] - ZPOffsetX > Printer::xMin + Printer::xLength) + xExtra = Printer::xMin + Printer::xLength + ZPOffsetX - Printer::currentPosition[X_AXIS]; + if(ZPOffsetY < 0 && Printer::currentPosition[Y_AXIS] - ZPOffsetY > Printer::yMin + Printer::yLength) + yExtra = Printer::yMin + Printer::yLength + ZPOffsetY - Printer::currentPosition[Y_AXIS]; + // Update position + Printer::offsetX = -ZPOffsetX; + Printer::offsetY = -ZPOffsetY; + Printer::offsetZ = 0; // we correct this with probe height + PrintLine::moveRelativeDistanceInSteps((Printer::offsetX - oldOffX + xExtra) * Printer::axisStepsPerMM[X_AXIS], + (Printer::offsetY - oldOffY + yExtra) * Printer::axisStepsPerMM[Y_AXIS], + 0, 0, EEPROM::zProbeXYSpeed(), true, ALWAYS_CHECK_ENDSTOPS); + updateCurrentPosition(false); +} + +void Printer::finishProbing() { + float xExtra = 0,yExtra = 0; + float oldOffX = Printer::offsetX; + float oldOffY = Printer::offsetY; + float oldOffZ = Printer::offsetZ; + GCode::executeFString(Com::tZProbeEndScript); + if(Extruder::current) { + Printer::offsetX = -Extruder::current->xOffset * Printer::invAxisStepsPerMM[X_AXIS]; + Printer::offsetY = -Extruder::current->yOffset * Printer::invAxisStepsPerMM[Y_AXIS]; + Printer::offsetZ = -Extruder::current->zOffset * Printer::invAxisStepsPerMM[Z_AXIS]; + } + float ZPOffsetX = oldOffX - Printer::offsetX; + float ZPOffsetY = oldOffY - Printer::offsetY; + if(ZPOffsetX > 0 && Printer::currentPosition[X_AXIS] - ZPOffsetX < Printer::xMin) + xExtra = Printer::xMin + ZPOffsetX - Printer::currentPosition[X_AXIS]; + if(ZPOffsetY > 0 && Printer::currentPosition[Y_AXIS] - ZPOffsetY < Printer::yMin) + yExtra = Printer::yMin + ZPOffsetY - Printer::currentPosition[Y_AXIS]; + if(ZPOffsetX < 0 && Printer::currentPosition[X_AXIS] - ZPOffsetX > Printer::xMin + Printer::xLength) + xExtra = Printer::xMin + Printer::xLength + ZPOffsetX - Printer::currentPosition[X_AXIS]; + if(ZPOffsetY < 0 && Printer::currentPosition[Y_AXIS] - ZPOffsetY > Printer::yMin + Printer::yLength) + yExtra = Printer::yMin + Printer::yLength + ZPOffsetY - Printer::currentPosition[Y_AXIS]; + PrintLine::moveRelativeDistanceInSteps((xExtra - ZPOffsetX) * Printer::axisStepsPerMM[X_AXIS], + (yExtra - ZPOffsetY) * Printer::axisStepsPerMM[Y_AXIS], + (Printer::offsetZ - oldOffZ) * Printer::axisStepsPerMM[Z_AXIS], 0, EEPROM::zProbeXYSpeed(), true, ALWAYS_CHECK_ENDSTOPS); + updateCurrentPosition(false); +} + +/* +This is the most important function for bed leveling. It does +1. Run probe start script if first = true and runStartScript = true +2. Position zProbe at current position if first = true. If we are more then maxStartHeight away from bed we also go down to that distance. +3. Measure the the steps until probe hits the bed. +4. Undo positioning to z probe and run finish script if last = true. + +Now we compute the nozzle height as follows: +a) Compute average height from repeated measurements +b) Add zProbeHeight to correct difference between triggering point and nozzle height above bed +c) If Z_PROBE_Z_OFFSET_MODE == 1 we add zProbeZOffset() that is coating thickness if we measure below coating with indictive sensor. +d) Add distortion correction. +e) Add bending correction + +Then we return the measured and corrected z distance. +*/ +float Printer::runZProbe(bool first,bool last,uint8_t repeat,bool runStartScript) { + float oldOffX = Printer::offsetX; + float oldOffY = Printer::offsetY; + float oldOffZ = Printer::offsetZ; + if(first) + startProbing(runStartScript); + Commands::waitUntilEndOfAllMoves(); + int32_t sum = 0, probeDepth; + int32_t shortMove = static_cast((float)Z_PROBE_SWITCHING_DISTANCE * axisStepsPerMM[Z_AXIS]); // distance to go up for repeated moves + int32_t lastCorrection = currentPositionSteps[Z_AXIS]; // starting position +#if NONLINEAR_SYSTEM + realDeltaPositionSteps[Z_AXIS] = currentNonlinearPositionSteps[Z_AXIS]; // update real +#endif + //int32_t updateZ = 0; + waitForZProbeStart(); + Endstops::update(); + Endstops::update(); + if(Endstops::zProbe()) { + Com::printErrorFLN(PSTR("z-probe triggered before starting probing.")); + return ILLEGAL_Z_PROBE; + } + for(int8_t r = 0; r < repeat; r++) { + probeDepth = 2 * (Printer::zMaxSteps - Printer::zMinSteps); // probe should always hit within this distance + stepsRemainingAtZHit = -1; // Marker that we did not hit z probe + //int32_t offx = axisStepsPerMM[X_AXIS] * EEPROM::zProbeXOffset(); + //int32_t offy = axisStepsPerMM[Y_AXIS] * EEPROM::zProbeYOffset(); + //PrintLine::moveRelativeDistanceInSteps(-offx,-offy,0,0,EEPROM::zProbeXYSpeed(),true,true); + setZProbingActive(true); + PrintLine::moveRelativeDistanceInSteps(0, 0, -probeDepth, 0, EEPROM::zProbeSpeed(), true, true); + if(stepsRemainingAtZHit < 0) { + Com::printErrorFLN(Com::tZProbeFailed); + return ILLEGAL_Z_PROBE; + } + setZProbingActive(false); +#if NONLINEAR_SYSTEM + stepsRemainingAtZHit = realDeltaPositionSteps[C_TOWER] - currentNonlinearPositionSteps[C_TOWER]; // nonlinear moves may split z so stepsRemainingAtZHit is only what is left from last segment not total move. This corrects the problem. +#endif +#if DRIVE_SYSTEM == DELTA + currentNonlinearPositionSteps[A_TOWER] += stepsRemainingAtZHit; // Update difference + currentNonlinearPositionSteps[B_TOWER] += stepsRemainingAtZHit; + currentNonlinearPositionSteps[C_TOWER] += stepsRemainingAtZHit; +#endif + currentPositionSteps[Z_AXIS] += stepsRemainingAtZHit; // now current position is correct + sum += lastCorrection - currentPositionSteps[Z_AXIS]; + if(r + 1 < repeat) { + // go only shortest possible move up for repetitions + PrintLine::moveRelativeDistanceInSteps(0, 0, shortMove, 0, EEPROM::zProbeSpeed(), true, true); + if(Endstops::zProbe()) { + Com::printErrorFLN(PSTR("z-probe did not untrigger on repetitive measurement - maybe you need to increase distance!")); + return ILLEGAL_Z_PROBE; + } + } + } + float distance = static_cast(sum) * invAxisStepsPerMM[Z_AXIS] / static_cast(repeat) + EEPROM::zProbeHeight(); + //Com::printFLN(PSTR("OrigDistance:"),distance); +#if Z_PROBE_Z_OFFSET_MODE == 1 + distance += EEPROM::zProbeZOffset(); // We measured including coating, so we need to add coating thickness! +#endif +#if DISTORTION_CORRECTION + float zCorr = 0; + if(Printer::distortion.isEnabled()) { + zCorr = distortion.correct(currentPositionSteps[X_AXIS] + EEPROM::zProbeXOffset() * axisStepsPerMM[X_AXIS],currentPositionSteps[Y_AXIS] + + EEPROM::zProbeYOffset() * axisStepsPerMM[Y_AXIS],0) * invAxisStepsPerMM[Z_AXIS]; + distance += zCorr; + } +#endif + distance += bendingCorrectionAt(currentPosition[X_AXIS], currentPosition[Y_AXIS]); + Com::printF(Com::tZProbe, distance); + Com::printF(Com::tSpaceXColon, realXPosition()); +#if DISTORTION_CORRECTION + if(Printer::distortion.isEnabled()) { + Com::printF(Com::tSpaceYColon, realYPosition()); + Com::printFLN(PSTR(" zCorr:"), zCorr); + } else { + Com::printFLN(Com::tSpaceYColon, realYPosition()); + } +#else + Com::printFLN(Com::tSpaceYColon, realYPosition()); +#endif + // Go back to start position + PrintLine::moveRelativeDistanceInSteps(0, 0, lastCorrection - currentPositionSteps[Z_AXIS], 0, EEPROM::zProbeSpeed(), true, true); + if(Endstops::zProbe()) { + Com::printErrorFLN(PSTR("z-probe did not untrigger after going back to start position.")); + return ILLEGAL_Z_PROBE; + } + //PrintLine::moveRelativeDistanceInSteps(offx,offy,0,0,EEPROM::zProbeXYSpeed(),true,true); + if(last) + finishProbing(); + return distance; +} + +float Printer::bendingCorrectionAt(float x, float y) { + PlaneBuilder builder; + builder.addPoint(EEPROM::zProbeX1(),EEPROM::zProbeY1(),EEPROM::bendingCorrectionA()); + builder.addPoint(EEPROM::zProbeX2(),EEPROM::zProbeY2(),EEPROM::bendingCorrectionB()); + builder.addPoint(EEPROM::zProbeX3(),EEPROM::zProbeY3(),EEPROM::bendingCorrectionC()); + Plane plane; + builder.createPlane(plane,true); + return plane.z(x,y); +} + +void Printer::waitForZProbeStart() { +#if Z_PROBE_WAIT_BEFORE_TEST + Endstops::update(); + Endstops::update(); // double test to get right signal. Needed for crosstalk protection. + if(Endstops::zProbe()) return; +#if UI_DISPLAY_TYPE != NO_DISPLAY + uid.setStatusP(Com::tHitZProbe); + uid.refreshPage(); +#endif +#ifdef DEBUG_PRINT + debugWaitLoop = 3; +#endif + while(!Endstops::zProbe()) { + defaultLoopActions(); + Endstops::update(); + Endstops::update(); // double test to get right signal. Needed for crosstalk protection. + } +#ifdef DEBUG_PRINT + debugWaitLoop = 4; +#endif + HAL::delayMilliseconds(30); + while(Endstops::zProbe()) { + defaultLoopActions(); + Endstops::update(); + Endstops::update(); // double test to get right signal. Needed for crosstalk protection. + } + HAL::delayMilliseconds(30); + UI_CLEAR_STATUS; +#endif +} +#endif + +/* + Transforms theoretical correct coordinates to corrected coordinates resulting from bed rotation + and shear transformations. +*/ +void Printer::transformToPrinter(float x,float y,float z,float &transX,float &transY,float &transZ) { +#if FEATURE_AXISCOMP + // Axis compensation: + x = x + y * EEPROM::axisCompTanXY() + z * EEPROM::axisCompTanXZ(); + y = y + z * EEPROM::axisCompTanYZ(); +#endif +#if BED_CORRECTION_METHOD != 1 && FEATURE_AUTOLEVEL + if(isAutolevelActive()) { + transX = x * autolevelTransformation[0] + y * autolevelTransformation[3] + z * autolevelTransformation[6]; + transY = x * autolevelTransformation[1] + y * autolevelTransformation[4] + z * autolevelTransformation[7]; + transZ = x * autolevelTransformation[2] + y * autolevelTransformation[5] + z * autolevelTransformation[8]; + } else { + transX = x; + transY = y; + transZ = z; + } +#else + transX = x; + transY = y; + transZ = z; +#endif +} + +/* Transform back to real printer coordinates. */ +void Printer::transformFromPrinter(float x,float y,float z,float &transX,float &transY,float &transZ) { +#if BED_CORRECTION_METHOD != 1 && FEATURE_AUTOLEVEL + if(isAutolevelActive()) { + transX = x * autolevelTransformation[0] + y * autolevelTransformation[1] + z * autolevelTransformation[2]; + transY = x * autolevelTransformation[3] + y * autolevelTransformation[4] + z * autolevelTransformation[5]; + transZ = x * autolevelTransformation[6] + y * autolevelTransformation[7] + z * autolevelTransformation[8]; + } else { + transX = x; + transY = y; + transZ = z; + } +#else + transX = x; + transY = y; + transZ = z; +#endif +#if FEATURE_AXISCOMP + // Axis compensation: + transY = transY - transZ * EEPROM::axisCompTanYZ(); + transX = transX - transY * EEPROM::axisCompTanXY() - transZ * EEPROM::axisCompTanXZ(); +#endif +} +#if FEATURE_AUTOLEVEL +void Printer::resetTransformationMatrix(bool silent) { + autolevelTransformation[0] = autolevelTransformation[4] = autolevelTransformation[8] = 1; + autolevelTransformation[1] = autolevelTransformation[2] = autolevelTransformation[3] = + autolevelTransformation[5] = autolevelTransformation[6] = autolevelTransformation[7] = 0; + if(!silent) + Com::printInfoFLN(Com::tAutolevelReset); +} + +void Printer::buildTransformationMatrix(Plane &plane) { + float z0 = plane.z(0,0); + float az = z0-plane.z(1,0); // ax = 1, ay = 0 + float bz = z0-plane.z(0,1); // bx = 0, by = 1 + // First z direction + autolevelTransformation[6] = -az; + autolevelTransformation[7] = -bz; + autolevelTransformation[8] = 1; + float len = sqrt(az * az + bz * bz + 1); + autolevelTransformation[6] /= len; + autolevelTransformation[7] /= len; + autolevelTransformation[8] /= len; + autolevelTransformation[0] = 1; + autolevelTransformation[1] = 0; + autolevelTransformation[2] = -autolevelTransformation[6]/autolevelTransformation[8]; + len = sqrt(autolevelTransformation[0] * autolevelTransformation[0] + autolevelTransformation[1] * autolevelTransformation[1] + autolevelTransformation[2] * autolevelTransformation[2]); + autolevelTransformation[0] /= len; + autolevelTransformation[1] /= len; + autolevelTransformation[2] /= len; + // cross(z,x) y,z) + autolevelTransformation[3] = autolevelTransformation[7] * autolevelTransformation[2] - autolevelTransformation[8] * autolevelTransformation[1]; + autolevelTransformation[4] = autolevelTransformation[8] * autolevelTransformation[0] - autolevelTransformation[6] * autolevelTransformation[2]; + autolevelTransformation[5] = autolevelTransformation[6] * autolevelTransformation[1] - autolevelTransformation[7] * autolevelTransformation[0]; + len = sqrt(autolevelTransformation[3] * autolevelTransformation[3] + autolevelTransformation[4] * autolevelTransformation[4] + autolevelTransformation[5] * autolevelTransformation[5]); + autolevelTransformation[3] /= len; + autolevelTransformation[4] /= len; + autolevelTransformation[5] /= len; + + Com::printArrayFLN(Com::tTransformationMatrix,autolevelTransformation, 9, 6); +} +/* +void Printer::buildTransformationMatrix(float h1,float h2,float h3) { + float ax = EEPROM::zProbeX2() - EEPROM::zProbeX1(); + float ay = EEPROM::zProbeY2() - EEPROM::zProbeY1(); + float az = h1 - h2; + float bx = EEPROM::zProbeX3() - EEPROM::zProbeX1(); + float by = EEPROM::zProbeY3() - EEPROM::zProbeY1(); + float bz = h1 - h3; + // First z direction + autolevelTransformation[6] = ay * bz - az * by; + autolevelTransformation[7] = az * bx - ax * bz; + autolevelTransformation[8] = ax * by - ay * bx; + float len = sqrt(autolevelTransformation[6] * autolevelTransformation[6] + autolevelTransformation[7] * autolevelTransformation[7] + autolevelTransformation[8] * autolevelTransformation[8]); + if(autolevelTransformation[8] < 0) len = -len; + autolevelTransformation[6] /= len; + autolevelTransformation[7] /= len; + autolevelTransformation[8] /= len; + autolevelTransformation[3] = 0; + autolevelTransformation[4] = autolevelTransformation[8]; + autolevelTransformation[5] = -autolevelTransformation[7]; + // cross(y,z) + autolevelTransformation[0] = autolevelTransformation[4] * autolevelTransformation[8] - autolevelTransformation[5] * autolevelTransformation[7]; + autolevelTransformation[1] = autolevelTransformation[5] * autolevelTransformation[6];// - autolevelTransformation[3] * autolevelTransformation[8]; + autolevelTransformation[2] = autolevelTransformation[3] * autolevelTransformation[7] - autolevelTransformation[4] * autolevelTransformation[6]; + len = sqrt(autolevelTransformation[0] * autolevelTransformation[0] + autolevelTransformation[1] * autolevelTransformation[1] + autolevelTransformation[2] * autolevelTransformation[2]); + autolevelTransformation[0] /= len; + autolevelTransformation[1] /= len; + autolevelTransformation[2] /= len; + len = sqrt(autolevelTransformation[4] * autolevelTransformation[4] + autolevelTransformation[5] * autolevelTransformation[5]); + autolevelTransformation[4] /= len; + autolevelTransformation[5] /= len; + Com::printArrayFLN(Com::tTransformationMatrix,autolevelTransformation, 9, 6); +} +*/ +#endif diff --git a/src/ArduinoDUE/Repetier/Commands.cpp b/src/ArduinoDUE/Repetier/Commands.cpp index ea28110..026db1e 100644 --- a/src/ArduinoDUE/Repetier/Commands.cpp +++ b/src/ArduinoDUE/Repetier/Commands.cpp @@ -1,52 +1,94 @@ /* - This file is part of Repetier-Firmware. +This file is part of Repetier-Firmware. - Repetier-Firmware is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. +Repetier-Firmware is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. - Repetier-Firmware is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. +Repetier-Firmware is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. - You should have received a copy of the GNU General Public License - along with Repetier-Firmware. If not, see . +You should have received a copy of the GNU General Public License +along with Repetier-Firmware. If not, see . - This firmware is a nearly complete rewrite of the sprinter firmware - by kliment (https://github.com/kliment/Sprinter) - which based on Tonokip RepRap firmware rewrite based off of Hydra-mmm firmware. +This firmware is a nearly complete rewrite of the sprinter firmware +by kliment (https://github.com/kliment/Sprinter) +which based on Tonokip RepRap firmware rewrite based off of Hydra-mmm firmware. */ #include "Repetier.h" -const int sensitive_pins[] PROGMEM = SENSITIVE_PINS; // Sensitive pin list for M42 +const int8_t sensitive_pins[] PROGMEM = SENSITIVE_PINS; // Sensitive pin list for M42 int Commands::lowestRAMValue = MAX_RAM; int Commands::lowestRAMValueSend = MAX_RAM; -//Davinci Specific, specifi flag and counter +//Davinci Specific +extern bool benable_autoreturn; + +#if DAVINCI == 4 +//to avoid conflict between AiO home turn table sensor and Z-probe sensor +void Check_turntable(){ + + if (digitalRead(TABLE_HOME_PIN) == 0) { + getMotorDriver(0)->disable(); + getMotorDriver(0)->setCurrentAs(0); + int32_t tmpspeed = getMotorDriver(0)->getdelayUS(); + int32_t homespeed = 500000 / (TURNTABLE_HOME_SPEED * getMotorDriver(0)->getstepsPerMM()); + getMotorDriver(0)->setdelayUS(homespeed); + getMotorDriver(0)->gotoPosition(10); + getMotorDriver(0)->setdelayUS(tmpspeed); + } + getMotorDriver(0)->enable(); +} +//generic function to home a motor using max speed / max length and sensor pin +bool Home_motor(int id, float speed, int sensorpin, float maxlength) { + //check if need to move + bool result = false; + getMotorDriver(id)->enable(); + if (digitalRead(sensorpin) == 0) return true; + //save current speed + int32_t tmpspeed = getMotorDriver(id)->getdelayUS(); + int32_t homespeed = 500000 / (speed * getMotorDriver(id)->getstepsPerMM()); + getMotorDriver(id)->disable(); + getMotorDriver(id)->setCurrentAs(0); + getMotorDriver(id)->setdelayUS(homespeed); + //precision is 0.5 mm should be ok + for (float pos = 0.5; pos < maxlength;pos=pos+0.5) + { + getMotorDriver(id)->gotoPosition(pos); + if (digitalRead(sensorpin) == 0) { //here we go so exit + result = true; + break; + } + } + //lock motor and reverse speed to original and send status + getMotorDriver(id)->enable(); + getMotorDriver(id)->setdelayUS(tmpspeed); + getMotorDriver(id)->setCurrentAs(0); + return result; +} +#endif + +//Davinci Specific, specific flag and counter uint8_t Commands::delay_flag_change=0; uint8_t Commands::delay_flag_change2=0; uint8_t Commands::countersensor=0; -void Commands::commandLoop() -{ - while(true) - { +void Commands::commandLoop() { + while(true) { #ifdef DEBUG_PRINT debugWaitLoop = 1; #endif - if(!Printer::isBlockingReceive()) - { + if(!Printer::isBlockingReceive()) { GCode::readFromSerial(); GCode *code = GCode::peekCurrentCommand(); //UI_SLOW; // do longer timed user interface action UI_MEDIUM; // do check encoder - if(code) - { + if(code) { #if SDSUPPORT - if(sd.savetosd) - { + if(sd.savetosd) { if(!(code->hasM() && code->M == 29)) // still writing to file sd.writeCommand(code); else @@ -54,37 +96,32 @@ void Commands::commandLoop() #if ECHO_ON_EXECUTE code->echoCommand(); #endif - } - else + } else #endif - //Davinci Specific, STOP requested - if(!Printer::isMenuModeEx(MENU_MODE_STOP_REQUESTED)) Commands::executeGCode(code); + //Davinci Specific, STOP requested + if(!Printer::isMenuModeEx(MENU_MODE_STOP_REQUESTED)) Commands::executeGCode(code); code->popCurrentCommand(); } - } - else - { + } else { + GCode::keepAlive(Paused); UI_MEDIUM; } Printer::defaultLoopActions(); } } -void Commands::checkForPeriodicalActions(bool allowNewMoves) -{ +void Commands::checkForPeriodicalActions(bool allowNewMoves) { Printer::handleInterruptEvent(); - if(!executePeriodical) return; -//Davinci Specific, as we call a lot this function in subfunctions -#if FEATURE_WATCHDOG - HAL::pingWatchdog(); -#endif + EVENT_PERIODICAL; + if(!executePeriodical) return; // gets true every 100ms executePeriodical = 0; + EVENT_TIMER_100MS; Extruder::manageTemperatures(); - if(--counter250ms == 0) - { - if(manageMonitor <= 1 + NUM_EXTRUDER) + if(--counter500ms == 0) { + if(manageMonitor) writeMonitor(); - counter250ms = 5; + counter500ms = 5; + EVENT_TIMER_500MS; } //Davinci Specific, sensor management #if defined(TOP_SENSOR_PIN) @@ -112,7 +149,7 @@ void Commands::checkForPeriodicalActions(bool allowNewMoves) //play alarm playsound(1000,140); playsound(3000,240); - UI_STATUS_UPD(UI_TEXT_TOP_COVER_OPEN); + UI_STATUS_F(Com::translatedF(UI_TEXT_TOP_COVER_OPEN_ID)); countersensor=0; } } @@ -123,9 +160,9 @@ void Commands::checkForPeriodicalActions(bool allowNewMoves) //check if top was previously open if (Printer::btop_Cover_open) { //erase only if no other status - if (String(UI_TEXT_TOP_COVER_OPEN).equals(String(uid.statusMsg))) + if (String(Com::translatedF(UI_TEXT_TOP_COVER_OPEN_ID)).equals(String(uid.statusMsg))) { - UI_STATUS_UPD(""); + UI_STATUS_F(Com::translatedF(UI_TEXT_EMPTY_ID)); } Printer::btop_Cover_open=false; } @@ -139,7 +176,7 @@ void Commands::checkForPeriodicalActions(bool allowNewMoves) Printer::setMenuModeEx(MENU_MODE_STOP_REQUESTED,false); //commands to run when stop GCode::executeFString(PSTR(SD_RUN_ON_STOP)); - UI_STATUS_UPD(UI_TEXT_IDLE); + UI_STATUS_F(Com::translatedF(UI_TEXT_IDLE_ID)); delay_flag_change2=0; } else delay_flag_change2++; @@ -162,7 +199,7 @@ void Commands::checkForPeriodicalActions(bool allowNewMoves) } else delay_flag_change=0; // If called from queueDelta etc. it is an error to start a new move since it - // would invalidate old computation resulting in unpredicted behaviour. + // would invalidate old computation resulting in unpredicted behavior. // lcd controller can start new moves, so we disallow it if called from within // a move command. UI_SLOW(allowNewMoves); @@ -172,39 +209,34 @@ void Commands::checkForPeriodicalActions(bool allowNewMoves) /** \brief Waits until movement cache is empty. - Some commands expect no movement, before they can execute. This function - waits, until the steppers are stopped. In the meanwhile it buffers incoming - commands and manages temperatures. +Some commands expect no movement, before they can execute. This function +waits, until the steppers are stopped. In the meanwhile it buffers incoming +commands and manages temperatures. */ -void Commands::waitUntilEndOfAllMoves() -{ +void Commands::waitUntilEndOfAllMoves() { #ifdef DEBUG_PRINT debugWaitLoop = 8; #endif - while(PrintLine::hasLines()) - { + while(PrintLine::hasLines()) { GCode::readFromSerial(); checkForPeriodicalActions(false); + GCode::keepAlive(Processing); UI_MEDIUM; } } -void Commands::waitUntilEndOfAllBuffers() -{ +void Commands::waitUntilEndOfAllBuffers() { GCode *code = NULL; #ifdef DEBUG_PRINT debugWaitLoop = 9; #endif - while(PrintLine::hasLines() || (code != NULL)) - { + while(PrintLine::hasLines() || (code != NULL)) { GCode::readFromSerial(); code = GCode::peekCurrentCommand(); UI_MEDIUM; // do check encoder - if(code) - { + if(code) { #if SDSUPPORT - if(sd.savetosd) - { + if(sd.savetosd) { if(!(code->hasM() && code->M == 29)) // still writing to file sd.writeCommand(code); else @@ -212,8 +244,7 @@ void Commands::waitUntilEndOfAllBuffers() #if ECHO_ON_EXECUTE code->echoCommand(); #endif - } - else + } else #endif Commands::executeGCode(code); code->popCurrentCommand(); @@ -223,12 +254,10 @@ void Commands::waitUntilEndOfAllBuffers() } } -void Commands::printCurrentPosition(FSTRINGPARAM(s)) -{ +void Commands::printCurrentPosition(FSTRINGPARAM(s)) { float x, y, z; Printer::realPosition(x, y, z); - if (isnan(x) || isinf(x) || isnan(y) || isinf(y) || isnan(z) || isinf(z)) - { + if (isnan(x) || isinf(x) || isnan(y) || isinf(y) || isnan(z) || isinf(z)) { Com::printErrorFLN(s); // flag where the error condition came from } x += Printer::coordinateOffset[X_AXIS]; @@ -242,8 +271,9 @@ void Commands::printCurrentPosition(FSTRINGPARAM(s)) //Com::printFLN(PSTR(" OffY:"),Printer::offsetY); } -void Commands::printTemperatures(bool showRaw) -{ +void Commands::printTemperatures(bool showRaw) { + int error; +#if NUM_EXTRUDER > 0 float temp = Extruder::current->tempControl.currentTemperatureC; #if HEATED_BED_SENSOR_TYPE == 0 Com::printF(Com::tTColon,temp); @@ -254,20 +284,21 @@ void Commands::printTemperatures(bool showRaw) #if HAVE_HEATED_BED Com::printF(Com::tSpaceBColon,Extruder::getHeatedBedTemperature()); Com::printF(Com::tSpaceSlash,heatedBedController.targetTemperatureC,0); - if(showRaw) - { + if((error = heatedBedController.errorState()) > 0) { + Com::printF(PSTR(" DB:"),error); + } + if(showRaw) { Com::printF(Com::tSpaceRaw,(int)NUM_EXTRUDER); Com::printF(Com::tColon,(1023 << (2 - ANALOG_REDUCE_BITS)) - heatedBedController.currentTemperature); } - Com::printF(Com::tSpaceBAtColon,(pwm_pos[heatedBedController.pwmIndex])); // Show output of autotune when tuning! + Com::printF(Com::tSpaceBAtColon,(pwm_pos[heatedBedController.pwmIndex])); // Show output of auto tune when tuning! #endif #endif #if TEMP_PID - Com::printF(Com::tSpaceAtColon,(autotuneIndex == 255 ? pwm_pos[Extruder::current->id] : pwm_pos[autotuneIndex])); // Show output of autotune when tuning! + Com::printF(Com::tSpaceAtColon,(autotuneIndex == 255 ? pwm_pos[Extruder::current->id] : pwm_pos[autotuneIndex])); // Show output of auto tune when tuning! #endif #if NUM_EXTRUDER > 1 && MIXING_EXTRUDER == 0 - for(uint8_t i = 0; i < NUM_EXTRUDER; i++) - { + for(uint8_t i = 0; i < NUM_EXTRUDER; i++) { Com::printF(Com::tSpaceT,(int)i); Com::printF(Com::tColon,extruder[i].tempControl.currentTemperatureC); Com::printF(Com::tSpaceSlash,extruder[i].tempControl.targetTemperatureC,0); @@ -275,17 +306,28 @@ void Commands::printTemperatures(bool showRaw) Com::printF(Com::tSpaceAt,(int)i); Com::printF(Com::tColon,(pwm_pos[extruder[i].tempControl.pwmIndex])); // Show output of autotune when tuning! #endif - if(showRaw) - { + if((error = extruder[i].tempControl.errorState()) > 0) { + Com::printF(PSTR(" D"),(int)i); + Com::printF(Com::tColon,error); + } + if(showRaw) { Com::printF(Com::tSpaceRaw,(int)i); Com::printF(Com::tColon,(1023 << (2 - ANALOG_REDUCE_BITS)) - extruder[i].tempControl.currentTemperature); } } +#elif NUM_EXTRUDER == 1 + if((error = extruder[0].tempControl.errorState()) > 0) { + Com::printF(PSTR(" D0:"),error); + } + if(showRaw) { + Com::printF(Com::tSpaceRaw,(int)0); + Com::printF(Com::tColon,(1023 << (2 - ANALOG_REDUCE_BITS)) - extruder[0].tempControl.currentTemperature); + } #endif Com::println(); +#endif } -void Commands::changeFeedrateMultiply(int factor) -{ +void Commands::changeFeedrateMultiply(int factor) { if(factor < 25) factor = 25; if(factor > 500) factor = 500; Printer::feedrate *= (float)factor / (float)Printer::feedrateMultiply; @@ -293,8 +335,7 @@ void Commands::changeFeedrateMultiply(int factor) Com::printFLN(Com::tSpeedMultiply, factor); } -void Commands::changeFlowrateMultiply(int factor) -{ +void Commands::changeFlowrateMultiply(int factor) { if(factor < 25) factor = 25; if(factor > 200) factor = 200; Printer::extrudeMultiply = factor; @@ -305,35 +346,48 @@ void Commands::changeFlowrateMultiply(int factor) Com::printFLN(Com::tFlowMultiply, factor); } +#if FEATURE_FAN_CONTROL uint8_t fanKickstart; -void Commands::setFanSpeed(int speed,bool wait) -{ -#if FAN_PIN>-1 && FEATURE_FAN_CONTROL +#endif +#if FEATURE_FAN2_CONTROL +uint8_t fan2Kickstart; +#endif + +void Commands::setFanSpeed(int speed, bool immediately) { +#if FAN_PIN >- 1 && FEATURE_FAN_CONTROL + if(Printer::fanSpeed == speed) + return; speed = constrain(speed,0,255); Printer::setMenuMode(MENU_MODE_FAN_RUNNING,speed != 0); - if(wait) - Commands::waitUntilEndOfAllMoves(); // use only if neededthis to change the speed exactly at that point, but it may cause blobs if you do! - if(speed != pwm_pos[NUM_EXTRUDER + 2]) - { - Com::printFLN(Com::tFanspeed,speed); // send only new values to break update loops! -#if FAN_KICKSTART_TIME - if(fanKickstart == 0 && speed > pwm_pos[NUM_EXTRUDER + 2]) fanKickstart = FAN_KICKSTART_TIME/100; -#endif + Printer::fanSpeed = speed; + if(PrintLine::linesCount == 0 || immediately) { + if(Printer::mode == PRINTER_MODE_FFF) { + for(fast8_t i = 0; i < PRINTLINE_CACHE_SIZE; i++) + PrintLine::lines[i].secondSpeed = speed; // fill all printline buffers with new fan speed value + } + Printer::setFanSpeedDirectly(speed); } - pwm_pos[NUM_EXTRUDER + 2] = speed; + Com::printFLN(Com::tFanspeed,speed); // send only new values to break update loops! +#endif +} +void Commands::setFan2Speed(int speed) { +#if FAN2_PIN >- 1 && FEATURE_FAN2_CONTROL + speed = constrain(speed,0,255); + Printer::setFan2SpeedDirectly(speed); + Com::printFLN(Com::tFan2speed,speed); // send only new values to break update loops! #endif } -void Commands::reportPrinterUsage() -{ +void Commands::reportPrinterUsage() { #if EEPROM_MODE != 0 float dist = Printer::filamentPrinted * 0.001 + HAL::eprGetFloat(EPR_PRINTING_DISTANCE); Com::printF(Com::tPrintedFilament, dist, 2); Com::printF(Com::tSpacem); bool alloff = true; +#if NUM_EXTRUDER > 0 for(uint8_t i = 0; i < NUM_EXTRUDER; i++) if(tempController[i]->targetTemperatureC > 15) alloff = false; - +#endif int32_t seconds = (alloff ? 0 : (HAL::timeInMilliseconds() - Printer::msecondsPrinting) / 1000) + HAL::eprGetInt32(EPR_PRINTING_TIME); int32_t tmp = seconds / 86400; seconds -= tmp * 86400; @@ -350,8 +404,9 @@ void Commands::reportPrinterUsage() // Digipot methods for controling current and microstepping #if defined(DIGIPOTSS_PIN) && DIGIPOTSS_PIN > -1 -int digitalPotWrite(int address, unsigned int value) // From Arduino DigitalPotControl example -{ +int digitalPotWrite(int address, uint16_t value) { // From Arduino DigitalPotControl example + if(value > 255) + value = 255; WRITE(DIGIPOTSS_PIN,LOW); // take the SS pin low to select the chip HAL::spiSend(address); // send in the address and value via SPI: HAL::spiSend(value); @@ -359,35 +414,45 @@ int digitalPotWrite(int address, unsigned int value) // From Arduino DigitalPotC //delay(10); } -void setMotorCurrent(uint8_t driver, unsigned int current) -{ +void setMotorCurrent(uint8_t driver, uint16_t current) { + if(driver > 4) return; const uint8_t digipot_ch[] = DIGIPOT_CHANNELS; digitalPotWrite(digipot_ch[driver], current); } + +void setMotorCurrentPercent( uint8_t channel, float level) { + uint16_t raw_level = ( level * 255 / 100 ); + setMotorCurrent(channel,raw_level); +} #endif -void motorCurrentControlInit() //Initialize Digipot Motor Current -{ +void motorCurrentControlInit() { //Initialize Digipot Motor Current #if DIGIPOTSS_PIN && DIGIPOTSS_PIN > -1 - const uint8_t digipot_motor_current[] = MOTOR_CURRENT; - HAL::spiInit(0); //SPI.begin(); SET_OUTPUT(DIGIPOTSS_PIN); +#ifdef MOTOR_CURRENT_PERCENT + const float digipot_motor_current[] = MOTOR_CURRENT_PERCENT; + for(int i = 0; i <= 4; i++) + //digitalPotWrite(digipot_ch[i], digipot_motor_current[i]); + setMotorCurrentPercent(i,digipot_motor_current[i]); +#else + const uint8_t digipot_motor_current[] = MOTOR_CURRENT; for(int i = 0; i <= 4; i++) //digitalPotWrite(digipot_ch[i], digipot_motor_current[i]); setMotorCurrent(i,digipot_motor_current[i]); #endif +#endif } #endif -#if STEPPER_CURRENT_CONTROL==CURRENT_CONTROL_LTC2600 +#if STEPPER_CURRENT_CONTROL == CURRENT_CONTROL_LTC2600 -void setMotorCurrent( uint8_t channel, unsigned short level ) -{ +void setMotorCurrent( uint8_t channel, unsigned short level ) { + if(channel >= LTC2600_NUM_CHANNELS) return; const uint8_t ltc_channels[] = LTC2600_CHANNELS; if(channel > LTC2600_NUM_CHANNELS) return; uint8_t address = ltc_channels[channel]; - char i; + fast8_t i; // NOTE: Do not increase the current endlessly. In case the engine reaches its current saturation, the engine and the driver can heat up and loss power. @@ -406,16 +471,14 @@ void setMotorCurrent( uint8_t channel, unsigned short level ) WRITE( LTC2600_CS_PIN, LOW ); // transfer command and address - for( i = 7; i >= 0; i-- ) - { + for( i = 7; i >= 0; i-- ) { WRITE( LTC2600_SDI_PIN, address & (0x01 << i)); WRITE( LTC2600_SCK_PIN, 1 ); WRITE( LTC2600_SCK_PIN, 0 ); } // transfer the data word - for( i = 15; i >= 0; i-- ) - { + for( i = 15; i >= 0; i-- ) { WRITE( LTC2600_SDI_PIN, level & (0x01 << i)); WRITE( LTC2600_SCK_PIN, 1 ); WRITE( LTC2600_SCK_PIN, 0 ); @@ -426,170 +489,453 @@ void setMotorCurrent( uint8_t channel, unsigned short level ) WRITE( LTC2600_CS_PIN, HIGH ); } // setLTC2600 +void setMotorCurrentPercent( uint8_t channel, float level) { + if(level > 100.0f) level = 100.0f; + uint16_t raw_level = static_cast( (long)level * 65535L / 100L ); + setMotorCurrent(channel,raw_level); +} -void motorCurrentControlInit() //Initialize LTC2600 Motor Current -{ - const unsigned int ltc_current[] = MOTOR_CURRENT; +void motorCurrentControlInit() { //Initialize LTC2600 Motor Current uint8_t i; - for(i=0; i= 7) // max channel (X,Y,Z,E0,E1,E2,E3) + return; + if(value > 255) + value=255; + + uint8_t externalDac_buf[2] = {0x10, 0x00}; + + if(channel > 3) + externalDac_buf[0] |= ( 7 - channel << 6); + else + externalDac_buf[0] |= ( 3 - channel << 6); + + externalDac_buf[0] |= (value >> 4); + externalDac_buf[1] |= (value << 4); + + // All SPI chip-select HIGH + WRITE(DAC0_SYNC, HIGH); + WRITE(DAC1_SYNC, HIGH); + WRITE(SPI_EEPROM1_CS, HIGH); + WRITE(SPI_EEPROM2_CS, HIGH); + WRITE(SPI_FLASH_CS, HIGH); + WRITE(SDSS, HIGH); + + if(channel > 3) { // DAC Piggy E1,E2,E3 + WRITE(DAC1_SYNC,LOW); + HAL::delayMicroseconds(2); + WRITE(DAC1_SYNC,HIGH); + HAL::delayMicroseconds(2); + WRITE(DAC1_SYNC,LOW); + } else { // DAC onboard X,Y,Z,E0 + WRITE(DAC0_SYNC,LOW); + HAL::delayMicroseconds(2); + WRITE(DAC0_SYNC,HIGH); + HAL::delayMicroseconds(2); + WRITE(DAC0_SYNC,LOW); + } + + HAL::delayMicroseconds(2); + HAL::spiSend(SPI_CHAN_DAC, externalDac_buf, 2); +} + +void setMotorCurrentPercent( uint8_t channel, float level) { + uint16_t raw_level = ( level * 255 / 100 ); + setMotorCurrent(channel,raw_level); +} + +void motorCurrentControlInit() { //Initialize Motor Current + uint8_t externalDac_buf[2] = {0x20, 0x00};//all off + + // All SPI chip-select HIGH + WRITE(DAC0_SYNC, HIGH); + WRITE(DAC1_SYNC, HIGH); + WRITE(SPI_EEPROM1_CS, HIGH); + WRITE(SPI_EEPROM2_CS, HIGH); + WRITE(SPI_FLASH_CS, HIGH); + WRITE(SDSS, HIGH); + + // init onboard DAC + WRITE(DAC0_SYNC, LOW); + HAL::delayMicroseconds(2); + WRITE(DAC0_SYNC, HIGH); + HAL::delayMicroseconds(2); + WRITE(DAC0_SYNC, LOW); + + HAL::spiSend(SPI_CHAN_DAC,externalDac_buf, 2); + WRITE(DAC0_SYNC, HIGH); + +#if NUM_EXTRUDER > 1 + // init Piggy DAC + WRITE(DAC1_SYNC, LOW); + HAL::delayMicroseconds(2); + WRITE(DAC1_SYNC, HIGH); + HAL::delayMicroseconds(2); + WRITE(DAC1_SYNC, LOW); + + HAL::spiSend(SPI_CHAN_DAC,externalDac_buf, 2); + WRITE(DAC1_SYNC, HIGH); +#endif + +#ifdef MOTOR_CURRENT_PERCENT + const float digipot_motor_current[] = MOTOR_CURRENT_PERCENT; + for(int i = 0; i < NUM_EXTRUDER+3; i++) + setMotorCurrentPercent(i,digipot_motor_current[i]); +#else + const uint8_t digipot_motor_current[] = MOTOR_CURRENT; + for(uint8_t i = 0; i < NUM_EXTRUDER+3; i++) + setMotorCurrent(i,digipot_motor_current[i]); +#endif +} +#endif + + +#if STEPPER_CURRENT_CONTROL == CURRENT_CONTROL_MCP4728 +uint8_t _intVref[] = {MCP4728_VREF, MCP4728_VREF, MCP4728_VREF, MCP4728_VREF}; +uint8_t _gain[] = {MCP4728_GAIN, MCP4728_GAIN, MCP4728_GAIN, MCP4728_GAIN}; +uint8_t _powerDown[] = {0,0,0,0}; +int16_t dac_motor_current[] = {0,0,0,0}; + +uint8_t _intVrefEp[] = {MCP4728_VREF, MCP4728_VREF, MCP4728_VREF, MCP4728_VREF}; +uint8_t _gainEp[] = {MCP4728_GAIN, MCP4728_GAIN, MCP4728_GAIN, MCP4728_GAIN}; +uint8_t _powerDownEp[] = {0,0,0,0}; +int16_t _valuesEp[] = {0,0,0,0}; + +uint8_t dac_stepper_channel[] = MCP4728_STEPPER_ORDER; + +int dacSimpleCommand(uint8_t simple_command) { + HAL::i2cStartWait(MCP4728_GENERALCALL_ADDRESS + I2C_WRITE); + HAL::i2cWrite(simple_command); + HAL::i2cStop(); +} + +void dacReadStatus() { + HAL::delayMilliseconds(500); + HAL::i2cStartWait(MCP4728_I2C_ADDRESS | I2C_READ); + + for (int i = 0; i < 8; i++) { // 2 sets of 4 Channels (1 EEPROM, 1 Runtime) + uint8_t deviceID = HAL::i2cReadAck(); + uint8_t hiByte = HAL::i2cReadAck(); + uint8_t loByte = ((i < 7) ? HAL::i2cReadAck() : HAL::i2cReadNak()); + + uint8_t isEEPROM = (deviceID & 0B00001000) >> 3; + uint8_t channel = (deviceID & 0B00110000) >> 4; + if (isEEPROM == 1) { + _intVrefEp[channel] = (hiByte & 0B10000000) >> 7; + _gainEp[channel] = (hiByte & 0B00010000) >> 4; + _powerDownEp[channel] = (hiByte & 0B01100000) >> 5; + _valuesEp[channel] = word((hiByte & 0B00001111), loByte); + } else { + _intVref[channel] = (hiByte & 0B10000000) >> 7; + _gain[channel] = (hiByte & 0B00010000) >> 4; + _powerDown[channel] = (hiByte & 0B01100000) >> 5; + dac_motor_current[channel] = word((hiByte & 0B00001111), loByte); + } + } + + HAL::i2cStop(); +} + +void dacAnalogUpdate(bool saveEEPROM = false) { + uint8_t dac_write_cmd = MCP4728_CMD_SEQ_WRITE; + + HAL::i2cStartWait(MCP4728_I2C_ADDRESS + I2C_WRITE); + if (saveEEPROM) HAL::i2cWrite(dac_write_cmd); + + for (int i = 0; i < MCP4728_NUM_CHANNELS; i++) { + uint16_t level = dac_motor_current[i]; + + uint8_t highbyte = ( _intVref[i] << 7 | _gain[i] << 4 | (uint8_t)((level) >> 8) ); + uint8_t lowbyte = ( (uint8_t) ((level) & 0xff) ); + dac_write_cmd = MCP4728_CMD_MULTI_WRITE | (i << 1); + + if (!saveEEPROM) HAL::i2cWrite(dac_write_cmd); + HAL::i2cWrite(highbyte); + HAL::i2cWrite(lowbyte); + } + + HAL::i2cStop(); + + // Instruct the MCP4728 to reflect our updated value(s) on its DAC Outputs + dacSimpleCommand((uint8_t)MCP4728_CMD_GC_UPDATE); // MCP4728 General Command Software Update (Update all DAC Outputs to reflect settings) + + // if (saveEEPROM) dacReadStatus(); // Not necessary, just a read-back sanity check. +} + +void dacCommitEeprom() { + dacAnalogUpdate(true); + dacReadStatus(); // Refresh EEPROM Values with values actually stored in EEPROM. . +} + +void dacPrintSet(int dacChannelSettings[], const char* dacChannelPrefixes[]) { + for (int i = 0; i < MCP4728_NUM_CHANNELS; i++) { + uint8_t dac_channel = dac_stepper_channel[i]; // DAC Channel is a mapped lookup. + Com::printF(dacChannelPrefixes[i], ((float)dacChannelSettings[dac_channel] * 100 / MCP4728_VOUT_MAX)); + Com::printF(Com::tSpaceRaw); + Com::printFLN(Com::tColon,dacChannelSettings[dac_channel]); + } +} + +void dacPrintValues() { + const char* dacChannelPrefixes[] = {Com::tSpaceXColon, Com::tSpaceYColon, Com::tSpaceZColon, Com::tSpaceEColon}; + + Com::printFLN(Com::tMCPEpromSettings); + dacPrintSet(_valuesEp, dacChannelPrefixes); // Once for the EEPROM set + + Com::printFLN(Com::tMCPCurrentSettings); + dacPrintSet(dac_motor_current, dacChannelPrefixes); // And another for the RUNTIME set +} + +void setMotorCurrent( uint8_t xyz_channel, uint16_t level ) { + if (xyz_channel >= MCP4728_NUM_CHANNELS) return; + uint8_t stepper_channel = dac_stepper_channel[xyz_channel]; + dac_motor_current[stepper_channel] = level < MCP4728_VOUT_MAX ? level : MCP4728_VOUT_MAX; + dacAnalogUpdate(); +} + +void setMotorCurrentPercent( uint8_t channel, float level) { + uint16_t raw_level = ( level * MCP4728_VOUT_MAX / 100 ); + setMotorCurrent(channel,raw_level); +} + +void motorCurrentControlInit() { //Initialize MCP4728 Motor Current + HAL::i2cInit(400000); // Initialize the i2c bus. + dacSimpleCommand((uint8_t)MCP4728_CMD_GC_RESET); // MCP4728 General Command Reset + dacReadStatus(); // Load Values from EEPROM. + + for(int i = 0; i < MCP4728_NUM_CHANNELS; i++) { + setMotorCurrent(dac_stepper_channel[i], _valuesEp[i] ); // This is not strictly necessary, but serves as a good sanity check to ensure we're all on the same page. + } } #endif #if defined(X_MS1_PIN) && X_MS1_PIN > -1 -void microstepMS(uint8_t driver, int8_t ms1, int8_t ms2) -{ - if(ms1 > -1) switch(driver) - { - case 0: - WRITE( X_MS1_PIN,ms1); - break; +void microstepMS(uint8_t driver, int8_t ms1, int8_t ms2) { + if(ms1 > -1) switch(driver) { + case 0: +#if X_MS1_PIN > -1 + WRITE( X_MS1_PIN,ms1); +#endif + break; + case 1: +#if Y_MS1_PIN > -1 + WRITE( Y_MS1_PIN,ms1); +#endif + break; + case 2: +#if Z_MS1_PIN > -1 + WRITE( Z_MS1_PIN,ms1); +#endif + break; + case 3: +#if E0_MS1_PIN > -1 + WRITE(E0_MS1_PIN,ms1); +#endif + break; + case 4: +#if E1_MS1_PIN > -1 + WRITE(E1_MS1_PIN,ms1); +#endif + break; + } + if(ms2 > -1) switch(driver) { + case 0: +#if X_MS2_PIN > -1 + WRITE( X_MS2_PIN,ms2); +#endif + break; + case 1: +#if Y_MS2_PIN > -1 + WRITE( Y_MS2_PIN,ms2); +#endif + break; + case 2: +#if Z_MS2_PIN > -1 + WRITE( Z_MS2_PIN,ms2); +#endif + break; + case 3: +#if E0_MS2_PIN > -1 + WRITE(E0_MS2_PIN,ms2); +#endif + break; + case 4: +#if E1_MS2_PIN > -1 + WRITE(E1_MS2_PIN,ms2); +#endif + break; + } +} + +void microstepMode(uint8_t driver, uint8_t stepping_mode) { + switch(stepping_mode) { case 1: - WRITE( Y_MS1_PIN,ms1); + microstepMS(driver,MICROSTEP1); break; case 2: - WRITE( Z_MS1_PIN,ms1); - break; - case 3: - WRITE(E0_MS1_PIN,ms1); + microstepMS(driver,MICROSTEP2); break; case 4: - WRITE(E1_MS1_PIN,ms1); - break; - } - if(ms2 > -1) switch(driver) - { - case 0: - WRITE( X_MS2_PIN,ms2); + microstepMS(driver,MICROSTEP4); break; - case 1: - WRITE( Y_MS2_PIN,ms2); - break; - case 2: - WRITE( Z_MS2_PIN,ms2); + case 8: + microstepMS(driver,MICROSTEP8); break; - case 3: - WRITE(E0_MS2_PIN,ms2); + case 16: + microstepMS(driver,MICROSTEP16); break; - case 4: - WRITE(E1_MS2_PIN,ms2); + case 32: + microstepMS(driver,MICROSTEP32); break; - } -} - -void microstepMode(uint8_t driver, uint8_t stepping_mode) -{ - switch(stepping_mode) - { - case 1: - microstepMS(driver,MICROSTEP1); - break; - case 2: - microstepMS(driver,MICROSTEP2); - break; - case 4: - microstepMS(driver,MICROSTEP4); - break; - case 8: - microstepMS(driver,MICROSTEP8); - break; - case 16: - microstepMS(driver,MICROSTEP16); - break; } } -void microstepReadings() -{ + +void microstepReadings() { Com::printFLN(Com::tMS1MS2Pins); +#if X_MS1_PIN > -1 && X_MS2_PIN > -1 Com::printF(Com::tXColon,READ(X_MS1_PIN)); Com::printFLN(Com::tComma,READ(X_MS2_PIN)); +#elif X_MS1_PIN > -1 + Com::printFLN(Com::tXColon,READ(X_MS1_PIN)); +#endif +#if Y_MS1_PIN > -1 && Y_MS2_PIN > -1 Com::printF(Com::tYColon,READ(Y_MS1_PIN)); Com::printFLN(Com::tComma,READ(Y_MS2_PIN)); +#elif Y_MS1_PIN > -1 + Com::printFLN(Com::tYColon,READ(Y_MS1_PIN)); +#endif +#if Z_MS1_PIN > -1 && Z_MS2_PIN > -1 Com::printF(Com::tZColon,READ(Z_MS1_PIN)); Com::printFLN(Com::tComma,READ(Z_MS2_PIN)); +#elif Z_MS1_PIN > -1 + Com::printFLN(Com::tZColon,READ(Z_MS1_PIN)); +#endif +#if E0_MS1_PIN > -1 && E0_MS2_PIN > -1 Com::printF(Com::tE0Colon,READ(E0_MS1_PIN)); Com::printFLN(Com::tComma,READ(E0_MS2_PIN)); +#elif E0_MS1_PIN > -1 + Com::printFLN(Com::tE0Colon,READ(E0_MS1_PIN)); +#endif +#if E1_MS1_PIN > -1 && E1_MS2_PIN > -1 Com::printF(Com::tE1Colon,READ(E1_MS1_PIN)); Com::printFLN(Com::tComma,READ(E1_MS2_PIN)); +#elif E1_MS1_PIN > -1 + Com::printFLN(Com::tE1Colon,READ(E1_MS1_PIN)); +#endif } #endif -void microstepInit() -{ +void microstepInit() { #if defined(X_MS1_PIN) && X_MS1_PIN > -1 const uint8_t microstep_modes[] = MICROSTEP_MODES; +#if X_MS1_PIN > -1 + SET_OUTPUT(X_MS1_PIN); +#endif +#if Y_MS1_PIN > -1 + SET_OUTPUT(Y_MS1_PIN); +#endif +#if Z_MS1_PIN > -1 + SET_OUTPUT(Z_MS1_PIN); +#endif +#if E0_MS1_PIN > -1 + SET_OUTPUT(E0_MS1_PIN); +#endif +#if E1_MS1_PIN > -1 + SET_OUTPUT(E1_MS1_PIN); +#endif +#if X_MS2_PIN > -1 SET_OUTPUT(X_MS2_PIN); +#endif +#if Y_MS2_PIN > -1 SET_OUTPUT(Y_MS2_PIN); +#endif +#if Z_MS2_PIN > -1 SET_OUTPUT(Z_MS2_PIN); +#endif +#if E0_MS2_PIN > -1 SET_OUTPUT(E0_MS2_PIN); +#endif +#if E1_MS2_PIN > -1 SET_OUTPUT(E1_MS2_PIN); - for(int i=0; i<=4; i++) microstepMode(i,microstep_modes[i]); +#endif + for(int i = 0; i <= 4; i++) microstepMode(i, microstep_modes[i]); #endif } /** - \brief Execute the Arc command stored in com. +\brief Execute the Arc command stored in com. */ #if ARC_SUPPORT -void Commands::processArc(GCode *com) -{ +void Commands::processArc(GCode *com) { float position[Z_AXIS_ARRAY]; Printer::realPosition(position[X_AXIS],position[Y_AXIS],position[Z_AXIS]); if(!Printer::setDestinationStepsFromGCode(com)) return; // For X Y Z E F float offset[2] = {Printer::convertToMM(com->hasI() ? com->I : 0),Printer::convertToMM(com->hasJ() ? com->J : 0)}; float target[E_AXIS_ARRAY] = {Printer::realXPosition(),Printer::realYPosition(),Printer::realZPosition(),Printer::destinationSteps[E_AXIS]*Printer::invAxisStepsPerMM[E_AXIS]}; float r; - if (com->hasR()) - { + if (com->hasR()) { /* - We need to calculate the center of the circle that has the designated radius and passes - through both the current position and the target position. This method calculates the following - set of equations where [x,y] is the vector from current to target position, d == magnitude of - that vector, h == hypotenuse of the triangle formed by the radius of the circle, the distance to - the center of the travel vector. A vector perpendicular to the travel vector [-y,x] is scaled to the - length of h [-y/d*h, x/d*h] and added to the center of the travel vector [x/2,y/2] to form the new point - [i,j] at [x/2-y/d*h, y/2+x/d*h] which will be the center of our arc. - - d^2 == x^2 + y^2 - h^2 == r^2 - (d/2)^2 - i == x/2 - y/d*h - j == y/2 + x/d*h - - O <- [i,j] - - | - r - | - - | - - | h - - | - [0,0] -> C -----------------+--------------- T <- [x,y] - | <------ d/2 ---->| - - C - Current position - T - Target position - O - center of circle that pass through both C and T - d - distance from C to T - r - designated radius - h - distance from center of CT to O - - Expanding the equations: - - d -> sqrt(x^2 + y^2) - h -> sqrt(4 * r^2 - x^2 - y^2)/2 - i -> (x - (y * sqrt(4 * r^2 - x^2 - y^2)) / sqrt(x^2 + y^2)) / 2 - j -> (y + (x * sqrt(4 * r^2 - x^2 - y^2)) / sqrt(x^2 + y^2)) / 2 - - Which can be written: - - i -> (x - (y * sqrt(4 * r^2 - x^2 - y^2))/sqrt(x^2 + y^2))/2 - j -> (y + (x * sqrt(4 * r^2 - x^2 - y^2))/sqrt(x^2 + y^2))/2 - - Which we for size and speed reasons optimize to: - - h_x2_div_d = sqrt(4 * r^2 - x^2 - y^2)/sqrt(x^2 + y^2) - i = (x - (y * h_x2_div_d))/2 - j = (y + (x * h_x2_div_d))/2 + We need to calculate the center of the circle that has the designated radius and passes + through both the current position and the target position. This method calculates the following + set of equations where [x,y] is the vector from current to target position, d == magnitude of + that vector, h == hypotenuse of the triangle formed by the radius of the circle, the distance to + the center of the travel vector. A vector perpendicular to the travel vector [-y,x] is scaled to the + length of h [-y/d*h, x/d*h] and added to the center of the travel vector [x/2,y/2] to form the new point + [i,j] at [x/2-y/d*h, y/2+x/d*h] which will be the center of our arc. + + d^2 == x^2 + y^2 + h^2 == r^2 - (d/2)^2 + i == x/2 - y/d*h + j == y/2 + x/d*h + + O <- [i,j] + - | + r - | + - | + - | h + - | + [0,0] -> C -----------------+--------------- T <- [x,y] + | <------ d/2 ---->| + + C - Current position + T - Target position + O - center of circle that pass through both C and T + d - distance from C to T + r - designated radius + h - distance from center of CT to O + + Expanding the equations: + + d -> sqrt(x^2 + y^2) + h -> sqrt(4 * r^2 - x^2 - y^2)/2 + i -> (x - (y * sqrt(4 * r^2 - x^2 - y^2)) / sqrt(x^2 + y^2)) / 2 + j -> (y + (x * sqrt(4 * r^2 - x^2 - y^2)) / sqrt(x^2 + y^2)) / 2 + + Which can be written: + + i -> (x - (y * sqrt(4 * r^2 - x^2 - y^2))/sqrt(x^2 + y^2))/2 + j -> (y + (x * sqrt(4 * r^2 - x^2 - y^2))/sqrt(x^2 + y^2))/2 + + Which we for size and speed reasons optimize to: + + h_x2_div_d = sqrt(4 * r^2 - x^2 - y^2)/sqrt(x^2 + y^2) + i = (x - (y * h_x2_div_d))/2 + j = (y + (x * h_x2_div_d))/2 */ r = Printer::convertToMM(com->R); @@ -600,50 +946,45 @@ void Commands::processArc(GCode *com) double h_x2_div_d = -sqrt(4 * r*r - x*x - y*y)/hypot(x,y); // == -(h * 2 / d) // If r is smaller than d, the arc is now traversing the complex plane beyond the reach of any // real CNC, and thus - for practical reasons - we will terminate promptly: - if(isnan(h_x2_div_d)) - { + if(isnan(h_x2_div_d)) { Com::printErrorFLN(Com::tInvalidArc); return; } // Invert the sign of h_x2_div_d if the circle is counter clockwise (see sketch below) - if (com->G==3) - { + if (com->G == 3) { h_x2_div_d = -h_x2_div_d; } /* The counter clockwise circle lies to the left of the target direction. When offset is positive, - the left hand circle will be generated - when it is negative the right hand circle is generated. + the left hand circle will be generated - when it is negative the right hand circle is generated. - T <-- Target position + T <-- Target position - ^ - Clockwise circles with this center | Clockwise circles with this center will have - will have > 180 deg of angular travel | < 180 deg of angular travel, which is a good thing! - \ | / + ^ + Clockwise circles with this center | Clockwise circles with this center will have + will have > 180 deg of angular travel | < 180 deg of angular travel, which is a good thing! + \ | / center of arc when h_x2_div_d is positive -> x <----- | -----> x <- center of arc when h_x2_div_d is negative - | - | + | + | - C <-- Current position */ + C <-- Current position */ // Negative R is g-code-alese for "I want a circle with more than 180 degrees of travel" (go figure!), // even though it is advised against ever generating such circles in a single line of g-code. By // inverting the sign of h_x2_div_d the center of the circles is placed on the opposite side of the line of // travel and thus we get the unadvisably long arcs as prescribed. - if (r < 0) - { + if (r < 0) { h_x2_div_d = -h_x2_div_d; r = -r; // Finished with r. Set to positive for mc_arc } // Complete the operation by calculating the actual center of the arc - offset[0] = 0.5*(x-(y*h_x2_div_d)); - offset[1] = 0.5*(y+(x*h_x2_div_d)); + offset[0] = 0.5 * (x - (y * h_x2_div_d)); + offset[1] = 0.5 * (y + (x * h_x2_div_d)); - } - else // Offset mode specific computations - { + } else { // Offset mode specific computations r = hypot(offset[0], offset[1]); // Compute arc radius for arc } // Set clockwise/counter-clockwise sign for arc computations @@ -652,715 +993,916 @@ void Commands::processArc(GCode *com) PrintLine::arc(position, target, offset, r, isclockwise); } #endif - +extern bool runBedLeveling(GCode *com); /** - \brief Execute the G command stored in com. +\brief Execute the G command stored in com. */ -void Commands::processGCode(GCode *com) -{ +void Commands::processGCode(GCode *com) { uint32_t codenum; //throw away variable - switch(com->G) - { - case 0: // G0 -> G1 - case 1: // G1 - if(com->hasS()) Printer::setNoDestinationCheck(com->S != 0); - if(Printer::setDestinationStepsFromGCode(com)) // For X Y Z E F -#if NONLINEAR_SYSTEM - if (!PrintLine::queueDeltaMove(ALWAYS_CHECK_ENDSTOPS, true, true)) + switch(com->G) { + case 0: // G0 -> G1 + case 1: // G1 +#if defined(SUPPORT_LASER) && SUPPORT_LASER { - Com::printWarningFLN(PSTR("executeGCode / queueDeltaMove returns error")); - } + // disable laser for G0 moves + bool laserOn = LaserDriver::laserOn; + if(com->G == 0 && Printer::mode == PRINTER_MODE_LASER) { + LaserDriver::laserOn = false; + } +#endif // defined + if(com->hasS()) Printer::setNoDestinationCheck(com->S != 0); + if(Printer::setDestinationStepsFromGCode(com)) // For X Y Z E F +#if NONLINEAR_SYSTEM + if (!PrintLine::queueNonlinearMove(ALWAYS_CHECK_ENDSTOPS, true, true)) { + Com::printWarningFLN(PSTR("executeGCode / queueDeltaMove returns error")); + } #else - PrintLine::queueCartesianMove(ALWAYS_CHECK_ENDSTOPS, true); + PrintLine::queueCartesianMove(ALWAYS_CHECK_ENDSTOPS, true); #endif #if UI_HAS_KEYS - // ui can only execute motion commands if we are not waiting inside a move for an - // old move to finish. For normal response times, we always leave one free after - // sending a line. Drawback: 1 buffer line less for limited time. Since input cache - // gets filled while waiting, the lost is neglectible. - PrintLine::waitForXFreeLines(1, true); + // ui can only execute motion commands if we are not waiting inside a move for an + // old move to finish. For normal response times, we always leave one free after + // sending a line. Drawback: 1 buffer line less for limited time. Since input cache + // gets filled while waiting, the lost is neglectable. + PrintLine::waitForXFreeLines(1, true); #endif // UI_HAS_KEYS - break; +#ifdef DEBUG_QUEUE_MOVE + { + + InterruptProtectedBlock noInts; + int lc = (int)PrintLine::linesCount; + int lp = (int)PrintLine::linesPos; + int wp = (int)PrintLine::linesWritePos; + int n = (wp - lp); + if(n < 0) n += PRINTLINE_CACHE_SIZE; + noInts.unprotect(); + if(n != lc) + Com::printFLN(PSTR("Buffer corrupted")); + } +#endif +#if defined(SUPPORT_LASER) && SUPPORT_LASER + LaserDriver::laserOn = laserOn; + } +#endif // defined + break; #if ARC_SUPPORT - case 2: // CW Arc - case 3: // CCW Arc MOTION_MODE_CW_ARC: case MOTION_MODE_CCW_ARC: - processArc(com); - break; + case 2: // CW Arc + case 3: // CCW Arc MOTION_MODE_CW_ARC: case MOTION_MODE_CCW_ARC: + processArc(com); + break; #endif - case 4: // G4 dwell - Commands::waitUntilEndOfAllMoves(); - codenum = 0; - if(com->hasP()) codenum = com->P; // milliseconds to wait - if(com->hasS()) codenum = com->S * 1000; // seconds to wait - codenum += HAL::timeInMilliseconds(); // keep track of when we started waiting - while((uint32_t)(codenum-HAL::timeInMilliseconds()) < 2000000000 ) - { - GCode::readFromSerial(); - Commands::checkForPeriodicalActions(true); - //Davinci Specific, for immediate stop - if (Printer::isMenuModeEx(MENU_MODE_STOP_REQUESTED))break; - } - break; + case 4: // G4 dwell + Commands::waitUntilEndOfAllMoves(); + codenum = 0; + if(com->hasP()) codenum = com->P; // milliseconds to wait + if(com->hasS()) codenum = com->S * 1000; // seconds to wait + codenum += HAL::timeInMilliseconds(); // keep track of when we started waiting + while((uint32_t)(codenum-HAL::timeInMilliseconds()) < 2000000000 ) { + GCode::readFromSerial(); + Commands::checkForPeriodicalActions(true); + } + break; #if FEATURE_RETRACTION && NUM_EXTRUDER > 0 - case 10: // G10 S<1 = long retract, 0 = short retract = default> retracts filament accoridng to stored setting + case 10: // G10 S<1 = long retract, 0 = short retract = default> retracts filament according to stored setting #if NUM_EXTRUDER > 1 - Extruder::current->retract(true, com->hasS() && com->S > 0); + Extruder::current->retract(true, com->hasS() && com->S > 0); #else - Extruder::current->retract(true, false); + Extruder::current->retract(true, false); #endif - break; - case 11: // G11 S<1 = long retract, 0 = short retract = default> = Undo retraction according to stored setting + break; + case 11: // G11 S<1 = long retract, 0 = short retract = default> = Undo retraction according to stored setting #if NUM_EXTRUDER > 1 - Extruder::current->retract(false, com->hasS() && com->S > 0); + Extruder::current->retract(false, com->hasS() && com->S > 0); #else - Extruder::current->retract(false, false); + Extruder::current->retract(false, false); #endif - break; + break; #endif // FEATURE_RETRACTION - case 20: // G20 Units to inches - Printer::unitIsInches = 1; - break; - case 21: // G21 Units to mm - Printer::unitIsInches = 0; - break; - case 28: //G28 Home all Axis one at a time - { - uint8_t homeAllAxis = (com->hasNoXYZ() && !com->hasE()); - if(com->hasE()) - Printer::currentPositionSteps[E_AXIS] = 0; - if(homeAllAxis || !com->hasNoXYZ()) - Printer::homeAxis(homeAllAxis || com->hasX(),homeAllAxis || com->hasY(),homeAllAxis || com->hasZ()); - Printer::updateCurrentPosition(); - } - break; + case 20: // G20 Units to inches + Printer::unitIsInches = 1; + break; + case 21: // G21 Units to mm + Printer::unitIsInches = 0; + break; + case 28: { //G28 Home all Axis one at a time + uint8_t homeAllAxis = (com->hasNoXYZ() && !com->hasE()); + if(com->hasE()) + Printer::currentPositionSteps[E_AXIS] = 0; + if(homeAllAxis || !com->hasNoXYZ()) + Printer::homeAxis(homeAllAxis || com->hasX(),homeAllAxis || com->hasY(),homeAllAxis || com->hasZ()); + } + break; #if FEATURE_Z_PROBE - case 29: // G29 3 points, build average or distortion compensation - { -#if DISTORTION_CORRECTION - float oldFeedrate = Printer::feedrate; - Printer::measureDistortion(); - Printer::feedrate = oldFeedrate; -#else - //Davinci Specific, Error management - float zMin_save=Printer::zMin ; - if(!Printer::isHomed()) Printer::homeAxis(true,true,true); - //to avoid hit on plates low, down bed a little - if (Printer::currentPosition[Z_AXIS] < Printer::zMin+5) Printer::moveToReal(IGNORE_COORDINATE,IGNORE_COORDINATE,Printer::zMin+5,IGNORE_COORDINATE,Printer::homingFeedrate[Z_AXIS]); - GCode::executeFString(Com::tZProbeStartScript); - bool oldAutolevel = Printer::isAutolevelActive(); - Printer::setAutolevelActive(false); - float sum = 0, last,oldFeedrate = Printer::feedrate; - Printer::moveTo(EEPROM::zProbeX1(),EEPROM::zProbeY1(),IGNORE_COORDINATE,IGNORE_COORDINATE,EEPROM::zProbeXYSpeed()); - sum = Printer::runZProbe(true,false,Z_PROBE_REPETITIONS,false); - //Davinci Specific, better error management - if(sum < 0) - { - Printer::zMin = zMin_save; - Printer::setAutolevelActive(false); - if (Printer::realZPosition()<-200)Printer::homeAxis(false,false,true); - //to avoid hit on plates, low down bed a little - Printer::moveToReal(IGNORE_COORDINATE,IGNORE_COORDINATE,Printer::zMin+5,IGNORE_COORDINATE,Printer::homingFeedrate[Z_AXIS]); - break; - } - Printer::moveTo(EEPROM::zProbeX2(),EEPROM::zProbeY2(),IGNORE_COORDINATE,IGNORE_COORDINATE,EEPROM::zProbeXYSpeed()); - last = Printer::runZProbe(false,false); - //Davinci Specific, better error management - if(last<0) - { - Printer::zMin = zMin_save; - Printer::setAutolevelActive(false); - if (Printer::realZPosition()<-200)Printer::homeAxis(false,false,true); - //to avoid hit on plates, low down bed a little - Printer::moveToReal(IGNORE_COORDINATE,IGNORE_COORDINATE,Printer::zMin+5,IGNORE_COORDINATE,Printer::homingFeedrate[Z_AXIS]); - break; + case 29: { // G29 3 points, build average or distortion compensation +#if defined(Z_PROBE_MIN_TEMPERATURE) && Z_PROBE_MIN_TEMPERATURE && Z_PROBE_REQUIRES_HEATING + float actTemp[NUM_EXTRUDER]; + for(int i = 0; i < NUM_EXTRUDER; i++) + actTemp[i] = extruder[i].tempControl.targetTemperatureC; + Printer::moveToReal(IGNORE_COORDINATE,IGNORE_COORDINATE,RMath::max(EEPROM::zProbeHeight(),static_cast(ZHOME_HEAT_HEIGHT)),IGNORE_COORDINATE,Printer::homingFeedrate[Z_AXIS]); + Commands::waitUntilEndOfAllMoves(); +#if ZHOME_HEAT_ALL + for(int i = 0; i < NUM_EXTRUDER; i++) { + Extruder::setTemperatureForExtruder(RMath::max(actTemp[i],static_cast(ZPROBE_MIN_TEMPERATURE)),i,false,false); } - sum+= last; - Printer::moveTo(EEPROM::zProbeX3(),EEPROM::zProbeY3(),IGNORE_COORDINATE,IGNORE_COORDINATE,EEPROM::zProbeXYSpeed()); - last = Printer::runZProbe(false,true); - //Davinci Specific, better error management - if(last < 0) - { - Printer::zMin = zMin_save; - Printer::setAutolevelActive(false); - if (Printer::realZPosition()<-200)Printer::homeAxis(false,false,true); - //to avoid hit on plates, low down bed a little - Printer::moveToReal(IGNORE_COORDINATE,IGNORE_COORDINATE,Printer::zMin+5,IGNORE_COORDINATE,Printer::homingFeedrate[Z_AXIS]); - break; + for(int i = 0; i < NUM_EXTRUDER; i++) { + if(extruder[i].tempControl.currentTemperatureC < ZPROBE_MIN_TEMPERATURE) + Extruder::setTemperatureForExtruder(RMath::max(actTemp[i],static_cast(ZPROBE_MIN_TEMPERATURE)),i,false,true); } - sum += last; - sum *= 0.33333333333333; - Com::printFLN(Com::tZProbeAverage,sum); - if(com->hasS() && com->S) - { -#if MAX_HARDWARE_ENDSTOP_Z -#if DRIVE_SYSTEM==DELTA - Printer::updateCurrentPosition(); - Printer::zLength += sum - Printer::currentPosition[Z_AXIS]; - Printer::updateDerivedParameter(); - Printer::homeAxis(true,true,true); #else - Printer::currentPositionSteps[Z_AXIS] = sum * Printer::axisStepsPerMM[Z_AXIS]; - Printer::zLength = Printer::runZMaxProbe() + sum-ENDSTOP_Z_BACK_ON_HOME; + if(extruder[Extruder::current->id].tempControl.currentTemperatureC < ZPROBE_MIN_TEMPERATURE) + Extruder::setTemperatureForExtruder(RMath::max(actTemp[Extruder::current->id],static_cast(ZPROBE_MIN_TEMPERATURE)),Extruder::current->id,false,true); #endif - Com::printInfoFLN(Com::tZProbeZReset); - Com::printFLN(Com::tZProbePrinterHeight,Printer::zLength); -#else - Printer::currentPositionSteps[Z_AXIS] = sum * Printer::axisStepsPerMM[Z_AXIS]; - Com::printFLN(PSTR("Adjusted z origin")); #endif - } - Printer::feedrate = oldFeedrate; - Printer::setAutolevelActive(oldAutolevel); - if(com->hasS() && com->S == 2) - EEPROM::storeDataIntoEEPROM(); - Printer::updateCurrentPosition(true); - printCurrentPosition(PSTR("G29 ")); - GCode::executeFString(Com::tZProbeEndScript); - Printer::feedrate = oldFeedrate; -#endif // DISTORTION_CORRECTION - } - break; - case 30: // G30 single probe set Z0 - { - uint8_t p = (com->hasP() ? (uint8_t)com->P : 3); - //bool oldAutolevel = Printer::isAutolevelActive(); - //Davinci Specific, better error management - if(!Printer::isHomed()) Printer::homeAxis(true,true,true); - //to avoid hit on plates, low down bed a little - if (Printer::currentPosition[Z_AXIS] < Printer::zMin+5) Printer::moveToReal(IGNORE_COORDINATE,IGNORE_COORDINATE,Printer::zMin+5,IGNORE_COORDINATE,Printer::homingFeedrate[Z_AXIS]); - //Printer::setAutolevelActive(false); - Printer::runZProbe(p & 1,p & 2); - //Printer::setAutolevelActive(oldAutolevel); - Printer::updateCurrentPosition(p & 1); - //printCurrentPosition(PSTR("G30 ")); - //Davinci Specific, better error management - if (Printer::realZPosition()<-200)Printer::homeAxis(false,false,true); - //to avoid hit on plates - Printer::moveToReal(IGNORE_COORDINATE,IGNORE_COORDINATE,Printer::zMin+5,IGNORE_COORDINATE,Printer::homingFeedrate[Z_AXIS]); - - } - break; - case 31: // G31 display hall sensor output - Com::printF(Com::tZProbeState); - Com::print(Printer::isZProbeHit() ? 'H' : 'L'); - Com::println(); - break; -#if FEATURE_AUTOLEVEL - case 32: // G32 Auto-Bed leveling - { -#if DISTORTION_CORRECTION - Printer::distortion.disable(true); // if level has changed, distortion is also invalid + bool ok = true; + +#if FEATURE_Z_PROBE + //Davinci Specific +#if DAVINCI == 4 + Check_turntable(); #endif -#if DRIVE_SYSTEM == DELTA - // It is not possible to go to the edges at the top, also users try - // it often and wonder why the coordinate system is then wrong. - // For that reason we ensure a correct behaviour by code. - Printer::homeAxis(true, true, true); - Printer::moveTo(IGNORE_COORDINATE, IGNORE_COORDINATE, EEPROM::zProbeBedDistance() + EEPROM::zProbeHeight(), IGNORE_COORDINATE, Printer::homingFeedrate[Z_AXIS]); -#endif - //Davinci Specific, better error management - float zMin_save=Printer::zMin; - if(!Printer::isHomed()) Printer::homeAxis(true,true,true); - //to avoid hit on plates, low down bed a little - if (Printer::currentPosition[Z_AXIS] < Printer::zMin+5) Printer::moveToReal(IGNORE_COORDINATE,IGNORE_COORDINATE,Printer::zMin+5,IGNORE_COORDINATE,Printer::homingFeedrate[Z_AXIS]); - GCode::executeFString(Com::tZProbeStartScript); - //bool iterate = com->hasP() && com->P>0; - Printer::coordinateOffset[X_AXIS] = Printer::coordinateOffset[Y_AXIS] = Printer::coordinateOffset[Z_AXIS] = 0; - Printer::setAutolevelActive(false); // iterate - float h1,h2,h3,hc,oldFeedrate = Printer::feedrate; - Printer::moveTo(EEPROM::zProbeX1(),EEPROM::zProbeY1(),IGNORE_COORDINATE,IGNORE_COORDINATE,EEPROM::zProbeXYSpeed()); - h1 = Printer::runZProbe(true,false,Z_PROBE_REPETITIONS,false); - //Davinci Specific, better error management - if(h1 < 0) - { - Printer::zMin = zMin_save; - Printer::setAutolevelActive(true); - if (Printer::realZPosition()<-200)Printer::homeAxis(false,false,true); - //to avoid hit on plates, low down bed a little - Printer::moveToReal(IGNORE_COORDINATE,IGNORE_COORDINATE,Printer::zMin+5,IGNORE_COORDINATE,Printer::homingFeedrate[Z_AXIS]); - break; - } - Printer::moveTo(EEPROM::zProbeX2(),EEPROM::zProbeY2(),IGNORE_COORDINATE,IGNORE_COORDINATE,EEPROM::zProbeXYSpeed()); - h2 = Printer::runZProbe(false,false); - //Davinci Specific, better error management - if(h2 < 0) - { - Printer::zMin = zMin_save; - Printer::setAutolevelActive(true); - if (Printer::realZPosition()<-200)Printer::homeAxis(false,false,true); - //to avoid hit on plates, low down bed a little - Printer::moveToReal(IGNORE_COORDINATE,IGNORE_COORDINATE,Printer::zMin+5,IGNORE_COORDINATE,Printer::homingFeedrate[Z_AXIS]); - break; + Printer::zprobe_ok = true; + Printer::startProbing(true); +#endif + bool oldAutolevel = Printer::isAutolevelActive(); + Printer::setAutolevelActive(false); + float sum = 0, last,oldFeedrate = Printer::feedrate; + Printer::moveTo(EEPROM::zProbeX1(), EEPROM::zProbeY1(), IGNORE_COORDINATE, IGNORE_COORDINATE, EEPROM::zProbeXYSpeed()); + sum = Printer::runZProbe(true,false,Z_PROBE_REPETITIONS,false); + if(sum == ILLEGAL_Z_PROBE){ + ok = false; + //Davinci Specific + Printer::Z_probe[0]=-2000; + } + else Printer::Z_probe[0]=sum; + uid.refreshPage(); + if(ok) { + Printer::moveTo(EEPROM::zProbeX2(), EEPROM::zProbeY2(), IGNORE_COORDINATE, IGNORE_COORDINATE, EEPROM::zProbeXYSpeed()); + last = Printer::runZProbe(false,false); + if(last == ILLEGAL_Z_PROBE) { + ok = false; + //Davinci Specific + Printer::Z_probe[1]=-2000; + } + else Printer::Z_probe[1]=last; + uid.refreshPage(); + sum+= last; } - Printer::moveTo(EEPROM::zProbeX3(),EEPROM::zProbeY3(),IGNORE_COORDINATE,IGNORE_COORDINATE,EEPROM::zProbeXYSpeed()); - h3 = Printer::runZProbe(false,true); - //Davinci Specific, better error management - if(h3 < 0) - { - Printer::zMin = zMin_save; - Printer::setAutolevelActive(true); - if (Printer::realZPosition()<-200)Printer::homeAxis(false,false,true); - //to avoid hit on plates, low down bed a little - Printer::moveToReal(IGNORE_COORDINATE,IGNORE_COORDINATE,Printer::zMin+5,IGNORE_COORDINATE,Printer::homingFeedrate[Z_AXIS]); - break; + if(ok) { + Printer::moveTo(EEPROM::zProbeX3(), EEPROM::zProbeY3(), IGNORE_COORDINATE, IGNORE_COORDINATE, EEPROM::zProbeXYSpeed()); + last = Printer::runZProbe(false,true); + if(last == ILLEGAL_Z_PROBE) { + ok = false; + //Davinci Specific + Printer::Z_probe[2]=-2000; + } + else Printer::Z_probe[2]=last; + uid.refreshPage(); + sum += last; } - Printer::buildTransformationMatrix(h1,h2,h3); - //-(Rxx*Ryz*y-Rxz*Ryx*y+(Rxz*Ryy-Rxy*Ryz)*x)/(Rxy*Ryx-Rxx*Ryy) - // z = z-deviation from origin due to bed transformation - float z = -((Printer::autolevelTransformation[0] * Printer::autolevelTransformation[5] - - Printer::autolevelTransformation[2] * Printer::autolevelTransformation[3]) * - (float)Printer::currentPositionSteps[Y_AXIS] * Printer::invAxisStepsPerMM[Y_AXIS] + - (Printer::autolevelTransformation[2] * Printer::autolevelTransformation[4] - - Printer::autolevelTransformation[1] * Printer::autolevelTransformation[5]) * - (float)Printer::currentPositionSteps[X_AXIS] * Printer::invAxisStepsPerMM[X_AXIS]) / - (Printer::autolevelTransformation[1] * Printer::autolevelTransformation[3] - Printer::autolevelTransformation[0] * Printer::autolevelTransformation[4]); - Printer::zMin = 0; - if(com->hasS() && com->S < 3 && com->S > 0) - { + if(ok) { + sum *= 0.33333333333333; + Com::printFLN(Com::tZProbeAverage, sum); + if(com->hasS() && com->S) { #if MAX_HARDWARE_ENDSTOP_Z #if DRIVE_SYSTEM == DELTA - /* Printer::offsetX = 0; - Printer::offsetY = 0; - Printer::moveToReal(0,0,cz,IGNORE_COORDINATE,Printer::homingFeedrate[X_AXIS]); - PrintLine::moveRelativeDistanceInSteps(Printer::offsetX-Printer::currentPositionSteps[X_AXIS],Printer::offsetY-Printer::currentPositionSteps[Y_AXIS],0,0,Printer::homingFeedrate[X_AXIS],true,ALWAYS_CHECK_ENDSTOPS); - Printer::offsetX = 0; - Printer::offsetY = 0;*/ - Printer::zLength += (h3 + z) - Printer::currentPosition[Z_AXIS]; + Printer::updateCurrentPosition(); + Printer::zLength += sum - Printer::currentPosition[Z_AXIS]; + Printer::updateDerivedParameter(); + Printer::homeAxis(true,true,true); #else - int32_t zBottom = Printer::currentPositionSteps[Z_AXIS] = (h3 + z) * Printer::axisStepsPerMM[Z_AXIS]; - Printer::zLength = Printer::runZMaxProbe() + zBottom * Printer::invAxisStepsPerMM[Z_AXIS] - ENDSTOP_Z_BACK_ON_HOME; + Printer::currentPositionSteps[Z_AXIS] = sum * Printer::axisStepsPerMM[Z_AXIS]; + float zup = Printer::runZMaxProbe(); + if(zup == ILLEGAL_Z_PROBE) { + ok = false; + } else + Printer::zLength = zup + sum - ENDSTOP_Z_BACK_ON_HOME; +#endif // DELTA + Com::printInfoFLN(Com::tZProbeZReset); + Com::printFLN(Com::tZProbePrinterHeight,Printer::zLength); +#else + Printer::currentPositionSteps[Z_AXIS] = sum * Printer::axisStepsPerMM[Z_AXIS]; + Com::printFLN(PSTR("Adjusted z origin")); +#endif // max z endstop + } + Printer::feedrate = oldFeedrate; + Printer::setAutolevelActive(oldAutolevel); + if(ok && com->hasS() && com->S == 2) + EEPROM::storeDataIntoEEPROM(); + } + Printer::updateCurrentPosition(true); + printCurrentPosition(PSTR("G29 ")); + Printer::finishProbing(); + Printer::feedrate = oldFeedrate; + if(!ok) { + //Davinci Specific + if (!(com->hasI()))GCode::fatalError(PSTR("G29 leveling failed!")); + else PrintLine::moveRelativeDistanceInSteps(0,0,10*Printer::axisStepsPerMM[Z_AXIS],0,Printer::homingFeedrate[0],true,false); + Printer::zprobe_ok = false; + Printer::homeAxis(true, true, true); + break; + } +#if defined(Z_PROBE_MIN_TEMPERATURE) && Z_PROBE_MIN_TEMPERATURE && Z_PROBE_REQUIRES_HEATING +#if ZHOME_HEAT_ALL + for(int i = 0; i < NUM_EXTRUDER; i++) { + Extruder::setTemperatureForExtruder(RMath::max(actTemp[i],static_cast(ZPROBE_MIN_TEMPERATURE)),i,false,false); + } + for(int i = 0; i < NUM_EXTRUDER; i++) { + if(extruder[i].tempControl.currentTemperatureC < ZPROBE_MIN_TEMPERATURE) + Extruder::setTemperatureForExtruder(RMath::max(actTemp[i],static_cast(ZPROBE_MIN_TEMPERATURE)),i,false,true); + } +#else + if(extruder[Extruder::current->id].tempControl.currentTemperatureC < ZPROBE_MIN_TEMPERATURE) + Extruder::setTemperatureForExtruder(RMath::max(actTemp[Extruder::current->id],static_cast(ZPROBE_MIN_TEMPERATURE)),Extruder::current->id,false,true); #endif - Com::printFLN(Com::tZProbePrinterHeight,Printer::zLength); -#else // max hardware endstop -#if DRIVE_SYSTEM != DELTA - Printer::currentPositionSteps[Z_AXIS] = (h3 + z) * Printer::axisStepsPerMM[Z_AXIS]; #endif + } + break; + case 30: + { // G30 single probe set Z0 +#if DAVINCI == 4 + Check_turntable(); +#endif + uint8_t p = (com->hasP() ? (uint8_t)com->P : 3); + if(Printer::runZProbe(p & 1,p & 2) == ILLEGAL_Z_PROBE) { + GCode::fatalError(PSTR("G30 probing failed!")); + //Davinci Specific + Printer::zprobe_ok = false; + Printer::homeAxis(true, true, true); + break; + } + Printer::updateCurrentPosition(p & 1); + } + break; + case 31: // G31 display hall sensor output + Endstops::update(); + Endstops::update(); + Com::printF(Com::tZProbeState); + Com::printF(Endstops::zProbe() ? Com::tHSpace : Com::tLSpace); + Com::println(); + break; +#if FEATURE_AUTOLEVEL + case 32: // G32 Auto-Bed leveling + { +#if defined(Z_PROBE_MIN_TEMPERATURE) && Z_PROBE_MIN_TEMPERATURE && Z_PROBE_REQUIRES_HEATING + float actTemp[NUM_EXTRUDER]; + for(int i = 0; i < NUM_EXTRUDER; i++) + actTemp[i] = extruder[i].tempControl.targetTemperatureC; + Printer::moveToReal(IGNORE_COORDINATE,IGNORE_COORDINATE,RMath::max(EEPROM::zProbeHeight(),static_cast(ZHOME_HEAT_HEIGHT)),IGNORE_COORDINATE,Printer::homingFeedrate[Z_AXIS]); + Commands::waitUntilEndOfAllMoves(); +#if ZHOME_HEAT_ALL + for(int i = 0; i < NUM_EXTRUDER; i++) { + Extruder::setTemperatureForExtruder(RMath::max(actTemp[i],static_cast(ZPROBE_MIN_TEMPERATURE)),i,false,false); + } + for(int i = 0; i < NUM_EXTRUDER; i++) { + if(extruder[i].tempControl.currentTemperatureC < ZPROBE_MIN_TEMPERATURE) + Extruder::setTemperatureForExtruder(RMath::max(actTemp[i],static_cast(ZPROBE_MIN_TEMPERATURE)),i,false,true); + } +#else + if(extruder[Extruder::current->id].tempControl.currentTemperatureC < ZPROBE_MIN_TEMPERATURE) + Extruder::setTemperatureForExtruder(RMath::max(actTemp[Extruder::current->id],static_cast(ZPROBE_MIN_TEMPERATURE)),Extruder::current->id,false,true); +#endif +#endif +#if DAVINCI == 4 + Check_turntable(); +#endif + if(!runBedLeveling(com)) { + //Davinci Specific + if (!(com->hasI()))GCode::fatalError(PSTR("G32 leveling failed!")); + else PrintLine::moveRelativeDistanceInSteps(0,0,10*Printer::axisStepsPerMM[Z_AXIS],0,Printer::homingFeedrate[0],true,false); + Printer::zprobe_ok = false; + Printer::homeAxis(true, true, true); + break; + } +#if defined(Z_PROBE_MIN_TEMPERATURE) && Z_PROBE_MIN_TEMPERATURE && Z_PROBE_REQUIRES_HEATING +#if ZHOME_HEAT_ALL + for(int i = 0; i < NUM_EXTRUDER; i++) { + Extruder::setTemperatureForExtruder(RMath::max(actTemp[i],static_cast(ZPROBE_MIN_TEMPERATURE)),i,false,false); + } + for(int i = 0; i < NUM_EXTRUDER; i++) { + if(extruder[i].tempControl.currentTemperatureC < ZPROBE_MIN_TEMPERATURE) + Extruder::setTemperatureForExtruder(RMath::max(actTemp[i],static_cast(ZPROBE_MIN_TEMPERATURE)),i,false,true); + } +#else + if(extruder[Extruder::current->id].tempControl.currentTemperatureC < ZPROBE_MIN_TEMPERATURE) + Extruder::setTemperatureForExtruder(RMath::max(actTemp[Extruder::current->id],static_cast(ZPROBE_MIN_TEMPERATURE)),Extruder::current->id,false,true); #endif - Printer::setAutolevelActive(true); - if(com->S == 2) - EEPROM::storeDataIntoEEPROM(); - } - else - { -#if DRIVE_SYSTEM != DELTA - Printer::currentPositionSteps[Z_AXIS] = (h3 + z) * Printer::axisStepsPerMM[Z_AXIS]; -#endif - if(com->hasS() && com->S == 3) - EEPROM::storeDataIntoEEPROM(); - } - Printer::setAutolevelActive(true); - Printer::updateDerivedParameter(); - Printer::updateCurrentPosition(true); - printCurrentPosition(PSTR("G32 ")); -#if DRIVE_SYSTEM == DELTA - Printer::homeAxis(true, true, true); #endif - Printer::feedrate = oldFeedrate; - } - break; -#endif -#endif - case 90: // G90 - Printer::relativeCoordinateMode = false; - if(com->internalCommand) - Com::printInfoFLN(PSTR("Absolute positioning")); - break; - case 91: // G91 - Printer::relativeCoordinateMode = true; - if(com->internalCommand) - Com::printInfoFLN(PSTR("Relative positioning")); - break; - case 92: // G92 - { - float xOff = Printer::coordinateOffset[X_AXIS]; - float yOff = Printer::coordinateOffset[Y_AXIS]; - float zOff = Printer::coordinateOffset[Z_AXIS]; - if(com->hasX()) xOff = Printer::convertToMM(com->X) - Printer::currentPosition[X_AXIS]; - if(com->hasY()) yOff = Printer::convertToMM(com->Y) - Printer::currentPosition[Y_AXIS]; - if(com->hasZ()) zOff = Printer::convertToMM(com->Z) - Printer::currentPosition[Z_AXIS]; - Printer::setOrigin(xOff, yOff, zOff); - if(com->hasE()) - { - Printer::currentPositionSteps[E_AXIS] = Printer::convertToMM(com->E) * Printer::axisStepsPerMM[E_AXIS]; - } - } - break; -#if DRIVE_SYSTEM == DELTA - case 100: // G100 Calibrate floor or rod radius - { - // Using manual control, adjust hot end to contact floor. - // G100 No action. Avoid accidental floor reset. - // G100 [X] [Y] [Z] set floor for argument passed in. Number ignored and may be absent. - // G100 R with X Y or Z flag error, sets only floor or radius, not both. - // G100 R[n] Add n to radius. Adjust to be above floor if necessary - // G100 R[0] set radius based on current z measurement. Moves to (0,0,0) - float currentZmm = Printer::currentPosition[Z_AXIS]; - if (currentZmm/Printer::zLength > 0.1) - { - Com::printErrorFLN(PSTR("Calibration code is limited to bottom 10% of Z height")); - break; - } - if (com->hasR()) - { - if (com->hasX() || com->hasY() || com->hasZ()) - Com::printErrorFLN(PSTR("Cannot set radius and floor at same time.")); - else if (com->R != 0) - { - //add r to radius - if (abs(com->R) <= 10) EEPROM::incrementRodRadius(com->R); - else Com::printErrorFLN(PSTR("Calibration movement is limited to 10mm.")); } - else - { - // auto set radius. Head must be at 0,0 and touching - // Z offset will be corrected for. - if (Printer::currentPosition[X_AXIS] == 0 - && Printer::currentPosition[Y_AXIS] == 0) - { - if(Printer::isLargeMachine()) - { - // calculate radius assuming we are at surface - // If Z is greater than 0 it will get calculated out for correct radius - // Use either A or B tower as they acnhor x cartesian axis and always have - // Radius distance to center in simplest set up. - float h = Printer::deltaDiagonalStepsSquaredB.f; - unsigned long bSteps = Printer::currentDeltaPositionSteps[B_TOWER]; - // The correct Rod Radius would put us here at z==0 and B height is - // square root (rod length squared minus rod radius squared) - // Reverse that to get calculated Rod Radius given B height - h -= RMath::sqr((float)bSteps); - h = sqrt(h); - EEPROM::setRodRadius(h*Printer::invAxisStepsPerMM[Z_AXIS]); + break; +#endif +#if DISTORTION_CORRECTION + case 33: { + if(com->hasL()) { // G33 L0 - List distortion matrix + Printer::distortion.showMatrix(); + } else if(com->hasR()) { // G33 R0 - Reset distortion matrix + Printer::distortion.resetCorrection(); + } else if(com->hasX() || com->hasY() || com->hasZ()) { // G33 X Y Z - Set correction for nearest point + if(com->hasX() && com->hasY() && com->hasZ()) { + Printer::distortion.set(com->X, com->Y, com->Z); + } else { + Com::printErrorFLN(PSTR("You need to define X, Y and Z to set a point!")); } - else - { - // calculate radius assuming we are at surface - // If Z is greater than 0 it will get calculated out for correct radius - // Use either A or B tower as they acnhor x cartesian axis and always have - // Radius distance to center in simplest set up. - unsigned long h = Printer::deltaDiagonalStepsSquaredB.l; - unsigned long bSteps = Printer::currentDeltaPositionSteps[B_TOWER]; - // The correct Rod Radius would put us here at z==0 and B height is - // square root (rod length squared minus rod radius squared) - // Reverse that to get calculated Rod Radius given B height - h -= RMath::sqr(bSteps); - h = SQRT(h); - EEPROM::setRodRadius(h*Printer::invAxisStepsPerMM[Z_AXIS]); + } else { // G33 +#if defined(Z_PROBE_MIN_TEMPERATURE) && Z_PROBE_MIN_TEMPERATURE && Z_PROBE_REQUIRES_HEATING + float actTemp[NUM_EXTRUDER]; + for(int i = 0; i < NUM_EXTRUDER; i++) + actTemp[i] = extruder[i].tempControl.targetTemperatureC; + Printer::moveToReal(IGNORE_COORDINATE,IGNORE_COORDINATE,RMath::max(EEPROM::zProbeHeight(),static_cast(ZHOME_HEAT_HEIGHT)),IGNORE_COORDINATE,Printer::homingFeedrate[Z_AXIS]); + Commands::waitUntilEndOfAllMoves(); +#if ZHOME_HEAT_ALL + for(int i = 0; i < NUM_EXTRUDER; i++) { + Extruder::setTemperatureForExtruder(RMath::max(actTemp[i],static_cast(ZPROBE_MIN_TEMPERATURE)),i,false,false); } + for(int i = 0; i < NUM_EXTRUDER; i++) { + if(extruder[i].tempControl.currentTemperatureC < ZPROBE_MIN_TEMPERATURE) + Extruder::setTemperatureForExtruder(RMath::max(actTemp[i],static_cast(ZPROBE_MIN_TEMPERATURE)),i,false,true); + } +#else + if(extruder[Extruder::current->id].tempControl.currentTemperatureC < ZPROBE_MIN_TEMPERATURE) + Extruder::setTemperatureForExtruder(RMath::max(actTemp[Extruder::current->id],static_cast(ZPROBE_MIN_TEMPERATURE)),Extruder::current->id,false,true); +#endif +#endif + float oldFeedrate = Printer::feedrate; + if(!Printer::measureDistortion()) { + GCode::fatalError(PSTR("G33 failed!")); + break; + } + Printer::feedrate = oldFeedrate; +#if defined(Z_PROBE_MIN_TEMPERATURE) && Z_PROBE_MIN_TEMPERATURE && Z_PROBE_REQUIRES_HEATING +#if ZHOME_HEAT_ALL + for(int i = 0; i < NUM_EXTRUDER; i++) + Extruder::setTemperatureForExtruder(actTemp[i],i,false,false); + for(int i = 0; i < NUM_EXTRUDER; i++) + Extruder::setTemperatureForExtruder(actTemp[i],i,false, actTemp[i] > MAX_ROOM_TEMPERATURE); +#else + Extruder::setTemperatureForExtruder(actTemp[Extruder::current->id], Extruder::current->id, false, actTemp[Extruder::current->id] > MAX_ROOM_TEMPERATURE); +#endif +#endif } - else - Com::printErrorFLN(PSTR("First move to touch at x,y=0,0 to auto-set radius.")); } - } - else - { - bool tooBig = false; - if (com->hasX()) - { - if (abs(com->X) <= 10) - EEPROM::setTowerXFloor(com->X + currentZmm + Printer::xMin); - else tooBig = true; + break; +#endif +#endif +//Davinci AiO specific +#if DAVINCI == 4 + case 50: //G50 : reset origin position + getMotorDriver(0)->setCurrentAs(0); + break; +#endif + case 90: // G90 + Printer::relativeCoordinateMode = false; + if(com->internalCommand) + Com::printInfoFLN(PSTR("Absolute positioning")); + break; + case 91: // G91 + Printer::relativeCoordinateMode = true; + if(com->internalCommand) + Com::printInfoFLN(PSTR("Relative positioning")); + break; + case 92: { // G92 + float xOff = Printer::coordinateOffset[X_AXIS]; + float yOff = Printer::coordinateOffset[Y_AXIS]; + float zOff = Printer::coordinateOffset[Z_AXIS]; + if(com->hasX()) xOff = Printer::convertToMM(com->X) - Printer::currentPosition[X_AXIS]; + if(com->hasY()) yOff = Printer::convertToMM(com->Y) - Printer::currentPosition[Y_AXIS]; + if(com->hasZ()) zOff = Printer::convertToMM(com->Z) - Printer::currentPosition[Z_AXIS]; + Printer::setOrigin(xOff, yOff, zOff); + if(com->hasE()) { + Printer::destinationSteps[E_AXIS] = Printer::currentPositionSteps[E_AXIS] = Printer::convertToMM(com->E) * Printer::axisStepsPerMM[E_AXIS]; + } } - if (com->hasY()) - { - if (abs(com->Y) <= 10) - EEPROM::setTowerYFloor(com->Y + currentZmm + Printer::yMin); - else tooBig = true; + break; +#if DRIVE_SYSTEM == DELTA + case 100: { // G100 Calibrate floor or rod radius + // Using manual control, adjust hot end to contact floor. + // G100 No action. Avoid accidental floor reset. + // G100 [X] [Y] [Z] set floor for argument passed in. Number ignored and may be absent. + // G100 R with X Y or Z flag error, sets only floor or radius, not both. + // G100 R[n] Add n to radius. Adjust to be above floor if necessary + // G100 R[0] set radius based on current z measurement. Moves to (0,0,0) + float currentZmm = Printer::currentPosition[Z_AXIS]; + if (currentZmm/Printer::zLength > 0.1) { + Com::printErrorFLN(PSTR("Calibration code is limited to bottom 10% of Z height")); + break; + } + if (com->hasR()) { + if (com->hasX() || com->hasY() || com->hasZ()) + Com::printErrorFLN(PSTR("Cannot set radius and floor at same time.")); + else if (com->R != 0) { + //add r to radius + if (abs(com->R) <= 10) EEPROM::incrementRodRadius(com->R); + else Com::printErrorFLN(PSTR("Calibration movement is limited to 10mm.")); + } else { + // auto set radius. Head must be at 0,0 and touching + // Z offset will be corrected for. + if (Printer::currentPosition[X_AXIS] == 0 + && Printer::currentPosition[Y_AXIS] == 0) { + if(Printer::isLargeMachine()) { + // calculate radius assuming we are at surface + // If Z is greater than 0 it will get calculated out for correct radius + // Use either A or B tower as they anchor x Cartesian axis and always have + // Radius distance to center in simplest set up. + float h = Printer::deltaDiagonalStepsSquaredB.f; + unsigned long bSteps = Printer::currentNonlinearPositionSteps[B_TOWER]; + // The correct Rod Radius would put us here at z==0 and B height is + // square root (rod length squared minus rod radius squared) + // Reverse that to get calculated Rod Radius given B height + h -= RMath::sqr((float)bSteps); + h = sqrt(h); + EEPROM::setRodRadius(h*Printer::invAxisStepsPerMM[Z_AXIS]); + } else { + // calculate radius assuming we are at surface + // If Z is greater than 0 it will get calculated out for correct radius + // Use either A or B tower as they acnhor x cartesian axis and always have + // Radius distance to center in simplest set up. + unsigned long h = Printer::deltaDiagonalStepsSquaredB.l; + unsigned long bSteps = Printer::currentNonlinearPositionSteps[B_TOWER]; + // The correct Rod Radius would put us here at z==0 and B height is + // square root (rod length squared minus rod radius squared) + // Reverse that to get calculated Rod Radius given B height + h -= RMath::sqr(bSteps); + h = SQRT(h); + EEPROM::setRodRadius(h*Printer::invAxisStepsPerMM[Z_AXIS]); + } + } else + Com::printErrorFLN(PSTR("First move to touch at x,y=0,0 to auto-set radius.")); + } + } else { + bool tooBig = false; + if (com->hasX()) { + if (abs(com->X) <= 10) + EEPROM::setTowerXFloor(com->X + currentZmm + Printer::xMin); + else tooBig = true; + } + if (com->hasY()) { + if (abs(com->Y) <= 10) + EEPROM::setTowerYFloor(com->Y + currentZmm + Printer::yMin); + else tooBig = true; + } + if (com->hasZ()) { + if (abs(com->Z) <= 10) + EEPROM::setTowerZFloor(com->Z + currentZmm + Printer::zMin); + else tooBig = true; + } + if (tooBig) + Com::printErrorFLN(PSTR("Calibration movement is limited to 10mm.")); + } + // after adjusting zero, physical position is out of sync with memory position + // this could cause jerky movement or push head into print surface. + // moving gets back into safe zero'ed position with respect to newle set floor or Radius. + Printer::moveTo(IGNORE_COORDINATE,IGNORE_COORDINATE,12.0,IGNORE_COORDINATE,IGNORE_COORDINATE); + break; } - if (com->hasZ()) - { - if (abs(com->Z) <= 10) - EEPROM::setTowerZFloor(com->Z + currentZmm + Printer::zMin); - else tooBig = true; + case 131: { // G131 Remove offset + float cx,cy,cz; + Printer::realPosition(cx,cy,cz); + float oldfeedrate = Printer::feedrate; + Printer::offsetX = 0; + Printer::offsetY = 0; + Printer::moveToReal(cx,cy,cz,IGNORE_COORDINATE,Printer::homingFeedrate[X_AXIS]); + Printer::feedrate = oldfeedrate; + Printer::updateCurrentPosition(); } - if (tooBig) - Com::printErrorFLN(PSTR("Calibration movement is limited to 10mm.")); - } - // after adjusting zero, physical position is out of sync with memory position - // this could cause jerky movement or push head into print surface. - // moving gets back into safe zero'ed position with respect to newle set floor or Radius. - Printer::moveTo(IGNORE_COORDINATE,IGNORE_COORDINATE,12.0,IGNORE_COORDINATE,IGNORE_COORDINATE); - break; - } - case 131: // G131 Remove offset - { - float cx,cy,cz; - Printer::realPosition(cx,cy,cz); - float oldfeedrate = Printer::feedrate; - Printer::offsetX = 0; - Printer::offsetY = 0; - Printer::moveToReal(cx,cy,cz,IGNORE_COORDINATE,Printer::homingFeedrate[X_AXIS]); - Printer::feedrate = oldfeedrate; - Printer::updateCurrentPosition(); - } - break; - case 132: // G132 Calibrate endstop offsets - { -// This has the probably unintended side effect of turning off leveling. - Printer::setAutolevelActive(false); // don't let transformations change result! - Printer::coordinateOffset[X_AXIS] = 0; - Printer::coordinateOffset[Y_AXIS] = 0; - Printer::coordinateOffset[Z_AXIS] = 0; -// I think this is coded incorrectly, as it depends on the biginning position of the -// of the hot end, and so should first move to x,y,z= 0,0,0, but as that may not -// be possible if the printer is not in the homes/zeroed state, the printer -// cannot safely move to 0 z coordinate without crashong into the print surface. -// so other than commenting, I'm not meddling. -// but you will always get different counts from different positions. - Printer::deltaMoveToTopEndstops(Printer::homingFeedrate[Z_AXIS]); - int32_t m = RMath::max(Printer::stepsRemainingAtXHit,RMath::max(Printer::stepsRemainingAtYHit,Printer::stepsRemainingAtZHit)); - int32_t offx = m-Printer::stepsRemainingAtXHit; - int32_t offy = m-Printer::stepsRemainingAtYHit; - int32_t offz = m-Printer::stepsRemainingAtZHit; - Com::printFLN(Com::tTower1,offx); - Com::printFLN(Com::tTower2,offy); - Com::printFLN(Com::tTower3,offz); + break; + case 132: { // G132 Calibrate endstop offsets + // This has the probably unintended side effect of turning off leveling. + Printer::setAutolevelActive(false); // don't let transformations change result! + Printer::coordinateOffset[X_AXIS] = 0; + Printer::coordinateOffset[Y_AXIS] = 0; + Printer::coordinateOffset[Z_AXIS] = 0; + // I think this is coded incorrectly, as it depends on the biginning position of the + // of the hot end, and so should first move to x,y,z= 0,0,0, but as that may not + // be possible if the printer is not in the homes/zeroed state, the printer + // cannot safely move to 0 z coordinate without crashong into the print surface. + // so other than commenting, I'm not meddling. + // but you will always get different counts from different positions. + Printer::deltaMoveToTopEndstops(Printer::homingFeedrate[Z_AXIS]); + int32_t m = RMath::max(Printer::stepsRemainingAtXHit,RMath::max(Printer::stepsRemainingAtYHit,Printer::stepsRemainingAtZHit)); + int32_t offx = m - Printer::stepsRemainingAtXHit; + int32_t offy = m - Printer::stepsRemainingAtYHit; + int32_t offz = m - Printer::stepsRemainingAtZHit; + Com::printFLN(Com::tTower1, offx); + Com::printFLN(Com::tTower2, offy); + Com::printFLN(Com::tTower3, offz); #if EEPROM_MODE != 0 - if(com->hasS() && com->S > 0) - { - EEPROM::setDeltaTowerXOffsetSteps(offx); - EEPROM::setDeltaTowerYOffsetSteps(offy); - EEPROM::setDeltaTowerZOffsetSteps(offz); - } + if(com->hasS() && com->S > 0) { + EEPROM::setDeltaTowerXOffsetSteps(offx); + EEPROM::setDeltaTowerYOffsetSteps(offy); + EEPROM::setDeltaTowerZOffsetSteps(offz); + } #endif - Printer::homeAxis(true,true,true); - } - break; - case 133: // G133 Measure steps to top - { - bool oldAuto = Printer::isAutolevelActive(); - Printer::setAutolevelActive(false); // don't let transformations change result! - Printer::currentPositionSteps[X_AXIS] = 0; - Printer::currentPositionSteps[Y_AXIS] = 0; - Printer::currentPositionSteps[Z_AXIS] = 0; - Printer::coordinateOffset[X_AXIS] = 0; - Printer::coordinateOffset[Y_AXIS] = 0; - Printer::coordinateOffset[Z_AXIS] = 0; - Printer::currentDeltaPositionSteps[A_TOWER] = 0; - Printer::currentDeltaPositionSteps[B_TOWER] = 0; - Printer::currentDeltaPositionSteps[C_TOWER] = 0; -// similar to comment above, this will get a different answer from any different starting point -// so it is unclear how this is helpful. It must start at a well defined point. - Printer::deltaMoveToTopEndstops(Printer::homingFeedrate[Z_AXIS]); - int32_t offx = HOME_DISTANCE_STEPS-Printer::stepsRemainingAtXHit; - int32_t offy = HOME_DISTANCE_STEPS-Printer::stepsRemainingAtYHit; - int32_t offz = HOME_DISTANCE_STEPS-Printer::stepsRemainingAtZHit; - Com::printFLN(Com::tTower1,offx); - Com::printFLN(Com::tTower2,offy); - Com::printFLN(Com::tTower3,offz); - Printer::setAutolevelActive(oldAuto); - Printer::homeAxis(true,true,true); - } - break; - case 134: // G134 - Com::printF(PSTR("CompDelta:"),Printer::currentDeltaPositionSteps[A_TOWER]); - Com::printF(Com::tComma,Printer::currentDeltaPositionSteps[B_TOWER]); - Com::printFLN(Com::tComma,Printer::currentDeltaPositionSteps[C_TOWER]); + PrintLine::moveRelativeDistanceInSteps(0, 0, -5*Printer::axisStepsPerMM[Z_AXIS], 0, Printer::homingFeedrate[Z_AXIS], true, true); + Printer::homeAxis(true,true,true); + } + break; + case 133: { // G133 Measure steps to top + bool oldAuto = Printer::isAutolevelActive(); + Printer::setAutolevelActive(false); // don't let transformations change result! + Printer::currentPositionSteps[X_AXIS] = 0; + Printer::currentPositionSteps[Y_AXIS] = 0; + Printer::currentPositionSteps[Z_AXIS] = 0; + Printer::coordinateOffset[X_AXIS] = 0; + Printer::coordinateOffset[Y_AXIS] = 0; + Printer::coordinateOffset[Z_AXIS] = 0; + Printer::currentNonlinearPositionSteps[A_TOWER] = 0; + Printer::currentNonlinearPositionSteps[B_TOWER] = 0; + Printer::currentNonlinearPositionSteps[C_TOWER] = 0; + // similar to comment above, this will get a different answer from any different starting point + // so it is unclear how this is helpful. It must start at a well defined point. + Printer::deltaMoveToTopEndstops(Printer::homingFeedrate[Z_AXIS]); + int32_t offx = HOME_DISTANCE_STEPS - Printer::stepsRemainingAtXHit; + int32_t offy = HOME_DISTANCE_STEPS - Printer::stepsRemainingAtYHit; + int32_t offz = HOME_DISTANCE_STEPS - Printer::stepsRemainingAtZHit; + Com::printFLN(Com::tTower1,offx); + Com::printFLN(Com::tTower2,offy); + Com::printFLN(Com::tTower3,offz); + Printer::setAutolevelActive(oldAuto); + PrintLine::moveRelativeDistanceInSteps(0, 0, Printer::axisStepsPerMM[Z_AXIS] * -ENDSTOP_Z_BACK_MOVE, 0, Printer::homingFeedrate[Z_AXIS] / ENDSTOP_X_RETEST_REDUCTION_FACTOR, true, false); + Printer::homeAxis(true,true,true); + } + break; + case 135: // G135 + Com::printF(PSTR("CompDelta:"),Printer::currentNonlinearPositionSteps[A_TOWER]); + Com::printF(Com::tComma,Printer::currentNonlinearPositionSteps[B_TOWER]); + Com::printFLN(Com::tComma,Printer::currentNonlinearPositionSteps[C_TOWER]); #ifdef DEBUG_REAL_POSITION - Com::printF(PSTR("RealDelta:"),Printer::realDeltaPositionSteps[A_TOWER]); - Com::printF(Com::tComma,Printer::realDeltaPositionSteps[B_TOWER]); - Com::printFLN(Com::tComma,Printer::realDeltaPositionSteps[C_TOWER]); + Com::printF(PSTR("RealDelta:"),Printer::realDeltaPositionSteps[A_TOWER]); + Com::printF(Com::tComma,Printer::realDeltaPositionSteps[B_TOWER]); + Com::printFLN(Com::tComma,Printer::realDeltaPositionSteps[C_TOWER]); #endif - Printer::updateCurrentPosition(); - Com::printF(PSTR("PosFromSteps:")); - printCurrentPosition(PSTR("G134 ")); - break; + Printer::updateCurrentPosition(); + Com::printF(PSTR("PosFromSteps:")); + printCurrentPosition(PSTR("G134 ")); + break; #endif // DRIVE_SYSTEM - default: - if(Printer::debugErrors()) - { - Com::printF(Com::tUnknownCommand); - com->printCommand(); - } +#if FEATURE_Z_PROBE && NUM_EXTRUDER > 1 + case 134: + { // - G134 Px Sx Zx - Calibrate nozzle height difference (need z probe in nozzle!) Px = reference extruder, Sx = only measure extrude x against reference, Zx = add to measured z distance for Sx for correction. + float z = com->hasZ() ? com->Z : 0; + int p = com->hasP() ? com->P : 0; + int s = com->hasS() ? com->S : -1; + int startExtruder = Extruder::current->id; + extruder[p].zOffset = 0; + float mins[NUM_EXTRUDER],maxs[NUM_EXTRUDER],avg[NUM_EXTRUDER]; + for(int i = 0; i < NUM_EXTRUDER; i++) { // silence unnecessary compiler warning + avg[i] = 0; + } + bool bigError = false; + +#if defined(Z_PROBE_MIN_TEMPERATURE) && Z_PROBE_MIN_TEMPERATURE + float actTemp[NUM_EXTRUDER]; + for(int i = 0; i < NUM_EXTRUDER; i++) + actTemp[i] = extruder[i].tempControl.targetTemperatureC; + Printer::moveToReal(IGNORE_COORDINATE,IGNORE_COORDINATE,ZHOME_HEAT_HEIGHT,IGNORE_COORDINATE,Printer::homingFeedrate[Z_AXIS]); + Commands::waitUntilEndOfAllMoves(); +#if ZHOME_HEAT_ALL + for(int i = 0; i < NUM_EXTRUDER; i++) { + Extruder::setTemperatureForExtruder(RMath::max(actTemp[i],static_cast(ZPROBE_MIN_TEMPERATURE)),i,false,false); + } + for(int i = 0; i < NUM_EXTRUDER; i++) { + if(extruder[i].tempControl.currentTemperatureC < ZPROBE_MIN_TEMPERATURE) + Extruder::setTemperatureForExtruder(RMath::max(actTemp[i],static_cast(ZPROBE_MIN_TEMPERATURE)),i,false,true); + } +#else + if(extruder[Extruder::current->id].tempControl.currentTemperatureC < ZPROBE_MIN_TEMPERATURE) + Extruder::setTemperatureForExtruder(RMath::max(actTemp[Extruder::current->id],static_cast(ZPROBE_MIN_TEMPERATURE)),Extruder::current->id,false,true); +#endif +#endif + +#ifndef G134_REPETITIONS +#define G134_REPETITIONS 3 +#endif +#ifndef G134_PRECISION +#define G134_PRECISION 0.05 +#endif + Printer::startProbing(true); + for(int r = 0; r < G134_REPETITIONS && !bigError; r++) { + Extruder::selectExtruderById(p); + float refHeight = Printer::runZProbe(false,false); + if(refHeight == ILLEGAL_Z_PROBE) { + bigError = true; + break; + } + for(int i = 0; i < NUM_EXTRUDER && !bigError; i++) { + if(i == p) continue; + if(s >= 0 && i != s) continue; + extruder[i].zOffset = 0; + Extruder::selectExtruderById(i); + float height = Printer::runZProbe(false,false); + if(height == ILLEGAL_Z_PROBE) { + bigError = true; + break; + } + float off = (height - refHeight + z); + if(r == 0) { + avg[i] = mins[i] = maxs[i] = off; + } else { + avg[i] += off; + if(off < mins[i]) mins[i] = off; + if(off > maxs[i]) maxs[i] = off; + if(maxs[i] - mins[i] > G134_PRECISION) { + Com::printErrorFLN(PSTR("Deviation between measurements were too big, please repeat.")); + bigError = true; + break; + } + } + } + } + if(!bigError) { + for(int i = 0; i < NUM_EXTRUDER; i++) { + if(s >= 0 && i != s) continue; + extruder[i].zOffset = avg[i] * Printer::axisStepsPerMM[Z_AXIS] / G134_REPETITIONS; + } +#if EEPROM_MODE != 0 + EEPROM::storeDataIntoEEPROM(0); +#endif + } + Extruder::selectExtruderById(startExtruder); + Printer::finishProbing(); +#if defined(Z_PROBE_MIN_TEMPERATURE) && Z_PROBE_MIN_TEMPERATURE +#if ZHOME_HEAT_ALL + for(int i = 0; i < NUM_EXTRUDER; i++) + Extruder::setTemperatureForExtruder(actTemp[i],i,false,false); + for(int i = 0; i < NUM_EXTRUDER; i++) + Extruder::setTemperatureForExtruder(actTemp[i],i,false, actTemp[i] > MAX_ROOM_TEMPERATURE); +#else + Extruder::setTemperatureForExtruder(actTemp[Extruder::current->id], Extruder::current->id, false, actTemp[Extruder::current->id] > MAX_ROOM_TEMPERATURE); +#endif +#endif + } + break; +#endif +#if defined(NUM_MOTOR_DRIVERS) && NUM_MOTOR_DRIVERS > 0 + case 201: + commandG201(*com); + break; + case 202: + commandG202(*com); + break; + case 203: + commandG203(*com); + break; + case 204: + commandG204(*com); + break; +#endif // defined + default: + if(!EVENT_UNHANDLED_G_CODE(com) && Printer::debugErrors()) { + Com::printF(Com::tUnknownCommand); + com->printCommand(); + } } previousMillisCmd = HAL::timeInMilliseconds(); } /** - \brief Execute the G command stored in com. +\brief Execute the G command stored in com. */ -void Commands::processMCode(GCode *com) -{ - uint32_t codenum; //throw away variable - switch( com->M ) - { - +void Commands::processMCode(GCode *com) { + switch( com->M ) { + case 3: // Spindle/laser on +#if defined(SUPPORT_LASER) && SUPPORT_LASER + if(Printer::mode == PRINTER_MODE_LASER) { + if(com->hasS()) + LaserDriver::intensity = constrain(com->S,0,255); + LaserDriver::laserOn = true; + Com::printFLN(PSTR("LaserOn:"),(int)LaserDriver::intensity); + } +#endif // defined +#if defined(SUPPORT_CNC) && SUPPORT_CNC + if(Printer::mode == PRINTER_MODE_CNC) { + waitUntilEndOfAllMoves(); + CNCDriver::spindleOnCW(com->hasS() ? com->S : 0); + } +#endif // defined + break; + case 4: // Spindle CCW +#if defined(SUPPORT_CNC) && SUPPORT_CNC + if(Printer::mode == PRINTER_MODE_CNC) { + waitUntilEndOfAllMoves(); + CNCDriver::spindleOnCCW(com->hasS() ? com->S : 0); + } +#endif // defined + break; + case 5: // Spindle/laser off +#if defined(SUPPORT_LASER) && SUPPORT_LASER + if(Printer::mode == PRINTER_MODE_LASER) { + LaserDriver::laserOn = false; + } +#endif // defined +#if defined(SUPPORT_CNC) && SUPPORT_CNC + if(Printer::mode == PRINTER_MODE_CNC) { + waitUntilEndOfAllMoves(); + CNCDriver::spindleOff(); + } +#endif // defined + break; #if SDSUPPORT - case 20: // M20 - list SD card - sd.ls(); - break; - case 21: // M21 - init SD card - sd.mount(); - break; - case 22: //M22 - release SD card - sd.unmount(); - break; - case 23: //M23 - Select file - if(com->hasString()) - { - sd.fat.chdir(); - sd.selectFile(com->text); - } - break; - case 24: //M24 - Start SD print - sd.startPrint(); - break; - case 25: //M25 - Pause SD print - sd.pausePrint(); - break; - case 26: //M26 - Set SD index - if(com->hasS()) - sd.setIndex(com->S); - break; - case 27: //M27 - Get SD status - sd.printStatus(); - break; - case 28: //M28 - Start SD write - if(com->hasString()) - sd.startWrite(com->text); - break; - case 29: //M29 - Stop SD write - //processed in write to file routine above - //savetosd = false; - break; - case 30: // M30 filename - Delete file - if(com->hasString()) - { - sd.fat.chdir(); - sd.deleteFile(com->text); - } - break; - case 32: // M32 directoryname - if(com->hasString()) - { - sd.fat.chdir(); - sd.makeDirectory(com->text); - } - break; -#endif - case 42: //M42 -Change pin status via gcode - if (com->hasP()) - { - int pin_number = com->P; - for(uint8_t i = 0; i < (uint8_t)sizeof(sensitive_pins); i++) - { - if (pgm_read_byte(&sensitive_pins[i]) == pin_number) - { - pin_number = -1; - break; + case 20: // M20 - list SD card +#if JSON_OUTPUT + if (com->hasString() && com->text[1] == '2') { // " S2 P/folder" + if (com->text[3] == 'P') { + sd.lsJSON(com->text + 4); } + } else sd.ls(); +#else + sd.ls(); +#endif + break; + case 21: // M21 - init SD card + sd.mount(); + break; + case 22: //M22 - release SD card + sd.unmount(); + break; + case 23: //M23 - Select file + if(com->hasString()) { + sd.fat.chdir(); + sd.selectFile(com->text); } - if (pin_number > -1) - { - if(com->hasS()) - { - if(com->S >= 0 && com->S <= 255) - { - pinMode(pin_number, OUTPUT); - digitalWrite(pin_number, com->S); - analogWrite(pin_number, com->S); - Com::printF(Com::tSetOutputSpace, pin_number); - Com::printFLN(Com::tSpaceToSpace,(int)com->S); + break; + case 24: //M24 - Start SD print + sd.startPrint(); + break; + case 25: //M25 - Pause SD print + sd.pausePrint(); + break; + case 26: //M26 - Set SD index + if(com->hasS()) + sd.setIndex(com->S); + break; + case 27: //M27 - Get SD status + sd.printStatus(); + break; + case 28: //M28 - Start SD write + if(com->hasString()) + sd.startWrite(com->text); + break; + case 29: //M29 - Stop SD write + //processed in write to file routine above + //savetosd = false; + break; + case 30: // M30 filename - Delete file + if(com->hasString()) { + sd.fat.chdir(); + sd.deleteFile(com->text); + } + break; + case 32: // M32 directoryname + if(com->hasString()) { + sd.fat.chdir(); + sd.makeDirectory(com->text); + } + break; +#endif +#if JSON_OUTPUT && SDSUPPORT + case 36: // M36 JSON File Info + if (com->hasString()) { + sd.JSONFileInfo(com->text); + } + break; +#endif + case 42: //M42 -Change pin status via gcode + if (com->hasP()) { + int pin_number = com->P; + for(uint8_t i = 0; i < (uint8_t)sizeof(sensitive_pins); i++) { + if (pgm_read_byte(&sensitive_pins[i]) == pin_number) { + pin_number = -1; + break; } - else - Com::printErrorFLN(PSTR("Illegal S value for M42")); } - else - { - pinMode(pin_number, INPUT_PULLUP); - Com::printF(Com::tReadInput, pin_number); - Com::printFLN(Com::tSpaceIsSpace, digitalRead(pin_number)); + if (pin_number > -1) { + if(com->hasS()) { + if(com->S >= 0 && com->S <= 255) { + pinMode(pin_number, OUTPUT); + digitalWrite(pin_number, com->S); + analogWrite(pin_number, com->S); + Com::printF(Com::tSetOutputSpace, pin_number); + Com::printFLN(Com::tSpaceToSpace,(int)com->S); + } else + Com::printErrorFLN(PSTR("Illegal S value for M42")); + } else { + pinMode(pin_number, INPUT_PULLUP); + Com::printF(Com::tSpaceToSpace, pin_number); + Com::printFLN(Com::tSpaceIsSpace, digitalRead(pin_number)); + } + } else { + Com::printErrorFLN(PSTR("Pin can not be set by M42, is in sensitive pins! ")); } } - else - { - Com::printErrorFLN(PSTR("Pin can not be set by M42, may in invalid or in use. ")); - } - } - break; + break; //Davinci Specific, Stop Printing - case 50://kill print - uid.executeAction(UI_ACTION_SD_STOP,true); - break; - case 80: // M80 - ATX Power On + case 50://kill print + uid.executeAction(UI_ACTION_SD_STOP,true); + break; +#if DAVINCI == 4 + case 17: + getMotorDriver(0)->disable(); + break; + case 18: + getMotorDriver(0)->enable(); + break; + case 19: //M19 home motor + if (Home_motor(0, TURNTABLE_HOME_SPEED, TABLE_HOME_PIN, TURNTABLE_PERIMETER+1) ) Com::printFLN("Success Home motor ",0); + else Com::printFLN("Failed Home motor ",0); + break; +//Davinci AiO Specific +#if DAVINCI == 4 + case 60: + //M60 Tn is reading ldr as no ldr - just return fake value, hope 500 is ok + Com::printFLN("",500); + break; +#endif + case 70: + if (com->hasT() && com->T == 1) WRITE(LASER2_PIN, LOW); + else WRITE(LASER1_PIN, LOW); + break; + case 71: + if (com->hasT() && com->T == 1) WRITE(LASER2_PIN, HIGH); + else WRITE(LASER1_PIN, HIGH); + break; + case 72: + if (com->hasT() && com->T == 1) WRITE(LED_LASER2_PIN, LOW); + else WRITE(LED_LASER1_PIN, LOW); + break; + case 73: + if (com->hasT() && com->T == 1) WRITE(LED_LASER2_PIN, HIGH); + else WRITE(LED_LASER1_PIN, HIGH); + break; +#endif + case 80: // M80 - ATX Power On #if PS_ON_PIN>-1 - Commands::waitUntilEndOfAllMoves(); - previousMillisCmd = HAL::timeInMilliseconds(); - SET_OUTPUT(PS_ON_PIN); //GND - Printer::setPowerOn(true); - WRITE(PS_ON_PIN, (POWER_INVERTING ? HIGH : LOW)); + Commands::waitUntilEndOfAllMoves(); + previousMillisCmd = HAL::timeInMilliseconds(); + SET_OUTPUT(PS_ON_PIN); //GND + Printer::setPowerOn(true); + WRITE(PS_ON_PIN, (POWER_INVERTING ? HIGH : LOW)); #endif - break; - case 81: // M81 - ATX Power Off + break; + case 81: // M81 - ATX Power Off #if PS_ON_PIN>-1 - Commands::waitUntilEndOfAllMoves(); - SET_OUTPUT(PS_ON_PIN); //GND - Printer::setPowerOn(false); - WRITE(PS_ON_PIN,(POWER_INVERTING ? LOW : HIGH)); -#endif - break; - case 82: // M82 - Printer::relativeExtruderCoordinateMode = false; - break; - case 83: // M83 - Printer::relativeExtruderCoordinateMode = true; - break; - case 84: // M84 - if(com->hasS()) - { - stepperInactiveTime = com->S * 1000; - } - else - { Commands::waitUntilEndOfAllMoves(); - Printer::kill(true); - } - break; - case 85: // M85 - if(com->hasS()) - maxInactiveTime = (int32_t)com->S * 1000; - else - maxInactiveTime = 0; - break; - case 92: // M92 - if(com->hasX()) Printer::axisStepsPerMM[X_AXIS] = com->X; - if(com->hasY()) Printer::axisStepsPerMM[Y_AXIS] = com->Y; - if(com->hasZ()) Printer::axisStepsPerMM[Z_AXIS] = com->Z; - Printer::updateDerivedParameter(); - if(com->hasE()) - { - Extruder::current->stepsPerMM = com->E; - Extruder::selectExtruderById(Extruder::current->id); - } - break; - case 99: // M99 S