问题标签 [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.
microcontroller - 如何在 ATtiny84 上的快速 PWM 模式下输出与 OC1B 的比较匹配?
我的目标是从我的 ATtiny84 输出 1ms 高、50hz 的 PWM 信号。时钟以 1mhz 运行,因此我设置了比较输出模式,以便输出引脚应清除 19000 个时钟滴答并设置为 1000。
该设备以 5V 供电,我有一个示波器从引脚 A5 (OC1B) 读取平坦的 5V 输出,没有调制。我的代码在这里:
我不明白为什么这不起作用!
flash - 我需要 ATtiny1617 的引导加载程序吗
首先我是这个领域的新手,所以如果我问愚蠢的问题,请原谅。我过去曾使用 AVR 微控制器并使用过 arduino 的引导加载程序。在这里我需要使用 ATtiny16/17,我不知道我是否必须开发引导加载程序?引导加载程序是否可能已经集成在 µC 中?如果我不需要一个,在这种情况下我的程序将如何运行?
谢谢!
rgb - 我设计的这种可寻址的 rgb led 会起作用吗?
我对这件事相当陌生,我的语法也不好,但我们开始吧。我计划通过使用可寻址的 rgb sk6812 为我的学校项目点亮一个清晰的铸造小雕像,它的尺寸为 2020 年,因为它相当小(15 厘米)而且有点狭窄,所以对我的人物来说非常方便。我试图用一些效果来点亮它,比如爆发,请看我的 tinkercad 图片,对不起,这是我现在可以做的最简单的方法附加设计
如您所见,我尝试将整个 LED 分布在每个肢体上,将 1 号(首先获取数据)LED 放置在胸部,我想我是否可以将数据线从 1 号 LED 扩展到接下来在它周围引导,依此类推,会产生类似涟漪/爆裂的效果,对于狭窄的电缆也很抱歉,因为我的 sk6812 在 tinkercad 上只有 4 针而不是更大的旧 6 新像素,所以我让它尽可能接近我的情况,将它可以在没有任何未来问题的情况下工作吗?这件事会持续 3 天,服装也只是一个例子,我将使用 5-12v 供电的 LED 灯条控制器进行真正的交易,比如这个BTF SP105E 蓝牙控制器,它可能已经检查了所有的供电LED(它的手机也被控制了!)。
每个led都需要旁路电容吗?或任何额外的电阻?我的朋友说控制器有很多图案,而且速度可能很快,以至于他担心 LED 的寿命会缩短,但由于我们俩都是新手,我想在这里为一些有经验的人听听。
这是我的 tinkercad 草图链接
任何帮助都会很棒!谢谢你。
microcontroller - ATTINY 85 睡眠模式
我是编程微控制器的新手,我刚刚开始使用 Attiny85。我正在尝试建立一个带有触觉开关的 LED 电路。每次按下触觉开关时,它都会使 LED 跳到下一个操作状态。因为它是电池供电的,所以当 LED 熄灭时,我希望 attiny 85 消耗尽可能低的电流。截至目前,当 LED 在没有睡眠模式的情况下关闭时消耗 4mA。所以我尝试了 Attiny 85 的断电模式,但有些我是如何陷入断电模式的
它已成功进入睡眠模式,但我无法摆脱它。可以请人帮忙。我希望 Attiny 85 在再次按下触觉开关时退出睡眠模式。开关位于引脚 7 上,即 attiny 85 的 PB2。
arduino - digispark 不打印符号 \,
我在 digikeyboard.printIn 中写入 \ 符号时遇到问题,该行停止突出显示并输出错误
D:\documents\Arduino\powershell_write.ino: 在函数 'void loop()' 中:
powershell_write:67:24:错误:不完整的通用字符名称 \U
DigiKeyboard.println("$path = 'C:\Users\Public\passwords.png'");
powershell_write:92:24:错误:不完整的通用字符名称 \U
DigiKeyboard.println("$ReportEmail.Attachments.Add('C:\Users\Public\passwords.png')");
退出状态 1 不完整的通用字符名称 \U
提前感谢您的帮助
c - attiny13 pwm led 完成开关
对不起我的英语不好。我在使用 pwm 的 attiny13 上有一些问题。pwm 在调整时效果很好。然而,当 OCR0B 值变为零或最大值时,led 不会完全关闭或打开。我尝试使用“ PORTB &= ~ (1<<); ”,而 OCROX 为零,但它不起作用。之后我发现我必须添加“ISR(TIM0_COMPA_vect)”进行中断。我最近开始做微小的工作,所以这对我来说太难了,尤其是 avr 方面,请忽略我的文盲。这是代码,我用过。
我发现另一个代码通过使用带有两个按钮的中断成功打开、关闭和调整 LED,但我不明白代码如何在 OCR0X 上写入值。有人可以在第二个代码处向我解释 OCR0X 和 duty(count, pwm value) 之间的联系。因为我需要在那些 OCR0X 中写入常量值。
c - ATtiny85 - 带 Timer1 的软件 UART
所以最近我尝试为 ATTiny85 实现软件 UART(仅限 TX)。我想用内部Timer1驱动它。
定时器应以波特率的频率中断。每个 ISR 都会发送一位,直到没有任何内容可发送,中断将再次被禁用。
(注:F_CPU=1000000 ;保险丝为出厂默认设置(E:FF, H:DF, L:62))
使用此设置,接收器仅收到 0x00 或 0xFF,偶尔还会收到一些其他垃圾(取决于波特率)
最终,我尝试在没有中断的情况下实现相同的目标:
令人惊讶的是,这两个函数都按预期工作,所以我想我把 Timer1 搞砸了。遗憾的是我没有示波器,所以我无法手动检查信号。但总的来说,使用 Timer1 时信号似乎有点慢。设置应每 1664µs 中断一次:
- 波特 = 600Hz
- CK = 1MHz
- Timer1DIV = 8
- Timer1CK = CK/Timer1DIV = 125kHz
- OCR1A = Timer1CK/波特 = 208
- 延迟 = (Timer1DIV * OCR1A)/CK = (8*208)/1MHz = 1664µs
谁能告诉我,为什么中断方法没有按预期工作?
更多信息:
- Vcc = ~4.52V (~25°C)振荡器应该足够精确
- Timer1 预分频器,表 12-5
- Timer1 概述
- 默认情况下 Timer1 使用 CK (1MHz) 而不是 PCK(我已经尝试手动将其设置为 CK)
- 工具链:avr-gcc
timer - attiny85 bit bang uart 与 arduino
我尝试为 ATtiny85 实现仅 TX UART 并使用 arduino micro 接收位。(类似的问题没有帮助,因为它与我的情况完全不同)
我的意图是能够通过 attiny85 -> arduino -> 控制台打印,这样我就可以调试 attiny85,因为我没有可用的示波器。
attiny85 保险丝是:"efuse:w:0xff:m -U hfuse:w:0xdf:m -U lfuse:w:0xf1:m"
又名。16MHz F_CPU arduino 似乎也有 16MHz F_CPU
类似于提到的问题 attiny85 通过 timer0 ISR 一次发送一位:
然后arduino接收位:
我已经尝试了几乎所有的方法来使它工作,但是收到的字节又变成了垃圾。我错过了什么?
注意:我timer0
在 attiny85 和timer1
arduino 上使用。
已解决:将 ISR 切换为 TIMER1_COMPAB_vect 并且 OCR1B = 64 确实有效!耶!
c - _delay_ms 在使用 pwm 时似乎不起作用
我对微控制器编程比较陌生,所以我开始在 ATtiny85 上进行试验。
第一个程序只是打开一个 LED 并稍有延迟(经典闪烁程序)。
现在我想慢慢增加 LED 的亮度。这是代码:
我预计 LED 会关闭半秒钟,然后增加亮度。但是,如果我运行代码,LED 就会变得更亮,就好像_delay_ms(500)
被忽略了一样。
该analogOutput
函数的灵感来自 Arduino 库的函数。
这里有什么问题?为什么延迟没有按预期工作?
编辑
我改变了我的循环功能,新内容:
这行得通,我现在有一个 LED 可以不断地从变暗切换到完全打开和返回。
assembly - ATMEL 汇编器 .DB 抱怨“未对齐”
我在 ATMEL Studio 7 (ATtiny84A) 中使用了一个汇编器项目,但遇到了一个奇怪的问题。在一个代码段中,如果 a.DB
有两个字节就可以了,但是两个.DB
在不同的行上会给出一个错位警告。
我理解什么是错位,但我不明白为什么编译器会抱怨,因为将数据放在一行而不是两行会以完全相同的顺序产生完全相同的数据量。
我是否需要一些“打包”指令来让它理解这应该被视为同一块数据?
将它分成一个 .DB 每行的原因是因为它定义了字符字形,像这样
以这种方式设计/更改字形要容易得多。
编辑:
好的,我想通了。您可以简单地用 \ 分割一行
我想它很困惑,因为它.CSEG
是面向单词的。但是编译器应该足够聪明,可以自己解决这个问题。