/************************** Copyright (c) **********************************
|
** FUZHOU FUGUANG ELECTRONICS Co.,LTD.
|
** ¸£Öݸ£¹âµç×ÓÓÐÏÞ¹«Ë¾
|
** http://www.fuguang.com
|
**
|
**-------------- File Info -------------------------------------------------
|
** File name: M64PWM_Driver.c
|
** Last modified Date: 2008-11-16
|
** Last Version: 1.0
|
** Descriptions: M64PWM Drivers lib
|
**
|
**--------------------------------------------------------------------------
|
** Created by: mxpopstar
|
** Created date: 2008-11-16
|
** Version: 1.0
|
** Descriptions: The original version
|
**
|
**--------------------------------------------------------------------------
|
** Modified by: mxpopstar
|
** Modified date: 2008-11-20
|
** Version:
|
** Descriptions: M64PWM Drivers lib
|
**
|
***************************************************************************/
|
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
#include "M64PWM_Driver.h"
|
#include <avr/wdt.h>
|
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
void InitIO_M64PWM(void)
|
{
|
DDRE |= (1<<PE3)|(1<<PE4)|(1<<PE5); //----ÅäÖÃOC3A,OC3BΪÊä³ö;
|
PORTE &= ~((1<<PE3)|(1<<PE4)|(1<<PE5)); //----ʹOC3A,OC3BÊä³ö0;
|
_delay_us(1);
|
}
|
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
void Config_M64PWM(void)
|
{
|
TCCR3B |= (1<<WGM32)|(1<<WGM33); //----¼ÆÊýÆ÷3¹¤×÷ÔÚ¿ìËÙ8λPWM,³õʼ»¯ÎªÍ£Ö¹×´Ì¬,OC3BÊä³ö0;
|
TCCR3A |= (1<<WGM31); //----±È½ÏÆ¥ÅäʱOC3A,OC3B¶ËÖÃλ
|
OCR3A = 0x00; //----±È½ÏÖµÉèΪ0;ʹÊä³öÂö¿í×îС;
|
OCR3B = 0x00; //----±È½ÏÖµÉèΪ0;ʹÊä³öÂö¿í×îС;
|
OCR3C = 0x00; //----±È½ÏÖµÉèΪ0;ʹÊä³öÂö¿í×îС;
|
}
|
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
void Start_M64PWM1(void)
|
{
|
InitIO_M64PWM();
|
Config_M64PWM();
|
TCCR3A |= (1<<COM3B1);
|
TCCR3B |= 0x01; //----Æô¶¯¶¨Ê±Æ÷¹¤×÷
|
ICR3 = 0x016f;//PWMƵÂÊÉèÖòÎÊý
|
OCR3B = 10;
|
}
|
//----------------------------------------------------------------------------------
|
void Start_M64PWM2(void)
|
{
|
TCCR3A |= (1<<COM3A1);
|
OCR3A = 10;
|
}
|
//----------------------------------------------------------------------------------
|
void Start_M64PWM3(void)
|
{
|
TCCR3A |= (1<<COM3C1);
|
OCR3C = 10;
|
}
|
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
void Stop_M64PWM(void)
|
{
|
while(OCR3B > 0)
|
{
|
OCR3B--;
|
wdt_reset(); //ι¹·
|
_delay_ms(1);
|
}
|
while(OCR3A > 0)
|
{
|
OCR3A--;
|
wdt_reset(); //ι¹·
|
_delay_ms(1);
|
}
|
while(OCR3C > 0)
|
{
|
OCR3C--;
|
wdt_reset(); //ι¹·
|
_delay_ms(1);
|
}
|
|
OCR3A = 0x00; //----±È½ÏÖµÉèΪ0;ʹÊä³öÂö¿í×îС;
|
OCR3B = 0x00; //----±È½ÏÖµÉèΪ0;ʹÊä³öÂö¿í×îС;
|
OCR3C = 0x00; //----±È½ÏÖµÉèΪ0;ʹÊä³öÂö¿í×îС;
|
_delay_us(5);
|
TCCR3B = 0x00; //---Í£Ö¹¶¨Ê±Æ÷¹¤×÷,Í£Ö¹PWMÊä³ö
|
TCCR3A = 0x00;
|
_delay_us(5);
|
InitIO_M64PWM();
|
}
|
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
void SetM64PWM1Value(const unsigned int value)
|
{
|
OCR3B = value;
|
}
|
unsigned int GetM64PWM1Value(void)
|
{
|
return OCR3B;
|
}
|
//
|
void SetM64PWM2Value(const unsigned int value)
|
{
|
OCR3A = value;
|
}
|
unsigned int GetM64PWM2Value(void)
|
{
|
return OCR3A;
|
}
|
void SetM64PWM3Value(const unsigned int value)
|
{
|
OCR3C = value;
|
}
|
unsigned int GetM64PWM3Value(void)
|
{
|
return OCR3C;
|
}
|
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|