aboutsummaryrefslogtreecommitdiffstats
path: root/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.h
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2019-07-03 07:54:39 -0700
committerDrashna Jaelre <drashna@live.com>2019-07-03 07:54:49 -0700
commit110622eaa2787cc54818083d4243653b088e5b5a (patch)
treeb1637e4dc8d8aa13e9face4998cf25ae620361e5 /Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.h
parentd0fd80affba97b37eb00c650e87cb5982a4f260e (diff)
parent5ba628d10b54d58d445896290ba9799bd76a73b3 (diff)
downloadlufa-110622eaa2787cc54818083d4243653b088e5b5a.tar.gz
lufa-110622eaa2787cc54818083d4243653b088e5b5a.tar.bz2
lufa-110622eaa2787cc54818083d4243653b088e5b5a.zip
Merge remote-tracking branch 'abcminiuser/master'
Diffstat (limited to 'Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.h')
-rw-r--r--Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.h22
1 files changed, 20 insertions, 2 deletions
diff --git a/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.h b/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.h
index 44b339762..a5fa0a528 100644
--- a/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.h
+++ b/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.h
@@ -1,13 +1,13 @@
/*
LUFA Library
- Copyright (C) Dean Camera, 2017.
+ Copyright (C) Dean Camera, 2019.
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
/*
- Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+ Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com)
Permission to use, copy, modify, distribute, and sell this
software and its documentation for any purpose is hereby granted
@@ -38,6 +38,7 @@
/* Includes: */
#include <avr/io.h>
+ #include <util/atomic.h>
#include <util/delay.h>
#include <LUFA/Drivers/USB/USB.h>
@@ -45,6 +46,22 @@
#include "../V2Protocol.h"
#include "Config/AppConfig.h"
+ /* Macros: */
+ /** Calibration clock frequency for target OSCCAL calibration, see AVR053 application note. */
+ #define ISPPROTOCOL_CALIB_CLOCK_HZ 32768
+
+ /** Internal timer ticks per calibration clock cycle, see AVR053 application note. */
+ #define ISPPROTOCOL_CALIB_TICKS ( (F_CPU + ISPPROTOCOL_CALIB_CLOCK_HZ) / (2 * ISPPROTOCOL_CALIB_CLOCK_HZ) )
+
+ /** Per AVR053, calibration guaranteed to take 1024 cycles (2048 half-cycles) or fewer;
+ * add some cycles for response delay (5-10 after success) and response itself.
+ */
+ #define ISPPROTOCOL_CALIB_HALF_CYCLE_LIMIT (2*1024 + 50)
+
+ /** Per AVR053, target will toggle I/O pin 8 times to indicate a successful clock calibration.
+ */
+ #define ISPPROTOCOL_CALIB_SUCCESS_TOGGLE_NUM 8
+
/* Preprocessor Checks: */
#if ((BOARD == BOARD_XPLAIN) || (BOARD == BOARD_XPLAIN_REV1))
#undef ENABLE_ISP_PROTOCOL
@@ -73,6 +90,7 @@
void ISPProtocol_ProgramMemory(const uint8_t V2Command);
void ISPProtocol_ReadMemory(const uint8_t V2Command);
void ISPProtocol_ChipErase(void);
+ void ISPProtocol_Calibrate(void);
void ISPProtocol_ReadFuseLockSigOSCCAL(const uint8_t V2Command);
void ISPProtocol_WriteFuseLock(const uint8_t V2Command);
void ISPProtocol_SPIMulti(void);