📄 hal_pwm.c
字号:
/*
**===========================================================================
** HAL_PWM.C
**---------------------------------------------------------------------------
** Copyright (c) 2000, 2001 Epson Research and Development, Inc.
** All Rights Reserved.
**===========================================================================
*/
#include "hal.h"
#include "nonsefns.h"
/*-------------------------------------------------------------------------*/
static const char Revision[] = "HAL_PWM.C=$Revision: 3 $";
/*-------------------------------------------------------------------------*/
void sePwmEnable(int enable)
{
int reg;
reg = seReadRegByte(REG_PWM_CV_CLOCK_CONTROL);
if (enable)
seWriteRegByte(REG_PWM_CV_CLOCK_CONTROL, reg | 0x10);
else
seWriteRegByte(REG_PWM_CV_CLOCK_CONTROL, reg & ~0x10);
}
/*-------------------------------------------------------------------------*/
void seCvEnable(int enable)
{
int reg;
reg = seReadRegByte(REG_PWM_CV_CLOCK_CONTROL);
if (enable)
seWriteRegByte(REG_PWM_CV_CLOCK_CONTROL, reg | 0x01);
else
seWriteRegByte(REG_PWM_CV_CLOCK_CONTROL, reg & ~0x01);
}
/*-------------------------------------------------------------------------*/
//
// ClkSource: CLKI or CLKI2
// ClkDivide: 0x00 to 0x0c (clock divide is 2^ClkDivide)
// DutyCycle: 0 to 255
//
void sePwmControl(CLOCKSELECT ClkSource, int ClkDivide, int DutyCycle)
{
BYTE reg;
if (ClkSource == CLKI2)
reg = 0x01;
else
reg = 0x00;
reg |= ((ClkDivide << 4) & 0xf0);
seWriteRegByte(REG_PWM_CV_CLOCK_CONFIG, reg);
seWriteRegByte(REG_PWM_CLOCK_DUTY_CYCLE, (BYTE) DutyCycle);
}
/*-------------------------------------------------------------------------*/
//
// ClkSource: CLKI or CLKI2
// ClkDivide: 0x00 to 0x0c (clock divide is 2^ClkDivide)
// BurstLength: 1 to 256
//
void seCvControl(CLOCKSELECT ClkSource, int ClkDivide, int BurstLength)
{
BYTE reg;
if (ClkSource == CLKI2)
reg = 0x01;
else
reg = 0x00;
reg |= ((ClkDivide << 4) & 0xf0);
seWriteRegByte(REG_PWM_CV_CLOCK_CONFIG, reg);
if (BurstLength < 1)
BurstLength = 1;
else if (BurstLength > 256)
BurstLength = 256;
seWriteRegByte(REG_CV_CLOCK_BURST_LENGTH, BurstLength - 1);
}
/*-------------------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -