极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: Ansifa

Arduino学习笔记A13 - 最简单的Arduino频率计

  [复制链接]
 楼主| 发表于 2013-4-7 01:30:26 | 显示全部楼层
Fortware 发表于 2013-4-6 12:22
我按LZ的方法试了一下,Nano输出1KHz的方波,接入UNO的D2,波特率调到57600,但Arduino自带的IDE还是显示乱 ...

应该是你的UNO质量问题晶振不准确,或者你曾经修改过bootloader但是频率没对好。导致发出信号时间差大,电脑识别不了。
回复 支持 反对

使用道具 举报

发表于 2013-4-28 19:22:23 | 显示全部楼层
Mark,像是不错。
回复 支持 反对

使用道具 举报

发表于 2013-5-1 17:46:27 | 显示全部楼层
用ATMEGA8和arduino V1.03,提示error: 'TIMSK1' was not declared in this scope
用ATMEGA328没有问题。
请问是什么原因?如何解决?
回复 支持 反对

使用道具 举报

发表于 2013-5-27 21:57:45 | 显示全部楼层
8和328的中断向量表地址不一样!8是单字地址,168的是双字地址,估计328的也是双字地址
回复 支持 反对

使用道具 举报

发表于 2013-5-27 21:58:27 | 显示全部楼层
atmega8、atmega168与atmega328的区别
The ATmega48PA, ATmega88PA, ATmega168PA and ATmega328P differ only in memory
sizes, boot loader support, and interrupt vector sizes.
--出自datasheet。

只是内存大小、bootloader、中断向量大小不同。那么相同封装的芯片引脚是通用的啦。
回复 支持 反对

使用道具 举报

发表于 2013-5-28 00:23:10 | 显示全部楼层
superid888 发表于 2013-5-1 17:46
用ATMEGA8和arduino V1.03,提示error: 'TIMSK1' was not declared in this scope
用ATMEGA328没有问题。
...

把TIMSK1改成TIMSK就解决了
原因是328有两个timer,8只有1个

评分

参与人数 1 +30 收起 理由
Ansifa + 30 回头试试,m8还没试过呢。。

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2013-5-28 00:26:22 | 显示全部楼层
Fortware 发表于 2013-4-6 12:22
我按LZ的方法试了一下,Nano输出1KHz的方波,接入UNO的D2,波特率调到57600,但Arduino自带的IDE还是显示乱 ...

用示波器看看有没有杂波,有的话就加强电源滤波,要不就是晶振不稳
回复 支持 反对

使用道具 举报

发表于 2013-5-28 00:28:06 | 显示全部楼层
/ka小菜一碟 发表于 2013-4-5 18:27
请教版主:这个信号可以是声音信号么?我用一个单声道麦克风,来录制一个1Khz正弦波的声音,想借此计算出此 ...

这个频率计的输入端不带缓冲放大的,所以输入信号的幅值要接近5V才能测量。
回复 支持 反对

使用道具 举报

发表于 2013-7-5 13:00:32 | 显示全部楼层
以前看,看不懂,
现在看,有点懂,
留着以后慢慢看。
回复 支持 反对

使用道具 举报

发表于 2013-8-6 11:54:51 | 显示全部楼层
哇塞 立马测试
回复 支持 反对

使用道具 举报

发表于 2013-8-11 16:58:01 | 显示全部楼层
搜了一下也有挺多用mega8做频率计的 用T1做计数 T0定时 也没外加分频电路 量程都挺大的呢 可以到400KHz  怎么arduino就到不了这个量程呢?
回复 支持 反对

使用道具 举报

发表于 2013-8-19 19:11:46 | 显示全部楼层
好贴,我弄了个电子钟的芯片,正需要这样的东东,太好了。谢谢。
回复 支持 反对

使用道具 举报

发表于 2013-8-19 21:09:13 | 显示全部楼层
mega2560不能用吗,为什么输出全是0?
回复 支持 反对

使用道具 举报

发表于 2014-3-10 20:51:53 | 显示全部楼层
请教一下,为什么不用 attachInterrupt(0, interrupt, CHANGE);这个命令,求指教,这个是不是上下沿都可以采样呢?
回复 支持 反对

使用道具 举报

发表于 2014-4-1 13:24:57 | 显示全部楼层

void setup()
{
DDRB |=bit(7);
TCCR1A = 0x00;

}
SIGNAL(SIG_OVERFLOW1)
{
          TCNT1H=0X0B;
        TCNT1L=0XDB;
       PORTB |=bit(7);
}
void loop()
{
     
       PORTB &= ~bit(7);
       //PORTB |=bit(7);
        TCCR1B=0X04;
        TCNT1H=0X0B;
        TCNT1L=0XDB;
        TCCR1A = 0x00;
        TIMSK1 |=bit(0);
        SREG |=bit(7);


} 为什么我这个程序运行结果不正确
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-18 17:14 , Processed in 0.049816 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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