您有没有问过自己 ISP 是否正常工作?或者 PWM 输出真的正确吗?一开始我想买一个数字示波器记录一些信号的输出,以了解到底是怎么回事。然后我发现,有数字(或逻辑)分析仪,我想,我可以自己编程。这是我的工作成果,希望对您有所帮助。只需按照串行监视器(或以下)上的说明进行操作即可享受!
出于测试目的,我包括了一个频率发生器,这也有助于测试其他电气部件。
注意:如果您使用带有 ATmega48/88/168 的旧板,则需要在源代码开头调整maxSamples
变量。
有两种模式:快速模式和直接模式。
使用 FastMode 时,您需要通过 SerialMonitor 将要记录的样本数发送到控制器(例如“140”)。之后将记录并打印此样本量。每秒可以检测大约 100, 000 个样本,但是(由于 SRAM 有限)只能记录 300 个样本。
使用 DirectMode 时,每个检测到的样本都将直接打印到 SerialMonitor。每秒可以检测大约 200 个样本而不会遇到缓冲区溢出。更快的采样率将导致缓冲区溢出并且记录将自动停止。
要调用 DirectMode,您需要通过 SerialMonitor 向控制器发送一个“0”。
可以记录六个通道(引脚 2 - 7)。要设置受监控的通道,请输入例如“c245”以观察引脚 2、4 和 5。输入引脚在内部连接到上拉电阻。不管观察到多少个通道,可能的可记录采样率都不会受到影响。
可以通过向控制器发送“x”来中止当前记录。记录的样本将被打印出来。
可以在引脚 11 上调用频率发生器。要启用它,您需要通过 SerialMonitor 发送例如“f123.456”,其中数字代表频率(在本例中为 123.456 Hz)。可以选择 0.007451 和 8、000、000 Hz 之间的频率,但不是无限可变的。确切的输出频率打印在下面。最大录音速度(采样率)不受频率发生器的影响。
所有输入都需要使用“LineFeed”完成(请参阅 SerialMonitor 中的设置)。例如,您可以将输出复制到 Microsoft Excel 中以绘制图表和分析数字信号。我创建了一个带有宏的 Excel 文件以从您的剪贴板导入数据:DigtialAnalyzer.xlsm (请注意 .xlsm 文件可以防止恶意软件!检查 VBA 代码(Alt + F11)以查看我的文件仅复制剪贴板内容到工作表并做一些进一步的计算)。
为串行通信设置波特率 115、200。
最多可以记录 100, 000 个样本/秒。但是,在内部 SRAM 内存用完之前,总共只能记录 300 个样本。
输入引脚在内部连接到上拉电阻。
该程序使用 Timers1 和 2,禁用 Timer0。因此millis()
,micros()
和delay()
将不起作用。我选择这样做是为了使它成为具有最佳性能的最可能的轻量级程序。
Timer1 用于测量输入信号的时间,预分频为 8,精度为 0.5us。
Timer2 用于频率发生器。其预分频器根据所需频率进行调整,以达到最接近的可能输出频率。对于高于 30.5 Hz 的频率,PWM 模式 CTC 用于切换输出引脚 11。这不会使用任何 CPU 性能。对于较慢的频率,执行溢出中断例程来切换输出引脚,这不会使用太多 CPU,因为它很少发生。
我打算扩展 Excel 文件以直接与 Arduino 通信。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !