搜索
bottom↓
回复: 1

马老师你好:为何mega128中ICP捕捉占空比(PWM)读取到的值跟波形一直乱跳???

[复制链接]

出0入0汤圆

发表于 2009-9-4 16:51:03 | 显示全部楼层 |阅读模式
为了计算"加速度计"的值而抓取它的信号, 希望能有稳定准确的占空比!
但找了很多数据, 都查不出问题所在...
麻烦请教,谢谢!!

系统clk: 1M Hz , 预分频: clk/8 ,

code:

#include <avr/io.h>
#include <avr/iom128.h>
#include <avr/interrupt.h>
#include "RS-232.h"

#define  fOSC 1000000 // System clock  
#define  BUAD 4800 // buad rate : 4800  
#define  UBRR fOSC/16/BUAD-1

unsigned int temp_rising = 0;
unsigned int temp_falling = 0;
unsigned int temp_l = 0;
unsigned int temp_h = 0;
unsigned int pwm = 0;

ISR(TIMER1_CAPT_vect)
{
switch(TCCR1B)
{
case 0x82:
temp_l = ICR1L;
temp_h = ICR1H;
temp_rising = ICR1;

TCCR1B = TCCR1B & 0xBF; //TCCR1B = 0x82, 改为下降缘触发
TIFR = 0x20;
break;

case 0xC2:
temp_l = ICR1L;
temp_h = ICR1H;
temp_falling = ICR1;

TCCR1B = TCCR1B | 0x40; //TCCR1B = 0xC2, 改为上升缘触发
TIFR = 0x20;
break;
}

pwm = temp_falling - temp_rising;

USART_Transmit(pwm);
}

int main(void)
{
DDRD = 0x00;

TCCR1B = (1 << ICNC1)|(1 << ICES1)|(1 << CS11);      //初始为上升缘触发
TIMSK = (1 << TICIE1);
TIFR = (1 << ICF1);

USART_Init(UBRR);

sei();

while(1)
{
}
}

void USART_Init(unsigned int ubrr1)
{
// Set baud rate //
UBRR1H = (unsigned char)ubrr1 >> 8;
UBRR1L = (unsigned char)ubrr1;

UCSR1B = (1 << RXEN1)|(1 << TXEN1); // Enable receiver, transmitter //

UCSR1C = (1 << UCSZ11)|(1 << UCSZ10); // Set frame format: 8 data, 1 stop bit //
}

void USART_Transmit(unsigned int data)
{
while(!(UCSR1A & (1 << UDRE1))); // Wait for empty transmit buffer //

UDR1 = data; // Put data into buffer, sends the data //
}

出0入0汤圆

发表于 2009-10-21 22:43:00 | 显示全部楼层
我刚看了一篇帖子说在捕获中断里改触发方式无效,不知道真的假的,参考http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3311500&bbs_page_no=1&search_mode=4&search_text=skyward&bbs_id=9999
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 14:21

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

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