问题标签 [atmega]

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

serial-port - ATMEGA32 UART 通信

我正在尝试在 ATMEGA32 中进行串行通信,但我有一个问题:

在异步串行通信中,寄存器UBRRHUCSRC寄存器都具有相同的位置。我不知道该位置将充当UBRRH哪些条件,以及对于哪些条件,它将充当UCSRC. 根据分配给这些寄存器的工作,我需要每个寄存器的不同值

在数据表中,他们提到了使用URSEL位在两个寄存器之间进行选择,但不知何故我不明白。

0 投票
1 回答
552 浏览

assembly - 装配 - 使用超过 2 个按钮进行中断?

我正在使用带有 Atmega8535 微控制器的 STK200 板。我使用 INT0 和 INT1 按钮作为外部中断,但为了初始化 INT0,我必须将第 6 位设置为 1,而要初始化 INT1,我必须将第 7 位设置为 1,因此没有更多空间来初始化其他按钮。

我的讲师告诉我,可以使用更多按钮来引起中断,但这超出了我正在学习的那一年(第一年软件工程)所需的知识。

没有中断,我不知道如何处理按钮。所以我需要如何处理按钮或如何使用更多按钮作为中断的建议。

0 投票
0 回答
435 浏览

atmel - ATMEGA32 UART 通信

我正在为 ATMEGA32 中的 UART 异步通信编写代码,但我很困惑如何为 UCSRC 和 UBRRH 寄存器提供两个差异值,因为它们具有相同的位置,并且根据它们的功能,我需要在这些寄存器中有 2 个差异值

根据数据表,要写入 UCSRC,必须设置 URSEL 位,要写入 UBRRH,必须重置 URSEL 位。但是在 Atmel Studio 6.0 URSEL = 1 不会在两个寄存器中写入任何内容,另一方面,如果 URSEL = 0 则两个寄存器都会写入相同的值(由于分配给这些寄存器的工作,我不想这样做) …………

我已经在 Atmel Studio 6.0 调试器中检查了所有这些............谁能帮我做什么??????

0 投票
1 回答
667 浏览

assembly - ATMega 48P 为两个带 FPWM 定时器的直流电机供电,组装时不是 C

所以我正在尝试完成我的实验室任务,并通过将我的引脚设置为脉冲来不断遇到这个问题。我想在 PWM 模式下使用两个定时器来生成正弦波来驱动我的电机。我需要让计时器一次闪烁一个端口'(OCR * A)',然后在另一个'(OCR * B)'再次闪烁并将计数器重置为零。

我不太在意端口上的哪个引脚闪烁,只要我可以控制 OCR*A 和 OCR*B 之间的差异,例如,我可以在一个中获得 70% 的功率,在另一个中获得 30% 的功率。我想要两个定时器,所以我有独立的电机控制,但如果我可以用一个定时器来做也可以,只要电机可以设置为不同的占空比。

最后一个问题,我所有的代码都必须是汇编代码。我不希望你为我编写代码,但我一遍又一遍地阅读我的手册,并且对我如何将计时器设置错误感到困惑。

这是我到目前为止的代码。我的代码编写方式我认为它应该闪烁 OCR2A 和 OCR0A 但我不确定。请让我知道并再次感谢您。


0 投票
3 回答
1124 浏览

c - C 中 AVR 上的舍入数字

我正在为 AVR(C 语言)编写代码,以连续改变三个 PWM 通道的占空比。为此,我编写了一个函数,它以百分比形式接收一个值并将某些寄存器设置为由百分比和定时器的 TOP 值确定的某些值。伪代码——

但是,除非 duty = 100,否则这是行不通的(没有 PWM 输出)。

我尝试在 math.h 中使用 round() 函数,但这也给出了类似的输出,并使编译的文件变得不必要地大。我尝试了其他方法,例如——

但没有一个工作。有人可以帮我吗?谢谢!

0 投票
1 回答
33018 浏览

timer - Arduino纳米计时器

我想了解更多关于Arduino Nano计时器的信息。

  1. 有哪些计时器?
  2. 他们会产生中断吗?
  3. 什么代码会将中断处理程序附加到它们?
  4. 如何delay()delayMicroseconds()实施...
    • 他们使用定时器中断吗?(如果是这样,在此期间如何执行其他代码?)
    • 还是他们反复轮询直到计时器达到某个值?
    • 还是他们将值增加 X 次?
    • 还是他们以另一种方式做到这一点?
0 投票
0 回答
892 浏览

inline-assembly - `asm("" : "+r" (myVar));` 在 AVR-GCC 中是什么意思?

我在别人的代码中发现了以下几行:

someConstantFactorVariable位于一个常用函数中,我猜代码的作者希望它能够将变量永久加载到寄存器中。我对吗?使用这种方法代替register变量定义中的关键字有什么好处?

0 投票
1 回答
1754 浏览

assembly - Atmega8535 INT0 INT1 INT2 INT3

我正在使用 Atmega8535 微控制器和 STK200 开发板,我试图使用多个外部中断,但由于某种原因,只有 INT0 工作,其他人什么都不做,这里是相关代码:

0 投票
2 回答
1329 浏览

c++ - 使用 AVR 微控制器运行 TX433 和 RX433 射频模块

我正在尝试将 RF 模块与 AVR ATmega 128 连接。我发现这段代码很有趣,但我无法理解这两行:

0 投票
1 回答
3458 浏览

python - 使用 pyserial 通过串行连接发送二进制数据

我想以此作为开头,指出我现在真的迷路了,所以我说的有些话可能没有意义,因为我不知道我在说什么。只要有帮助,请随时剖析我的问题。

好的,所以我正在做的整个项目是用 python 编写一个程序来与一个定制的温度控制单元(用这个芯片构建)接口,并从存储数据点的内存缓冲区复制数据。

我不是编写它的人,我只是放弃了我对 Arduinos 的有限经验(我也是 python 新手)。以下是我收到的一些关于与它交互的命令的信息:

我可以con.write('p')很好地使用,然后使用con.readline()I get back\x00\x00pEQd\x03转换为十六进制是 7045516403 (注意发送和返回的值是小端序)。

我的问题是'd'命令。我想我需要将 'd' 作为一个字符串连同两个 32 位二进制值一起发送,但我不知道该怎么做。我什至不确定要问的正确问题,你们可以提供的任何帮助将不胜感激。

浏览互联网资源(几个小时)我想我可能想使用 struct 或者类似的东西?我真的很喜欢一个例子,展示连接、写入和读取到/从串行端口的整个过程。