历史上的今天

今天是:2024年10月15日(星期二)

正在发生

2021年10月15日 | S3C2440开发板裸机程序系列09—PWM控制舵机

发布者:郑大大 来源: eefocus关键字:S3C2440  开发板  裸机程序 手机看文章 扫描二维码
随时随地手机看文章

1.  Timer1的PWM控制舵机

S3C2440的Timer0、Timer1、Timer2和Timer3具有PWM功能,以前的blog已经叙述过,详见:


S3C2440开发板裸机程序系列05—定时器PWM


TQ2440开发板的Timer0的TOUT0输出连接了Beep,所以,这次利用Timer1的TOUT1输出来连接舵机的控制信号。


舵机的内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。通过调整控制信号的高电平宽度,即可实现舵机不同转角的控制。

舵机控制原理详见:舵机的原理和控制


程序思路很简单:


设置GPB1为TOUT1的输出格式;

Timer1初始化,设置周期为20ms;

默认情况TOUT1输出的脉宽是低电平,需要将TCON第10位设置为1,即Inverter on for TOUT1

主程序检测串口输入,加号则增大脉宽,减号则减小脉宽。

 2.  Timer1的中断控制舵机

模仿舵机C51测试程序,用Timer1计时,周期0.5ms。在Timer1的中断控制程序中控制PWM的脉宽输出。


查看TQ2440的底板原理图,可知系统总线接口上有GPA0,就利用它作为PWM的输出了。

程序思路:


a.设置Timer1初始化


void Timer1_Init(void)

{

rTCFG0 &= ~(0xff) ; // Prescaler0 determine prescale value for Timer 0 and 1.

rTCFG0 |= 49 ; // Prescaler0  [7:0]

rTCFG1 &=  ~(0xf0) ; // TCFG1[7:4] -- Select MUX input for PWM Timer1.

rTCFG1 |=  0x0<<4 ; // MUX1: 0-1/2, 1-1/4, 2-1/8, 3-1/16  

// 50M/50/2=500K  500,000 = 1sec

rTCNTB1 =  250 ; // 500K/50 = 10000 ==> 20ms cycles

// 10000/40 <=> 20/0.5 , so 250 is 0.5ms

rTCON |= (1 << 9) ; //manual update for Timer 1.

rTCON =  0x09<<8; //D=1001,clear manual update; auto reload

}

b.设置Timer1中断


extern unsigned char count;      //0.5ms次数标识

extern unsigned char jd;         //角度标识

 

void Isr_Init(void)

{

pISR_TIMER1 = (U32)Timer1_Isr ;

}

 

void __irq Timer1_Isr(void)

{

if(count     //判断0.5ms次数是否小于角度标识

rGPADAT |= 0x01;            //确实小于,PWM输出高电平

else

            rGPADAT &= (~(0x01));        //大于则输出低电平

   

        count=(count+1); //0.5ms次数加1

        count=count%40; //次数始终保持为40 即保持周期为20ms

    

rSRCPND |= 1 << 11 ;

rINTPND |= 1 << 11 ;

}

 

void Timer1_Interrupt_Init(void)

{   

rINTMSK &= ~(1 << 11) ;

}

c.主程序查询串口按键输入(还有GPA0,Timer1,中断等的初始化)


 int Main()


{

unsigned char key;

jd=2;

count=0; 

rGPACON &= (~(0x01)); // set GPA0 output

rGPADAT &= (~(0x01)); // GPA0=0

Timer1_Interrupt_Init();

Isr_Init();

Timer1_Init();

Uart0_Init(115200);

Uart_Printf( "nPWM TEST ( Key Control )n" );

    Uart_Printf( "Press +/- to increase/reduce the frequency of PWM n" ) ;

Uart_Printf( "Press 'ESC' key to Exi nn" );

while(1)

{

key =  Uart0_Getc();

if( (key == '=')||(key == '+')) //tq-zql:添加对小键盘的+的支持

{

jd++;                 //角度标识加1

              count=0;              //按键按下 则20ms周期从新开始

              if(jd==6)

            jd=5;   

}

 

if( key == '-' )

{

jd--;                 //角度标识减1

              count=0;

              if(jd==0)

            jd=1;     

}

Uart_Printf( "tFreq = %dn", jd ) ;

if( key == ESC_KEY )

{

return 1;

}

return 0;

}

关键字:S3C2440  开发板  裸机程序 引用地址:S3C2440开发板裸机程序系列09—PWM控制舵机

上一篇:S3C2440开发板裸机程序系列05—定时器PWM
下一篇:S3C2440开发板裸机程序系列06—LCD控制器

推荐阅读

目前感觉这样的文件结构安排最为合理。首先在选定文件夹下建立如下文件:然后根据芯片,将相关文件放入对应文件夹中,现在以STM32F103RCT6为例。将STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10x目录下的stm32f10x.h,system_stm32f10x.h,system_stm32f10x.copy到core文件下,STM32F10x_StdPeriph_Lib_V3.5.0ProjectSTM32F10x_S...
刚刚用STM8S003做了个电压表,互相交流一下。用到了ADC采样及数码管显示。 STM8电压表单片机源程序:#include<iostm8s003f3.h>unsigned int ms_count;unsigned char adcflag;unsigned int ADCData;unsigned int tmpin;unsigned int ADCBuff[3];/*********************************************************************************函数名称:vo...
NEC日前选择NXP作为供应商,为日本移动网络运营商之一的乐天移动mMIMO 5G天线无线电单元提供射频空中广播多芯片模块(MCM)。mMIMO-RU将使用NXP的AFSC5G40E38 MCM,一种LDMOS功率晶体管的全集成Doherty功率放大器。它是为满足日本5G基础设施部署的频率和功率要求而开发的,在3.7至4.0GHz频段内,其平均功率为6.3W,增益为27dB,MCM的尺寸是10mm*6mm。AFS...
有经验的工程师都知道,如果我们要使用 数字示波器 来进行电源测量的话,就必须先测量MOSFET开关器件漏极、源极间的电压和电流,或IGBT集电极、发射极间的电压。但是如果我们需要完成这一测试测量任务,就必须要借助两种不同的 示波器探头来配合示波器一起完成测试测量任务。其中一支是高压差分探头,另外一支是电流探头。由于这两种探头是两种不同类型...

史海拾趣

问答坊 | AI 解惑

阿里招聘

机械行业网站运营 发布日期:2007-06-29 工作地点:杭州市 招聘人数:3 学 历:大专以上 工作年限: 外语要求: 电子邮箱:resumecw@alibaba-inc.com 职位描述: 工作地:杭州 人数:3(分别是专用机械、通用零部件、五金 ...…

查看全部问答∨

自动增益控制

请教一下自动增益控制的芯片都有哪些阿?谢谢大家…

查看全部问答∨

电子电路大全(合订本)

也不知道有人发过没~ 本文使用超星浏览器阅读: 超星浏览器下载地址:…

查看全部问答∨

运放的单电源供电问题

对学习运放的人来说,还是比较不错的啊!…

查看全部问答∨

【PDF】采用纳瓦技术内置电源控制PWM和A/D转换器的

【PDF】采用纳瓦技术内置电源控制PWM和A/D转换器的…

查看全部问答∨

java开发有没有与硬件或通信相关的?

我是学电子和计算机结合的,毕业设计老师要求做与硬件有关的,可我对JAVA比较感兴趣,特别是JAVA web开发的.java有没有与硬件相关的,有知道的请提点意见?谢谢了!用一点点什么芯片的就行。 …

查看全部问答∨

用curl 传送数值 出现的问题

目的    :  向vlan号为eth0,地址为 http://192.168.1.1/setparam.cgi? 的猫,     传送字符串internetset=1&ucaBaseMacAddr=00085CD20000&userPassword=ensmn&wlSsid=CTC-6bzTXq&wlPassword=zvp ...…

查看全部问答∨

请教各位大侠,P1中断标志为什么清不掉

我用的是mspf149,现在需要辨别两路下降沿信号,把两路分别接到P1.7和p1.6,只允许这两路中断,并且有中断产生,但是在中断程序中通过WATCH窗口观察P1IFG始终为0xFF,并没有相应位置一,而且“P1IFG=0X00;”也没有作用 请教各位大侠帮忙看一下是什 ...…

查看全部问答∨

独立看门狗

请问大虾们,STM8的独立看门狗应该怎么用?什么时候加载为好?…

查看全部问答∨

飞思卡尔的MC68HC908LJ12CFU该用哪种编程器或仿真器啊???

我的型号是MC68HC908LJ12CFU   MC68HC908LK24CFQ这两种,需要往单片机里写程序,但是不知道该用什么编程器。 哪位朋友知道,可以提供下编程器型号和参考价格吗?谢谢你们了…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved