dsp电动机转动怎么加键控程序

dsp电动机转动怎么加键控程序,第1张

控制方法分为以下三种:

1、芯片控制。

2、采用MCU+功率器件控制。

3、肢铅采用DSP实现全数字式控制。

具体控制方法如下:

1、采用专用芯片,这样控制简单,成本就低,但一般工作电流不大约2A左右,工作电压不高,36VDC左右。

2、采用MCU+功率器件的方式,电流通过模拟电路来控制,MCU提供细分环形分配器,这种方式,控制相对简单,工作电流和电压都可以做大,但控制参数一般比较固定,应用不灵活。

3、采用DSP实现全数字式控制,控制比较复杂,但控制算法灵活,可御饥庆以自动整定不同电机的控制参数。

dsp电动机是把电能转换成机械能的一种设备。它是利用通电线圈(也就是定子镇握绕组)产生旋转磁场并作用于转子(如鼠笼式闭合铝框)形成磁电动力旋转扭矩。

#include "myapp.h"

#include "ICETEK-VC5509-EDU.h"

#include "scancode.h"

/腊老槐/ :-- Define Timer 0 's Registers ---//

ioport unsigned int *tim0

ioport unsigned int *prd0

ioport unsigned int *tcr0

ioport unsigned int *prsc0

// :-- End of Define -----------------//

void InitMcBSP() //函数声明

unsigned int uN,nCount,nCount1//定义外部变量

main() //主程序

{

unsigned char dbScanCode,dbOld //定义内部变量

dbScanCode=dbOld=0

nCount=nCount1=0

PLL_Init(20) //初始化PLL

SDRAM_init() //初始化SDRAM

InitCTR() //初始化CTR

InitMcBSP() //初始化McBSP

uN=60

CTRGR=1

InitInterrupt() //初始化中断

TIME_init() //初始化定时器

while ( 1 )

{

if ( nCount1==0 )

{

dbScanCode=GetKey() //读取键盘输入的信轮友息

if ( dbScanCode!=dbOld ) //如果键盘输入信息改变,执行

{

dbOld=dbScanCode

if ( dbScanCode==SCANCODE_9 )

break

else if ( dbScanCode==SCANCODE_7 )

PCR1|=2

else if ( dbScanCode==SCANCODE_8)

PCR1&=0x0fffd

else if ( dbScanCode==SCANCODE_1 )

uN=60

else if ( dbScanCode==SCANCODE_2 )

uN=40

else if ( dbScanCode==SCANCODE_3 )

uN=20

else if ( dbScanCode==SCANCODE_4 )

uN=10

else if ( dbScanCode==SCANCODE_5 )

uN=0

}

}

}

CloseCTR() //关显示器

exit(0)

}

void InitInterrupt(void)

{

// 设置中断控制寄存器

IVPD=0x80

IVPH=0x80

IER0=0x10

DBIER0 =0x10

IFR0=0xffff

asm(" BCLR INTM")

}

void interrupt Timer() //中断响含悉应函数

{

nCount++nCount%=100

if ( nCount>uN ) PCR2|=4

else PCR2&=0x0fffb

nCount1++nCount1%=5120

}

void InitMcBSP()

{

// IOPin: McBSP2.FSR S22

//SPCR1.RRST_=0,PCR.RIOEN=1,PCR.FSRM=1,PCR.FSRP=0/1

SPCR1_2&=0x0fffe

PCR2|=0x1400

// IOPin: McBSP1.CLKX S14

//SPCR2.XRST_=0,PCR.XIOEN=1,PCR.CLKXM=1,PCR.CLKXP=0/1

SPCR2_1&=0x0fffe

PCR1|=0x2200

}

void TIME_init(void)

{

tim0 = (unsigned int *)0x1000

prd0 = (unsigned int *)0x1001

tcr0 = (unsigned int *)0x1002

prsc0 = (unsigned int *)0x1003

*tcr0 = 0x04f0

*tim0 = 0

*prd0 = 0x0100

*prsc0 = 2

*tcr0 = 0x00e0

}

涉及到外设部分就得看具体的DSP型号了,查查数据手册吧。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12505126.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存