问题标签 [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.

0 投票
1 回答
513 浏览

avr - 如何使用 UART 在 avr(atmega16/32) 上连接多个设备?

atmega 32 只有一个(TX/RX)。如果连接许多使用 UART 工作的设备,我该怎么办?....Arduino 有一个叫做软件串行的东西,它在 atmega 32 中可用还是如何建立它?

0 投票
1 回答
89 浏览

c - Atmega16 的端口不工作

我试图将七段显示器与 Atmega16 芯片及其解码器 (74ls47) 连接起来,并使用 ISR 增加它显示的值。ISR 应该打开和关闭一个 LED,然后增加 SSD 的值,但它只会使 LED 闪烁,SSD 没有任何反应。

注意:digitalWrite 是一个在“DIO.h”文件中预定义的打开和关闭 LED 的函数

提前致谢。

0 投票
2 回答
1453 浏览

embedded - 连接 16*2 键盘和 LCD 与 atmega32

我对键盘模块有一个令人失望的问题,当按下它的任何键时,它通常会显示在 LCD 模块上按下的键。问题是每当我按下键时,行就会停止扫描,如果我的应用程序(例如,接收密码并显示在 LCD 上的系统),我无法按下任何其他键以显示在我的 LCD 上。如果我想在 LCD 上显示一个列表并且我想在屏幕上翻另一页以继续显示我的列表,那么我现在面临的另一个问题是。我怎样才能实现这个?!我附上了我的示意图的屏幕截图,并且我提供了要检查的键盘和 LCD 的代码。无论如何,谢谢你帮助我。 在此处输入图像描述

我的申请代码:

我的液晶图书馆:

我的键盘库:

最后是我的标准宏:

0 投票
3 回答
80 浏览

c++ - 如何将一个数组值合并为一个整数c ++

如何将一个数组值合并为一个整数并上下颠倒?

0 投票
1 回答
49 浏览

python - 从 ATMEGA2560 接收字节的问题

我试图在我的电脑上意外时间(使用 USART)从 Atmega2560 接收一个字节。那么我如何确保我不会错过我的 python 代码中的字节(它有可能运行的函数)

0 投票
0 回答
102 浏览

avr - ATMega16 和 SM5100B-D gsm/gprs 模块之间的 USART 连接

我一直在为这两个设备之间的 usart 接口而苦苦挣扎。代码运行后,我可以看到 TX 和 RX 闪烁,但实际上没有消息通过,这是我的最终目标。任何想法如何解决这个问题。该代码是从另一个尚未回答的堆栈问题中借来的

0 投票
0 回答
106 浏览

assembly - WDR 似乎禁用了看门狗定时器

我正在使用 AVRASM 编译器在 Proteus 8 中使用 atmega16 测试一些汇编代码,似乎 WDR 指令无法正常工作。

根据数据表,WDR 必须只重置看门狗计数器。因此,如果我将看门狗定时器设置为在两秒时重置 MCU 并执行 WDR 指令,那么看门狗定时器应该再给我两秒。

但是在上面的代码中,似乎在通过为 PIND5 提供 0 来执行 WDR 之后,看门狗定时器将永远不会再次工作,因此我没有在 2 秒的 inetravls 时重置看门狗。我还检查了 WDTCR 寄存器,执行 WDR 后它没有改变。

0 投票
2 回答
151 浏览

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 = ...

0 投票
1 回答
110 浏览

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 等进行比较......

0 投票
2 回答
129 浏览

c - 我在 CodeVisionAVR 中使用 ATmega164 的吉他调音器代码不能处理超过 4 个样本

我正在通过 CodeVisionAVR 设计吉他调音器,并为我的大学项目使用 ATmega164 微芯片。如果我将样本数设置为高于 4,则芯片 LED 将持续闪烁,并且代码不会超过该过程的引脚读取阶段(在每行代码后点亮 LED 进行测试以查看它停止的位置)。

大学强迫我使用 DFT 通过 CVAVR 设计代码。我已经(在对最近一个问题的回答的大力帮助下)编写的代码比原来的代码小了近 18 倍。我不知道如何使它更容易运行,以便它可以容忍超过 4 个样本 ( #define N 4)

由于 Nyquist-Shannon 采样定理,一个调音器通常应该能够使用至少 800 个样本,并且高 E 吉他弦在 380 Hz 左右(不记得确切)。