pwm.c.svn-base

来自「AVR单片机下」· SVN-BASE 代码 · 共 72 行

SVN-BASE
72
字号
/*                ****ROBOCON 2009 | BUPT TEAM******* * ------------------------------------------------------------------------ * FileName   : pwm.c * Version    : 1.0 * Brief      : * Code by    : Leaf * Date       : Tue Mar 31 00:05:05 2009 * Note       : * * * ------------------------------------------------------------------------ */
#include "lib_bupt.h"
#ifdef PWM_H_INCLUDED
const UINT16 PWM_MAX_CTR     =     0x3ff;

void inline pwm1_init(void)
{
	TCCR1B =  0x00; //stop
	TCNT1  =  0xfc01;
	OCR1A  =  0;
	OCR1B  =  0;
	OCR1C  =  0;
	ICR1   =  PWM_MAX_CTR;
	TCCR1A =  0xA8;
	TCCR1B =  0x12; //start Timer
	PORTB  &= 0x1f;
	DDRB   |= 0xe0;
}

void inline pwm_pb7(UINT16 duty){
	OCR1C = duty & PWM_MAX_CTR;
}

void inline pwm_pb6(UINT16 duty){
	OCR1B = duty & PWM_MAX_CTR;
}

void inline pwm_pb5(UINT16 duty){
	OCR1A = duty & PWM_MAX_CTR;
}


/* PWM Scale functions */

/* PWM Scale Generation Algorithm*/
UINT16 pwmScale(UINT8 scale){
	UINT32 pwmctr = (PWM_MAX_CTR - 1);	pwmctr *= scale;
	pwmctr /= 100;
	return (UINT16)pwmctr;
}

/* Set PB7 PWM scale */
void inline pwmscale_pb7(UINT8 scale){
	pwm_pb7(pwmScale(scale));
}

/* Set PB7 PWM scale */
void inline pwmscale_pb6(UINT8 scale){
	pwm_pb6(pwmScale(scale));
}

/* Set PB7 PWM scale */
void inline pwmscale_pb5(UINT8 scale){
	pwm_pb5(pwmScale(scale));
}
#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?