问题标签 [atmega16]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
avr - 如何使用 UART 在 avr(atmega16/32) 上连接多个设备?
atmega 32 只有一个(TX/RX)。如果连接许多使用 UART 工作的设备,我该怎么办?....Arduino 有一个叫做软件串行的东西,它在 atmega 32 中可用还是如何建立它?
c - Atmega16 的端口不工作
我试图将七段显示器与 Atmega16 芯片及其解码器 (74ls47) 连接起来,并使用 ISR 增加它显示的值。ISR 应该打开和关闭一个 LED,然后增加 SSD 的值,但它只会使 LED 闪烁,SSD 没有任何反应。
注意:digitalWrite 是一个在“DIO.h”文件中预定义的打开和关闭 LED 的函数
提前致谢。
c++ - 如何将一个数组值合并为一个整数c ++
如何将一个数组值合并为一个整数并上下颠倒?
python - 从 ATMEGA2560 接收字节的问题
我试图在我的电脑上意外时间(使用 USART)从 Atmega2560 接收一个字节。那么我如何确保我不会错过我的 python 代码中的字节(它有可能运行的函数)
avr - ATMega16 和 SM5100B-D gsm/gprs 模块之间的 USART 连接
我一直在为这两个设备之间的 usart 接口而苦苦挣扎。代码运行后,我可以看到 TX 和 RX 闪烁,但实际上没有消息通过,这是我的最终目标。任何想法如何解决这个问题。该代码是从另一个尚未回答的堆栈问题中借来的
assembly - WDR 似乎禁用了看门狗定时器
我正在使用 AVRASM 编译器在 Proteus 8 中使用 atmega16 测试一些汇编代码,似乎 WDR 指令无法正常工作。
根据数据表,WDR 必须只重置看门狗计数器。因此,如果我将看门狗定时器设置为在两秒时重置 MCU 并执行 WDR 指令,那么看门狗定时器应该再给我两秒。
但是在上面的代码中,似乎在通过为 PIND5 提供 0 来执行 WDR 之后,看门狗定时器将永远不会再次工作,因此我没有在 2 秒的 inetravls 时重置看门狗。我还检查了 WDTCR 寄存器,执行 WDR 后它没有改变。
c - 如何声明存储在 PROGMEM 中的矩阵
我正在尝试编写一个头文件来驱动 LED 矩阵,但我遇到了无法解决的语法错误
我已经在我认为有必要的地方添加了“;”并检查了https://www.nongnu.org/avr-libc/user-manual/pgmspace.html
错误是:错误:max7219.h(15),#included from: p2.c: ';' 预期的
第 15 行是 char characters[96][5] PROGMEM = ...
c - 我正在通过 ATmega16p 和 CodeVisionAVR 设计吉他调音器,但我无法让我的代码运行
我正在通过 atmel mega16 处理器和 CodeVisionAVR 为我大学的第二个项目设计吉他调音器。我已将单声道插孔连接到处理器的 PINA.7(ADC 转换器)和 GND。我有 7 个 LED (PORTB.0..6),它们应该根据信号基频的频率通过一系列 if/elseif 来打开。
我正在通过 800 个样本的 DFT(我知道有更快的 FT,但我们的大学告诉我们应该使用 DFT,他们知道原因)来获取信号的基础。在选择的 800 个样本中,它计算频谱。然后用下一个for来计算每个频率的绝对值,取最大的,所以它可以作为吉他调音师的一个很好的参考点。
Momentairly,我在主要功能中包含了一个大频率条件,以查看 LED 是否亮起,但它没有。
我尝试在整个代码中将 LED 从 0 切换到 6,它似乎停止在F = computeDft();
,所以我删除了变量,然后computeDft();
运行,但下一个 LED 没有亮起。函数永远不会被调用吗?我已经在 Visual Studio 中使用生成的余弦函数尝试了该函数,并且效果很好。它总是检测基本面。为什么它在 CVAVR 中不起作用?
我试图实现的结果是来自电话或计算机的信号(可能是一个调整吉他的人的 YouTube 视频)通过插孔发送到 AD 转换器(PINA.7)中的处理器。主函数调用该computeDft;
函数,它将要求将read_adc();
通过电缆发送的电压值添加到 x[k],然后计算它的 Dft。然后,相同的函数选择基波的频率(绝对值最高的频率),然后返回它。在 main 函数内部,一个变量将被分配基频的值,并通过一系列的 if 函数,将其值与标准吉他弦频率 82.6、110 等进行比较......
c - 我在 CodeVisionAVR 中使用 ATmega164 的吉他调音器代码不能处理超过 4 个样本
我正在通过 CodeVisionAVR 设计吉他调音器,并为我的大学项目使用 ATmega164 微芯片。如果我将样本数设置为高于 4,则芯片 LED 将持续闪烁,并且代码不会超过该过程的引脚读取阶段(在每行代码后点亮 LED 进行测试以查看它停止的位置)。
大学强迫我使用 DFT 通过 CVAVR 设计代码。我已经(在对最近一个问题的回答的大力帮助下)编写的代码比原来的代码小了近 18 倍。我不知道如何使它更容易运行,以便它可以容忍超过 4 个样本 ( #define N 4
)
由于 Nyquist-Shannon 采样定理,一个调音器通常应该能够使用至少 800 个样本,并且高 E 吉他弦在 380 Hz 左右(不记得确切)。