问题标签 [atmega32]

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 回答
21 浏览

avr - 以位监视寄存器的值

我写了一个简单的代码:

我想在 ATMELStudio7 中查看 r16 和 r17 的值,这怎么可能?谢谢

0 投票
1 回答
74 浏览

timer - Timer1中的“OCR1x更新”是什么意思 - Atmega32

在查看 atmega32、TIMER1 的数据表时,操作模式 检查我在此处添加的图像中突出显示的列

1-我不明白“更新”是什么意思(在图片中突出显示)。

2-告诉TOP值是固定的是什么意思???不能在运行时或其他东西中更改??

0 投票
1 回答
94 浏览

timer - 使用 ICU - Atmega32 测量生成的波频率

我正在尝试以下列方式使用 ATMega32 输入捕获单元:

我有一个使用 TIMER0(通过 OC0 引脚)生成的波(XTAL=8MHz,预分频器 =1024,CTC 模式,OCR0=244,给出 ~32Hz)。然后我尝试使用 TIMER1(通过 ICP 引脚)捕获此波(XTAL=8MHz,预分频器=1024,正常模式,导致 ~7812.5 Hz)

代码片段提供了更多详细信息。

我只有0的结果的问题。

**

修改的。

** 非常感谢@clifford,根据下面的代码,它可以工作,但是:

1-有一点错误(结果不准确)。

2-当我改变我的方程式时

我在液晶显示屏上显示垃圾。

非常抱歉问题格式不好。

0 投票
1 回答
38 浏览

c - Atmega328p 中的 SPI COMM

我正在使用 Arduino Uno 板开发 Atmega328p,我的任务是使用寄存器级别的 SPI 通信,任何人都可以解释 DD_MOSI 的含义是左移“1<

0 投票
1 回答
202 浏览

c - ATMEGA32U4 PWM 问题

我正在开发一个简单的程序来在 Teensy 2.0 (ATMEGA32u4) 上的 AVR 中运行蜂鸣器,但我很难让 PWM 输出工作。PWM 输出在 PB6 上,我可以对其进行数字测试,所以我不担心蜂鸣器的硬件设置。

最终,PWM 将具有 50% 的占空比,并且频率将进行调制,但是,我更担心此时我没有得到任何输出。

我尝试了几种不同的 PWM 设置,甚至还运行了第二个计时器来完成其他任务。

这是我的设置和程序框架:

真的很难看到我哪里出错了,所以任何帮助都将不胜感激!

0 投票
2 回答
52 浏览

c - 如何在 C 中正确创建数组的副本或设置对数组的引用?

所以,我是 C 的新手,来自 Java/C# 背景,到目前为止我还不能完全理解它。

我要做的是对微控制器(在这种情况下运行 atmega32u4 的 Adafruit Feather)进行编程,以充当 Nintendo Switch 的 USB 耦合控制器并运行自动命令。

我试图扩展的项目是使用这样的命令结构数组:

现在最初这就是它的全部内容,程序将循环执行命令,向控制台发送一个按钮并在定义的时间段内“按住”它。当程序运行到数组的末尾时,它会简单地重置索引并重新开始。

现在我正在尝试基于一些简单的 if..else 查询向控制台发送不同的命令。具体来说,该程序将从日、月和年变量(Switch 控制台当前设置的日期)开始,并分别向前滚动天以到达未来的设定日期。为此,我想在每个“步骤”检查日期 +1 天是否有效,如本教程中所述,并根据结果滚动一天、一天和一个月或一天、一个月和一年向前。然后我希望它在设定的天数后结束。

我编写了几个命令数组来表示设置控制器所需的不同步骤,移动到它应该循环的地方,滚动一天,一个月或一年,如下所示:

我想将另一个数组复制成这样:

我知道这(非常)浪费内存,但我在 C 语言方面肯定还不够好,无法提出更漂亮、更保守的解决方案。

然后我进入我的程序,它看起来像这样:

最后(我发誓我很快就会完成),RunOnce 的开始看起来像这样

在程序的后期,将命令转换为控制台按钮按下的任务实际上运行一个固定数组,所以我想我只是将命令“标记”为活动运行,并且只运行活动数组。只是,它没有按预期工作:

程序运行,设置控制器,移动到日期设置并确实开始滚动日期,但是,无论第二天是否有效,它都会前滚一个月,然后是一年,然后它会卡住移动向上模拟模拟摇杆并无限期按下 A。

我认为问题在于我的 memcpy 用我接下来要运行的步骤覆盖活动数组,但我想不出解决它的方法。我尝试编写一个函数,该函数应该使用 for 循环逐个元素覆盖活动数组元素,但这样控制器甚至不会正确设置自己,实际上什么也没发生。通常使用任何类型的输出功能,我都会尝试在感兴趣的点进行打印,但我几乎无法获得关于我的微控制器的反馈。

任何帮助将不胜感激。

0 投票
1 回答
147 浏览

c - Proteus 8.6 + C 编程语言 - 通过常规按钮显示 LED 按钮 [已解决]

我有一个简单的硬件项目,任务很简单:我必须使用 ATMega32 微控制器打开带有响应常规按钮的 LED 按钮。作为 IDE,我们使用 Proteus 8.6 和 C 作为编程语言。我可以实现打开/关闭第一个按钮,但问题是类似方法不适用于其他按钮(您可以在第一张图像上看到它 - 前两个按钮被按下,但只有第一个 LED 亮起)。我不知道问题出在模式还是代码中。如果您知道如何在没有 8 个“if”块的情况下实现它甚至简化位逻辑,我将非常感激!

以下是架构和代码的图像: 架构 C 代码

已解决(使用一行代码,PORTC - LED 按钮的输出,PIND - 输入按钮的值):

PORTC = 引脚;

0 投票
1 回答
367 浏览

c++ - atmega32 8x8 LED 矩阵控制

我正在学习 avr,我有一个任务:在 led 8x8 矩阵上创建运行点。从上到下和从下到上两种方式。案例 0:没有 LED 工作(启动微控制器后默认) 案例 1:从上到下 案例 2:从下到上 从上到下:

从下到上:

这部分对我来说很好。但我需要通过点击按钮来切换它们。(中断方法)。如果我第一次单击按钮,模式切换到案例 1,但在第二次按下按钮后,它不再对我有用。

完整代码

PS。我正在使用 proteus 8. Proteus 项目

0 投票
1 回答
1197 浏览

avr - 使用 Atmega32 读取 AVR 中打开 LED 的按钮状态

我有一个程序应该从连接到 PORTA 的 DIP 开关中读取输入值,当按下 PC0 上的按钮时,它会将位输出到 PORTB 上的 LED,或者如果按下 PC7,则它会显示在 PORTD 中。当按下 PC3 时,它应该将两个字节相乘以存储为高字节和低字节的 16 位值。

问题是,一旦我按下按钮一次,结果就会显示在 LED 中。但是,在第一次按下按钮后,逻辑停止工作。例如,在 PORTA 上切换输入时,无论是否按下按钮,它仍会显示在 LED 中。

我无法确定问题到底出在哪里,我真的需要帮助调试它。

我正在使用 atmega32,在 Atmel Studio 中编程,并在 Proteus 中进行模拟。

我很感激任何帮助。

在此处输入图像描述

0 投票
1 回答
445 浏览

interrupt - 为什么 atmega32 的中断 INT2 不起作用?

在我的项目中,我使用atmega32. 但是,INT2不工作。读取输入,但没有发生与其余中断INT0INT1外部中断不同的情况。

代码

那么有什么问题,为什么它不起作用?