⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hal_pwm.c

📁 epson公司的一个关于s1d13706的低层驱动程序
💻 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 + -