hvpp.c
来自「采用mega16设计的avr单片机编程工具」· C语言 代码 · 共 99 行
C
99 行
////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file HVPP.c
/// @author Simon Qian(webmaster@SimonQian.com)
/// @date Last Update on 2008-04-07
/// @brief HVPP Programming Protocol for AVR
/// @par license
/// AVRminiProg is distributed under the terms and conditions of GPLv2, see License.txt
////////////////////////////////////////////////////////////////////////////////////////////////////
#include <avr/io.h>
#include "../../../type.h"
#include "../../../app_cfg.h"
#include "../../../MCU/gpio.h"
#include "../../../Delay/delay.h"
#include "../HV.h"
#include "HVPP.h"
#if AVRP_HVPP_SHOULD_ENABLE
extern uint8 hvControlStack[32];
/// HVPP Change Control Line
/// @param[in] mode change to mode
void HVPP_ChangeMode(uint8 mode)
{
HVPP_CTRL_Out(mode);
}
/// HVPP Write Data
/// @param[in] mode Write data in mode
/// @param[in] data Data to write
/// @return Success
uint8 HVPP_WriteData(uint8 mode,uint8 data)
{
HVPP_ChangeMode(mode);
HVPP_DATA_SetOutput();
HVPP_DATA_Out(data);
#ifdef HVPP_SignalDelay_InUS
DelayUS(HVPP_SignalDelay_InUS);
#endif
HVPP_XTAL1_PPulse();
#ifdef HVPP_SignalDelay_InUS
DelayUS(HVPP_SignalDelay_InUS);
#endif
return HVPP_Success;
}
/// HVPP Initialization
/// @return
void HVPP_Init(void)
{
HV_Init();
// HVPP_DATA_SetInput();
HVPP_XTAL1_Clr();
HVPP_XTAL1_SetOutput();
HVPP_CTRL_Out(hvControlStack[0]);
HVPP_CTRL_SetOutput();
}
/// HVPP Finilization
/// @return
void HVPP_Fini(void)
{
HV_Fini();
HVPP_DATA_SetInput();
HVPP_CTRL_SetInput();
HVPP_XTAL1_SetInput();
HVPP_DATA_Out(0);
HVPP_CTRL_Out(0);
HVPP_XTAL1_Clr();
}
/// HVPP Wait Ready
/// @return Ready or Not
uint8 HVPP_RDY_Wait(void)
{
uint16 dly = 0xFFFF;
while(!HVPP_RDY_Get() && (--dly > 0));
if(dly)
return HVPP_Success;
else
return HVPP_Error;
}
#endif // #if AVRP_HVPP_SHOULD_ENABLE
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?