问题标签 [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.
arduino - ATtiny85 I2C SSD1306 屏幕不工作
在我收到我的 SSD1306 I2C 邮件后,我已经在这个问题上待了 3 天多。我有一个来自 Sparkfun 的 Tiny Programmer,我将它与面包板一起使用。
这是我的引脚布局:pin2-->SDA,pin3-->SCL。SSD1306 Arduino library 上的文档指出,即使我知道 SDA 是 pin5 而 SCL 是 pin7,我也必须使用这些引脚。电源和接地从 Tiny Programmer 跳到 OLED。
我遇到的主要问题是 OLED 没有亮起或显示文本。
我为此使用的代码是:
编译时没有错误消息,老实说,我不知道发生了什么。
我已经尝试交换 SDA 和 SCL,但仍然没有。我什至使用了实际的 SDA 和 SCL 引脚,但仍然没有。我觉得我没有选择和/或 OLED 坏了。我只是看看在我尝试更换之前是否还有其他事情可以做?谢谢你。
avr - ATtiny85 内部时钟和单线
ATtiny85 上的内部时钟对于单线计时是否足够准确?
根据https://learn.sparkfun.com/tutorials/ws2812-breakout-hookup-guide单线计时似乎需要 0.05us 范围内的精度,因此 8MHZ 的 AVR 上 10% 的时钟误差会导致 0.0125us 大小时间差异(假设 10% 的误差数字是准确的,并且它是 10% 的频率误差,而不是每个脉冲的 +/- 10% 方差)。
不是很多利润 - 但它足够好吗?
arrays - ATtiny 用错误的值写入数组 | Arduino IDE | 小线
这是我在这里的第一个问题,我希望我没有踩到任何人的拖车:-)
目前,我正在为我的电动滑板车开发一个模块化电池管理系统,该系统基于一个 ATtiny85 作为主机,多个 ATtiny85 作为从机。每个从站都在监视一个单元(或多个并行单元的阵列),并且还使用该单元为自己供电。为安全起见,它会读取电池的电压并读取该电池的温度传感器。它通过隔离的 I2C 总线将这两个信息发送到主控,主控将对其进行分析,并最终发送一个响应,如果这个单元应该激活平衡。
因此,我正在使用 digispark 引导加载程序并使用 USB 刷新软件。我正在使用 Arduino IDE 编程的软件本身。
到目前为止,我设法在使用 TinyWireS 的从站和使用 TinyWireM 的主站之间建立了良好的连接。我成功地将数据从多个从站发送到主站,反之亦然。
但是,当我以某种方式从总线上移除一个或多个从站时,读取例程将用先前接收到的数据填充未接收到的数据,并且不会写入空行或零。
这是相关的例程,我在其中轮询从站地址并分别向每个从站询问 4 字节的有效负载。从机将测量的电压和温度分别分成两个字节,并将结果的 4 个字节分别通过 I2C 总线发送。
主机将接收 4 个单独的字节并将它们再次组合成电压和温度,并将它们写入与其单元编号匹配的位置的数组中。
一个演示错误的小例子:总线上应该有 14 个从站 (CELL_COUNT = 14),一个或多个从站(比如说 5 和 6 号)出现错误并且没有传输 4 个字节。所以主设备在一个小的 OLED 显示器上显示从设备的所有数据。而不是在第 5 行和第 6 行显示 0,master 显示相同的第 4 行值。
显示的前半部分将如下所示:
4125
4035
4156
4137
4137
4137
4089
此外,您可以在下面找到完整的代码:
我希望有人能指出我正确的方向来解决这个问题......
sleep - Attiny85 睡觉但保持millis runnig
我有一个 digispark Attiny85 板。有没有办法在板上设置睡眠但保持millis运行?我正在研究小型低功耗手表,我这里没有 RTC,所以我需要从毫秒那里获得时间。
avr-gcc - ATtiny85 PWM 频率低于预期
我是编程 MCU 的新手,正在尝试在 ATtiny85 上使用 PWM。我在网上四处寻找各种教程,并设法让它与下面的代码一起工作。我的问题是我希望 PWM 频率为 8MHz/256 = 31.25kHz,但实际上是 3.9kHz,这表明正在使用 8 的预分频器值。我查看了数据表,但仍然无法弄清楚。
我正在使用带有 avrdude 和 avr-gcc 的 Raspberry Pi 对 MCU 进行编程,按照以下说明: http: //www.instructables.com/id/Programming-the-ATtiny85-from-Raspberry-Pi/
任何帮助或建议将不胜感激。谢谢 :)
avr - 为什么 avrdude 不闪现我的 attiny44?
过去我可以多次闪烁我的 attiny85 和我的 attiny44 但由于某种原因,最近我无法闪烁我的 attiny44 并收到此错误:
“avrdude:初始化失败,rc=-1 仔细检查连接并重试,或使用 -F 覆盖此检查。”
我确信我的关系很好。我把它放在一个面包板上,所有的电线都按照我一贯的方式连接,ICSP 接头的方向正确,等等。我已经研究了一段时间,发现你可以通过设置错误的保险丝位来破坏你的 MCU . 有没有可能我是偶然做到的?我不知道如何操作熔丝位,所以我不认为我可以在那里做点什么,虽然我想也许通过改变 CLKPR 寄存器中的值,这会改变熔丝位吗?(如果有人能给我指出一个关于什么是保险丝位以及如何编辑它们的好教程,那是我需要填写的理解领域)
如果不是熔断位疯狂,那么我应该尝试追查哪些其他可能的原因?我知道我总是可以购买更多的 MCU,但这种情况在我之前用不同的 AVR 发生过好几次,我也想确定未来解决此问题的最佳方法是什么。任何建议表示赞赏。
如果有帮助,我正在使用 sparkfun (usbtiny) 的 avr 袖珍程序员。
注意:我不确定这是否是此问题的正确堆栈交换站点。如果没有,是否应该在电子堆栈交换或可能的 arduino 堆栈交换上询问?
c - 带有 & 操作的 uint64_t 变量
我有一个函数在 64 位变量(RFID 标签号)中搜索一系列九个“1”,如果找到,将它们移动到 MSB。我很难理解为什么它不能正常工作。
这是我的变量
我将它作为指向函数的指针发送
这个条件永远不会满足,但是如果我将条件更改为:
它似乎运作良好。
更重要的是,我写了另一个条件 - 这是有效的。
正如我所看到的,这是 AND '&' 操作的问题。此外,当我将 RFID_data 更改为 32 位变量时没有任何问题。我正在使用 Attiny441 和 GCC 编译器,Atmel Studio 有没有办法让它在 64 位上工作?
我将函数更改为采用 uint64t(非指针),但问题仍然存在。我还尝试创建全局变量,并删除 volatile 修饰符,但它仍然无法正常工作。使用宏 UINT64_C 也无济于事。看起来像 :
我还尝试通过全局变量检查 if-condtion:
在这两种方式中,它都不会返回 1,也不会改变 PORTA2 的状态。
它仅在我在 header_allgin 中创建新的局部变量时才有效,如下所示:
是通过全局变量还是通过函数参数使其工作?
arduino - 使用 Arduino、ATTiny85 和一个简单的蜂鸣器创建振荡音调
首先介绍一下背景。我正在尝试让 LED 发光,而蜂鸣器会发出一种在频率上上下平滑扫描的音调,就像空袭警报器一样。我正在使用 Arduino Uno,连接到以 8hz 时钟速度运行的 ATtiny85 芯片。SPDN 触点开关用于在 4 上提供输入,而 0 和 1 分别输出到蜂鸣器和 LED 的正极。使用合适的电阻器来限制电流,这是来自 Arduino 板的 5v。
现在,我的问题。我可以在任何我喜欢的频率下产生恒定的音调。我可以产生一种在两种音调之间来回切换的音调,例如英国警笛(Dee-Daa-Dee-Daa 等),但我无法在两种音调之间产生平滑过渡。LED 按预期工作。
我实际观察到的是一个不变的单一音调。一两次我设法产生了一种变化的音调,但在给定的范围内是随机的,而不是平滑的。
我没有使用tone()
Arduino 命令,也不想使用,因为它不适合我想要完成的任务。
这是我的代码:
arduino - Arduino/Attiny85:ISR 和端口操作延迟
我试图让一个引脚上的输出与另一个播放 a 的输出相关tone()
,但有 35us @8MHz 或 158us @1MHz 时钟的延迟。似乎有一个固定的 16us +142 个时钟周期延迟,因为延迟与时钟频率不成反比。它们非常非常长!为什么?
这是代码:
c - 快速 PWM - OC0A (PB2) 上的 ATtiny2313
我试图用 ATtiny2313 在 OC0A (PB2) 上发送一个 PWM 信号,但由于某种原因,端口 B2 上没有任何反应。我的代码显示如下:
PB0 上的 LED 闪烁,但示波器上没有显示 PWM 信号(在 PB2 上),并且 PB2 上的 LED 仍然熄灭。我是否错误配置了 MCU?
ATtiny13A 上的类似代码仍在工作。