问题标签 [attiny]

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 投票
0 回答
636 浏览

spi - Attiny 84 通过 SPI 故障与 RTC 通信

我目前正在尝试使用 ATtiny84 通过 SPI 与 RTC (DS1305) 通信,以使蜂鸣器每隔可变时间振动一次。我一直在尝试在 DS1305 上设置 alarm0。然而,84 并不“技术上”有 SPI。它有USI,可以编程为SPI。我想知道你们中是否有人可以查看我的代码/电路板连接,如果您发现任何问题,请告诉我。当前的问题是我无法通过 SPI 进行任何通信,而且我无法找到问题所在。

当前电路板连接:

阁楼84 | DS1305

莫西 ------ DI

味噌 ------ 做

USCLK ---- 时钟

数据表:

阁楼84

DS1305

董事会视图

示意图

在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
770 浏览

arduino-uno - Attiny85 与 ArduinoUno 用于 I2c 通信

我正在研究用于 I2C 通信的 attiny85。我已经浏览了不同的库,例如Wire.h, TinyWire.h, tinyWireM.h, tinyWireS.h.

一开始,我想通过 I2C 通信发送一些数据字节,并尝试用示波器对引脚进行范围,但它没有给我适当的结果。在互联网上寻找使 attiny85 与 I2c 一起工作的不同方法真的很无情,我无法完成任务。最后,我试着让 attiny85 做主人,把 arduino Uno 做奴隶,因为它在我的盒子里是备用的。

我试图将 attiny85 设为 master 并将数据发送到 arduino 并在串行监视器上查看输出,但它显示为零。

作为参考,附上主代码和从代码,我的任务很简单,检查串行。

Attiny85 作为 Master

Arduino作为奴隶

但我无法在 arduino 的串行监视器上获得输出。我在这里做错了什么?

0 投票
2 回答
243 浏览

c - 包含 math.h 库时程序内存不会增加

我是Atmel世界的新手。曾几何时,我可以用Visual Studio编写和编译 C,但有点不习惯。

所以我试图了解微控制器ATTINY1616中的内存使用情况。我打开了 Atmel 工作室,创建了一个 C 可执行项目并选择了正确的微控制器。我构建了其中几乎没有任何内容的项目,并看到程序内存是154 bytes. 这是我的底线。

现在我尝试添加该行#include <math.h>以查看我的程序内存使用量是否会增加。它没有。然后我尝试float a = 2.000678f;main. 项目建成后仍然没有增加。我在这里有什么误解?

0 投票
2 回答
725 浏览

avr - 用于 4 个 LED 的 ATtiny85 PWM

我需要在 ATtiny85 上通过 PWM 控制 4 个单独的 LED。我找到了很多关于如何控制 3 个 LED 的信息。但显然要使用 PWM 控制 4,您必须真正将 85 扭成结。有没有更简单的方法来处理 85 上的 4 个 LED,还是跳到 84 上会更好?如果我选择 84,我是否会遇到与 85 相同的砖墙?

我在 85 上找到了控制 4 的代码,但它超出了我的技能水平。有人看到它有什么问题吗?

0 投票
1 回答
1105 浏览

avr - 使用 arduino IDE 进行 pwm 时 ATTINY85 省电(睡眠)

我已经在 ATTINY85 数据表、谷歌和不同的论坛上度过了一个完整的工作日,但睡眠的东西对我来说只有部分意义。

项目目标:我正在构建一个迪斯科球速度控制器,为廉价的中国电池供电迪斯科球旋转器中的微型直流电机供电和 pwm 控制。

硬件:便宜的移动电源(5V USB 端口输出)-> 来自 ebay 的常见 ATTINY85 digispark 克隆板 -> 带 n-FET 的 pwm -> 电机。一键切换速度设置。

启动后,我运行设置循环来监听按键(实际上是最终形式的电源开关的快速轻弹)并在几个预配置的 pwm 设置之间进行更改。自上次按键后约 2 分钟后,正在使用的设置将保存到 EEPROM 以供下次启动。这一切都在起作用。

更新 EEPROM 后,我想尽量减少功耗,因为迪斯科绝不能停止。从阅读各种教程和数据表来看,使用 pwm 时似乎只有 SLEEP_MODE_IDLE 是可能的。

我想尽可能地使电路板僵尸化,只需保持 pwm 的设置即可。永远不需要醒来。

实际上可以关闭哪些其他东西以及如何正确关闭?提示和建议?

到目前为止,这是我微弱的尝试。它有点工作,我设置的调试 LED 保持在 pwm = 30 (在主循环中它脉冲)但系统在按钮按下时唤醒(进入主循环 - LED 开始脉冲)所以我怀疑还有更多工作要做。

整个程序:http ://uvkk.kirah.fi/jotainmuutarandomia/randomfiles/liskodiskoboltsi.cpp

添加 1 11.2.2019:

当前情况,电源开启 LED 已移除,调试 LED 在睡眠时关闭(循环时每秒闪烁 2 毫秒),只有电源连接到电路板,从地线测量:
1 MHz:13,8 ma 循环,12,9空转
8 MHz:19,0 ma 循环,15,1 ma 空转
16,5 MHz:24,7 ma 循环,17,9 ma 空转

我认为这使它运行在 500kHz:1MHz 设置但clock_prescale_set(clock_div_32);在 setup() 中。至少一秒的闪烁现在是 2 秒长,电流消耗循环为 13.2 ma 和空闲 12.6 ma。

但这些数字太高了......我在这里做错了吗?尽管我直接给 5V 引脚供电,但板载稳压器能否释放电流?

0 投票
1 回答
337 浏览

arduino - ds1307 在 attiny85 上运行缓慢

有人知道为什么ATTiny85连接到ds1307晶振获取时间刷新频率变慢吗?

新的时间值刷新更改为 4 秒。它在arduino(UNO)上运行正常。ATtiny 时钟(内部 8 Mhz)

谢谢。

0 投票
0 回答
121 浏览

raspberry-pi3 - 如果 ATtiny25 上的 0x200 之后的主函数地址,Avr C 代码不起作用

我正在使用在 Arch ARM 上运行的树莓派 3b 对 ATtiny25V 进行编程。为此,我使用了 avrdude 的修改版本: https ://github.com/kcuzner/avrdude

首先它工作得很好,但后来我注意到,在某些时候,添加更多代码会使微控制器无法工作。(例如,如果 Iput 仅打开一个 LED 并在主电源中永久循环,则 LED 不再亮起)。

我曾经avr-objdump -S检查过生成的代码,我说只要 main 函数位于之前0x200,那么它似乎可以工作,并且一旦它被进一步放置(因为代码增长),什么都没有发生。

avrdude 似乎在触发错误的图像上闪烁得更快(尽管它更大)。

我在互联网上没有发现任何类似的问题,因此,如果有人知道可能导致问题的原因是什么?

注意:ATtiny25V 有 2K 闪存、128B eeprom、128B SRAM

编辑 2:

我尝试使用最新的 avrdude http://download.savannah.gnu.org/releases/avrdude/

%ud-> %d http://savannah.nongnu.org/bugs/?47550的补丁

...但同样的行为

编辑 3: 我试图将除 main 之外的所有功能重新定位到另一个放在 0x200 的部分(以便 main 位于之前)......但它不起作用。所以也许失败条件是放在 0x200 之后的任何函数

编辑: 我尝试使用不同的 ATtiny25V 芯片,但它们的行为都相同。

avr-gcc -Wall -pedentic [...]告诉我没有错误,也没有警告 avrdude告诉我所有字节都已验证。+ 字节数 < 2K。

avr-objdump working.elf -S

avr-objdump failing.elf

0 投票
1 回答
4422 浏览

avr - 为什么#define F_CPU 对AVR 代码_delay_ms_() 函数没有影响?

我正在使用带有扩展名 Visual_Micro 的 MS_Visual_Studio 使用 Arduino1.6/1.8 Gemma 板定义对 ATtiny85 进行编程。程序员是 Sparkfun Tiny Programmer。
这是使用的非常简单的代码。(感谢 InsideGadgets YouTube 频道“即时更改 ATtiny85 时钟速度)。它再简单不过了。

然而,尽管我将 #define F_CPU 1000000 更改为 #define F_CPU 8000000,但对大约 2 秒的 LED 闪烁周期绝对没有影响。
尽管对 F_CPU 进行了任何更改,但 ATtiny85 的时钟频率似乎为 1MHz。
我在 CLKPR = 0 上测试了 CLKPR = 3,这会将预分频器的因子从 1 更改为 8。
这应该会使延迟延长 8 倍,它确实如此。我搜索了有关 F_CPU 定义的一些详细信息,但找不到对此行为的任何解释。

问题:为什么F_CPU从1MHz定义到8MHz后_delay_ms(1000)没有影响?

0 投票
1 回答
161 浏览

microcontroller - ISR INTO_vect 设置

我正在尝试使用外部中断闪烁 LED 的简单任务。我使用的是 ATtiny10,所以只有一个用于中断的引脚(PB2)。

ATtiny10_datasheet

主要问题:我是否错误地设置了中断?我拉高了 INT0 引脚 PB2 的内部电阻。我还没能到达要中断的事件。如果需要更多信息,请告诉我。感谢大家。

0 投票
1 回答
94 浏览

arduino - ATTINY84:反转字节顺序的奇怪问题

我将 6 个值(4x 3bit + 1bit)编码为 16bit 整数,并通过串行将它们传输到 ATTINY84,将它们分成 2 个字节。这一切都很好,直到我将字节重新组合成一个 16 位整数。

例子:

我正在发送以下二进制状态0001110000001100,该状态转换7180[18, 28].

我将该字节数组放入 EEPROM 并在下一次电源循环时读取它。

重启后,我的串行调试输出如下所示:

惊人的。看起来一切都很好,我的那部分代码是:

但现在最奇怪的事情发生了。当我逐位阅读时,我回来了:

通过:

位表示完全相反。这怎么可能?或者,也许我错过了一些东西。

我还确认,当我提取实际的 3 位位置以接收我的原始值0..7时,它全部关闭。

任何帮助,将不胜感激。