diff options
author | skullydazed <skullydazed@users.noreply.github.com> | 2019-07-07 10:59:58 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-07 10:59:58 -0700 |
commit | 04a7f66421ac141a8927491fa61e4f8e425accad (patch) | |
tree | 027bafce1cd12c31e84a758bea24d5fdb78226cb /Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.h | |
parent | d0fd80affba97b37eb00c650e87cb5982a4f260e (diff) | |
parent | 57edb9b0976fad82bfd0384b16c6c3269e0d19ce (diff) | |
download | lufa-04a7f66421ac141a8927491fa61e4f8e425accad.tar.gz lufa-04a7f66421ac141a8927491fa61e4f8e425accad.tar.bz2 lufa-04a7f66421ac141a8927491fa61e4f8e425accad.zip |
Merge pull request #2 from drashna/master
Update LUFA repo from upstream
Diffstat (limited to 'Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.h')
-rw-r--r-- | Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.h | 22 |
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); |