首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在atmea128中,输入捕获值为双精度

在atmea128中,输入捕获值为双精度
EN

Stack Overflow用户
提问于 2015-12-03 19:37:36
回答 1查看 66关注 0票数 0

我正在用Atmega128和Atmel Studio学习嵌入式C语言。

我想写一些代码来显示来自传感器的温度和湿度。

我正在学习输入捕获,我的第一个问题是:

我得到的IC值是5000(句号),但我认为2500是正确的。我算对了吗?如果是这样,你知道为什么IC的值是错误的吗?

代码语言:javascript
复制
16000.000/64 = 250000

1 second      250000 puls

100 ms          x = 2500

主板信息:

代码语言:javascript
复制
avr128

16.000.000 external clock.



philips puls generator info:

Repitation 100 mili s
Duration 10 ms
5 volt

我的代码

代码语言:javascript
复制
    volatile uint32_t iccnt=0,ovfcnt=0;
    volatile uint32_t myCapt [2],lastCapt; 

//__________________________

void initTimer()
{
    TCNT1 =0;//Max=65535
    TCCR1B |= 1<<CS10 | 1<<CS11 ;
    // 1<<CS10 | 1<<CS11 ;//16000000/16=250000
    //250000/65535=3.81
    //TCCR1B |= 1<<WGM13  |1<<WGM12;
    TIMSK |= 1<<TOIE1;
    TIFR = 1<<TOV1;
    sei();
} 

void initInputCapture()
{
    // First Capture on rising edge
    TCCR1B |=1<<ICES1;
    //ic intrrupt flag enable
    TIMSK |= 1<< TICIE1;
    // set input pin to get signal

}
void initlcd()
{
    lcd_init(LCD_DISP_ON_CURSOR_BLINK);
    lcd_clrscr();
}
void ShowA(unsigned int a)
{
    char aa[11];
    if (a >32000) {
        itoa(a - 32000,aa,10);
        lcd_puts("32000+");
        lcd_puts(aa);
    } else {
        itoa(a,aa,10);
        lcd_puts(aa);
    }
}
ISR(TIMER1_OVF_vect)
{
    ovfcnt++;

}
ISR(TIMER1_CAPT_vect)
{

    iccnt++;

    myCapt[iccnt % 2] = ICR1 - lastCapt;
    lastCapt = ICR1; 

}

void ShowCaptureTime2()
{
    lcd_clrscr(); 

    ShowA (iccnt);
    lcd_puts(": \n");
    ShowA(myCapt[(iccnt - 1) % 2]);

        for (int j=0;j<(1000) ;j++)
        {
            for (int i=0;i<4000;i++)
            {

            }
        }

}

//*******************************
//*******************************
int  main(void)
{
    DDRG = 0b11111111;

    int cnt = 0;

    initlcd();
    initTimer();
    initInputCapture();

    while(1)
    {
        ShowCaptureTime2();     

    }
}
EN

回答 1

Stack Overflow用户

发布于 2017-07-27 21:04:44

我昨天就能找到答案。代码没有问题。脉冲发生器工作不正确!输入错误!- samsoft

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34065075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档