搜索
bottom↓
回复: 13

请教:马老师--请更改成能说明帖子大意的标题

[复制链接]

出0入0汤圆

发表于 2005-4-18 08:15:09 | 显示全部楼层 |阅读模式
好:我用的片子是MEGA8,晶振是7.3728MHz,用定时器溢出脉冲做为步进电机的脉冲信号,比如说我用的计数频率是3200Hz,那么脉冲频率应该是1600Hz,为什么用示波器观察输出波形时,实测频率才225Hz,不知道是哪里出了问题,虚心请教?



<font color=red>以下红色文字由坛主:armok 于:2005-04-19,23:09:51 加入。
请更改成能说明帖子大意的标题

本论坛规定:一定要起一个能说明帖子大意的标题。不允许“关于 AVR 的 ADC 使用!”这种笼统标题。作为标题,必须说明清楚:

①你是在请教问题,还是在介绍有关的知识?

②ADC的问题有许多,你是想说那方面的内容?

注意以上两点,标题应该改成如:“请教:ADC 可以不使用中断吗?”。

起一个能说明帖子大意的标题,除了减轻我们的帖子分类整理工作,还方便其它人阅读,节省大家的时间。

谢谢你的支持。

注:你可以使用编辑功能修改标题,并将这段红色文字删除。谢谢你的支持!

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2005-4-18 14:44:28 | 显示全部楼层
你讲的不明白,使用哪个定时器,工作在何方式,如何设置的,输出控制脉冲如何产生都没有讲。



   计数频率是3200Hz是什么概念?通过7.3728MHz分频能得到这个“计数频率”吗?



   脉冲频率应该是1600Hz又是如何出来的?

出0入0汤圆

 楼主| 发表于 2005-4-18 15:02:59 | 显示全部楼层
用的是定时器1,是普通的工作方式,在定时器溢出时改变IO的电平,利用tools->APPLICATION BUILDER,设定定时器的溢出频率,直接得到定时常数。我设定的就是3200Hz,应为每次溢出改变输出端口电平,输出脉冲频率不就是溢出频率(计数频率)的1/2。

出0入0汤圆

发表于 2005-4-18 16:14:07 | 显示全部楼层
响应中断和中断保护及中断程序的部分指令,它们所花的时钟周期算了没了.

分频比还没有说呢。

出0入0汤圆

 楼主| 发表于 2005-4-18 19:44:36 | 显示全部楼层
谢谢 我也觉的是和中断指令的执行时间有关,跟定时器本身没什么关系。

出0入0汤圆

发表于 2005-4-18 19:55:31 | 显示全部楼层
请将T1的初始化程序和中断服务程序贴上来。

出0入0汤圆

发表于 2005-4-18 20:16:01 | 显示全部楼层
我觉得是M8芯片被选择了内部1M的时钟所致。因为你需要3200Hz的信号,分频系数为7.3728MHz/3200=2304,而1MHz/2304=434.027HZ,转变为方波为217.014Hz,于你说的225HZ还是比较接近的。当然,我仅仅是猜测而已。

出0入0汤圆

发表于 2005-4-18 20:30:04 | 显示全部楼层
有可能的,请rsztom自己验证。3200Hz不应该叫“计数频率”,而称为“溢出频率”

出0入0汤圆

 楼主| 发表于 2005-4-19 12:12:40 | 显示全部楼层
void timer1_init(void)

{

TCCR1B = 0x00; //stop

TCNT1H = 0xFF; //setup

TCNT1L = 0xdd;

OCR1AH = 0x00;

OCR1AL = 0x47;

OCR1BH = 0x00;

OCR1BL = 0x47;

ICR1H  = 0x00;

ICR1L  = 0x47;

TCCR1A = 0x00;

TCCR1B = 0x03; //start Timer

}

#pragma interrupt_handler timer1_ovf_isr:9

void timer1_ovf_isr(void)

{



TCNT1H = 0xFF;

TCNT1L = 0xdd;

if(step_pulse_enable == 0x66)

{

             //PORTB |= line_step_clock;

                if((PORTB & line_step_clock)==0x00)

                           PORTB |= line_step_clock;

                else

                {

                            PORTB &= ~line_step_clock;         

                }

                          i_set_pulse_num1=i_set_pulse_num1-1;

                          if(i_set_pulse_num1<=0)step_pulse_enable = 0x55;

else

{

     PORTB |= line_step_clock;

}

}

step_pulse_enable 是为了让步进电机旋转一定的角度方便,而采用的脉冲使能信号;i_set_pulse_num1 控制步进电机的角度

出0入0汤圆

 楼主| 发表于 2005-4-19 12:32:44 | 显示全部楼层
我使用的是PONYPROG下载程序的,没有配置熔丝,默认情况下是不是对外部连接的7。3782晶振不支持?

出0入0汤圆

发表于 2005-4-19 13:04:21 | 显示全部楼层
M8熔丝位默认的使用内部1M的RC振荡。你先看我的“综合实践一”吧。

出0入0汤圆

 楼主| 发表于 2005-4-19 19:25:03 | 显示全部楼层
我按照说明的那样,在BASCOM和PONYPROG里都试了,在BASCOM里我只修改了FUSEBIT A987 为0000,写完熔丝位后,片子就写不进程序了,在打开BASCOM的时候,出现的错误是readlb not found,在ponyprog里也一样,是哪里操作错了吗?


-----此内容被rsztom于2005-04-19,20:39:16编辑过

出0入0汤圆

发表于 2005-4-19 21:21:52 | 显示全部楼层
FUSEBIT A987 为0000时,M8使用外部有源时钟,不是外部晶体,你设置错了。你的M8已经“死锁”了,先把它救过来(站上有如何救的帖子)



    你使用外部晶体(XTAL),一般FUSEBIT A987 为1110:1110 external XTAL。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-18 13:48

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表