
1. Z-probing is now done in two stages: a fast stage at the configured home feed rate until within 10% of the target value, then a slow stage at 20% of that feed rate. 2. Provisional support for ultrasonic Z-probe. 3. Added calibration temperature and height temperature coefficient to Z probe parameters. 4. Z-probe parameters and Z-probe type are now saved to flash memory so that they survive power-off and reset cycles. Separate parameters are retained for IR and ultrasonic probes in case both are fitted. 5. Fixed issue with doing slow Z-moves immediately after Z-homing or probing.
52 lines
1.5 KiB
C++
52 lines
1.5 KiB
C++
/*
|
|
DueFlashStorage saves non-volatile data for Arduino Due.
|
|
The library is made to be similar to EEPROM library
|
|
Uses flash block 1 per default.
|
|
|
|
Note: uploading new software will erase all flash so data written to flash
|
|
using this library will not survive a new software upload.
|
|
|
|
Inspiration from Pansenti at https://github.com/Pansenti/DueFlash
|
|
Rewritten and modified by Sebastian Nilsson
|
|
Further modified up by David Crocker
|
|
*/
|
|
|
|
|
|
#ifndef DUEFLASHSTORAGE_H
|
|
#define DUEFLASHSTORAGE_H
|
|
|
|
#include <Arduino.h>
|
|
#include "flash_efc.h"
|
|
#include "efc.h"
|
|
|
|
// 1Kb of data
|
|
#define DATA_LENGTH ((IFLASH1_PAGE_SIZE/sizeof(byte))*4)
|
|
|
|
// Choose a start address close to the top of the Flash 1 memory space
|
|
#define FLASH_START ((byte *)(IFLASH1_ADDR + IFLASH1_SIZE - DATA_LENGTH))
|
|
|
|
// FLASH_DEBUG can be enabled to get debugging information displayed.
|
|
//#define FLASH_DEBUG
|
|
|
|
#ifdef FLASH_DEBUG
|
|
#define _FLASH_DEBUG(x) Serial.print(x);
|
|
#else
|
|
#define _FLASH_DEBUG(x)
|
|
#endif
|
|
|
|
// DueFlash is the main namespace for flash functions
|
|
namespace DueFlashStorage {
|
|
void init();
|
|
|
|
// write() writes the specified amount of data into flash.
|
|
// flashStart is the address in memory where the write should start
|
|
// data is a pointer to the data to be written
|
|
// dataLength is length of data in bytes
|
|
|
|
byte read(uint32_t address);
|
|
void read(uint32_t address, void *data, uint32_t dataLength);
|
|
bool write(uint32_t address, byte value);
|
|
bool write(uint32_t address, const void *data, uint32_t dataLength);
|
|
};
|
|
|
|
#endif
|