?? test_dc_motor.c
字號:
/****************************************************************************
【文 件 名 稱】main.c
【功 能 描 述】三星S3C2410A板demo程序代碼
【程 序 版 本】4.0
【創建人及創建日期】icesoar//2002年11月19日19:26
【修改人及修改日期】icesoar//2004-12-8 17:25
****************************************************************************/
//***************************************************************************
#include "def.h"
#include "2410addr.h"
#include "config.h"
#include "board.h"
#include "utils.h"
#define MOTOR_PWM_FREQ 2000
/****************************************************************************
【功能說明】系統主函數
****************************************************************************/
static void Set_PWM3(U32 ratio)
{
if(!ratio)
{
rGPBCON &= ~(3<<6);
rGPBCON |= 1<<6; //output 0
rGPBDAT &= ~(1<<3);
return;
}
rGPBCON &= ~(3<<6);
rGPBCON |= 2<<6; //TOUT3
rTCON = rTCON & (~(0xf<<16)) ; // clear manual update bit, stop Timer3
// rTCFG0 &= 0xffff00ff; // set Timer 2,3,4 prescaler
rTCFG1 &= 0xffff0fff; // set Timer 2 MUX 1/8
rTCFG1 |= 0x00002000; // set Timer 2 MUX 1/8
rTCNTB3 = ( GetMasterClock() )/( MOTOR_PWM_FREQ *16 ); //if set inverter off, when TCNT2<=TCMP2, TOUT is high, TCNT2>TCMP2, TOUT is low
rTCMPB3 = ( rTCNTB3*(100-ratio))/100 ; //if set inverter on, when TCNT2<=TCMP2, TOUT is low, TCNT2>TCMP2, TOUT is high
rTCON = rTCON & (~(0xf<<16)) | (0x0e<<16) ;
//自動重裝,輸出取反關閉,更新TCNTBn、TCMPBn,死區控制器關閉
rTCON = rTCON & (~(0xf<<16)) | (0x0d<<16) ; //開啟背光控制
}
void Test_DC_Motor(void)
{
U16 HiRatio = 50;
printf( "直流電機控制實驗,按+/-鍵控制電機轉速\n" ) ;
Set_PWM3(HiRatio);
while( 1 )
{
U8 key;
key = getch();
putch( key );
if( key == '+' )
HiRatio += (HiRatio<95)?5:(100-HiRatio);
if( key == '-' )
HiRatio -= (HiRatio>=5)?5:HiRatio;
if( key == ESC_KEY ) break ;
Set_PWM3(HiRatio);
printf( "Now HI-Ratio is %d%%\n", HiRatio) ;
}
printf( "\n" ) ;
rTCON = rTCON & (~(0xf<<16)) ; // clear manual update bit, stop Timer3
rGPBCON &= ~(3<<6);
rGPBCON |= 1<<6; //output 0
rGPBDAT &= ~(1<<3);
}
static char title[] = "直流電機輸出實驗";
static char tip[] = "實驗由S3C2410A的定時器產生的PWM輸出控制直流電機,按+/-鍵調節PWM的占空比,按ESC鍵返回";
//Test_DC_Motor_Item在prog_entry.c里被引用
TEST_PROGRAM_ITEM Test_DC_Motor_Item = {
(TEST_PROGRAM)Test_DC_Motor, //入口地址
title, //顯示名稱
tip, //幫助或提示信息,可為NULL
1}; //使用printf,puts,putch等函數時在LCD上也顯示輸出字符(串)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -