阿莫:帮看看这个??帮忙拿示波器测一下看看??告诉我波形。
这是驱动舵机的程序舵机为1-2ms的脉冲
间隔是20ms
帮忙拿示波器测一下看看??告诉我波形。
要是不行帮改改。
CodeVision
#include <mega16.h>
int zkb;
int t1,t2;
// Timer 2 overflow interrupt service routine
interrupt void timer2_ovf_isr(void)
{
// Reinitialize Timer 2 value
//每次触发为20微秒
TCNT2=0xEC;
if(t1!=0){
t1-=1;
}else{
PORTA.0=!PINA.0;
if(PINA.0==1){
t1=zkb/20;
t2=(20000-zkb)/20;
}else
{
t1=t2;
}
}
}
// Declare your global variables here
void delay_1ms(void); //函数声明,本实验中会用到这两个函数
void delay_nms(unsigned int n);
void main(void)
{
int aa=20;
/*初始化参数*/
zkb=1500;
t1=zkb/20;
t2=20000-t1;
/********************************************/
OSCCAL=0X95;//系统时钟校准,不同的芯片和不同的频率
PORTA=0x00;
DDRA=0x00;
DDRA.0=1;
PORTA.0=1;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 1000.000 kHz
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x02;
TCNT2=0xEC;
OCR2=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x40;
// Global enable interrupts
#asm("sei")
while (1)
{
delay_nms(1000);
zkb+=aa;
if(zkb>2000||zkb<1000){
zkb=1000;
aa=-aa;
}
}
}
void delay_1ms(void)//1ms延时函数
{
unsigned int i;
for (i=0;i<150;i++)
{
}
}
void delay_nms(unsigned int n)//延时n毫秒
{
unsigned int i;
for (i=0;i<n;i++)//执行n次1毫秒延时
delay_1ms();
} 驱动舵机的程序,不错,不错
又来个玩模型的,这个作成了回头机器人又多个模块了 程序是我写的。
但是这个程序我调试没通过,所以请你帮忙用示波器看一下。
我手里没有示波器 要是有示波器,用不了一个小时,调试就能通过。 hehe
很简单的呀测试PORTA.0
mega16接上电就行 8M
内部晶体
注意:源代码中有时钟效正
我借的示波器晚上拿回来。呵呵 to 阿莫:
程序弄好了,如何上传?? to 阿莫:
你好,这是最终的测试结果,效果不错。
http://61.180.240.51:8888/down/AVR_mcu/可变脉宽输出试验(舵机控制).rar
中文文件名,要用下载软件下载。
你的服务器太慢了。我没有上传。如果你愿意,过一段我可以提供一个空间给你包括ftp和web,有了镜像空间,速度能快不少。 to 阿莫:
忘了告诉你,我的程序是用CodeVisionAVR调试的。里面的汇编是编译时的中间代码。
还有,镜像的问题,因为空间是我朋友管理的。我还要做些工作。但如果可以提供的话,我想我会免费提供给你,我喜欢avr,喜欢ouravr.com 。谢谢你同意我进入授权区。别忘了帮我开通此功能。
页:
[1]