问题标签 [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 - 如何执行 USB 主机指纹识别?
我有一个由 ATtiny85 微控制器供电的 Digispark 板,引导加载程序是微核,它在软件中实现 USB 协议。
我想区分设备正在插入的主机(理想情况下是唯一的,或者足够接近)。
我一直在用 Wireshark 分析 USB 流量,但其中很多让我感到困惑。
那么在从上到下深入理解USB协议之前,你认为一开始可以做这样的事情吗?
我在想可以使用实现特定的细节,或者主机是否有 USB VID 和 PID?
谢谢
arduino - 如何将 attiny85 与源文件集成?专门将 Timer0 更改为 Timer1 以避免定时器使用冲突
我正在尝试使用按钮和 ATtiny85 控制计时器上的伺服电机。我可以使用 ATtiny 按下按钮使 LED 闪烁,但是一旦包含伺服库,我的代码就无法工作。
我曾尝试使用 Servo.h 库和 Servo8Bit.h 库,但都不起作用。我认为问题可能来自一个定时器用于两种不同的事情,所以我进入了 Servo8Bit.h 和 Servo8Bit.cpp 源文件并将所有 Timer0 更改为 Timer1 并将所有 TCCR0B 更改为 TCCR1B。
当我尝试上传代码时收到以下错误消息:
预期的结果是上传代码后我会按下一个按钮。在指定的时间后,在这种情况下为 10 分钟,电机应该移动,但代码甚至没有上传。
arduino - 为什么无论输入如何,adc 总是读取 1023
我正在尝试使用 attiny85 中的 ADC 读取模拟电压。但是无论给出什么输入,ADC 寄存器总是读取 1023。
此外,当用万用表测量 ADC 引脚时,它显示接近 3.1V。我以为它被拉高了,但事实是,当我将引脚连接到其模拟输入时,引脚上的电压会干扰输入电压电路。我不知道为什么会这样。相同的代码在 6 个月前运行良好,但现在不行了。原因不明。谁能解释我实际上做错了什么?我使用 USBasp 作为我的程序员,使用 attiny85 作为我的目标微控制器,使用 arduino 作为我的编译器。我也尝试使用 WinAVR 进行编译,但模拟输入引脚的电压仍然接近 3.1V。提前致谢:)
更新
下图描述了相同输入电压下不同 ADC 通道的输出。
c - 无法对 AVR 进行编程以解释来自 Arduino 旋转编码器模块的输入
我一直在尝试对我的 ATtiny817-XPRO 进行编程以解释来自旋转编码器(Arduino 模块)的输入数据,但是我遇到了一些麻烦,似乎无法弄清楚问题所在。我要做的基本上是对数字组合锁进行编程,每次旋转编码器旋转一个“滴答”(在任一方向)时,红色 LED 都会闪烁,一旦检测到正确的“组合”,就会闪烁绿色 LED . 它比这更复杂一些,所以当我在测试我的代码时遇到麻烦时,我决定编写一个简单的方法来帮助我解决/调试问题。我已将其包括在下面:
这里的想法是,无论哪条输出线首先到达 AVR,都应该指示旋转编码器的旋转方向,因为这决定了两个信号之间的相移。根据旋转方向(或没有旋转方向),红色/绿色/蓝色 LED 将闪烁一次 500 毫秒,然后程序将再等待 500 毫秒,然后再次收听旋转编码器输出。但是,当我运行此代码时,LED 将持续闪烁一段时间的红色或绿色,最终从一种颜色切换到另一种颜色,偶尔(单次)蓝色闪烁。这似乎每次都是完全随机的,并且似乎完全忽略了我应用于旋转编码器的任何旋转。
我为解决问题所做的事情:
将旋转编码器的两个输出连接到示波器以查看是否有任何输出(一切看起来都应该)
使用外部电源为旋转编码器供电,因为当我连接到 ATtiny817-XPRO 时,我只能从 5.0V VCC 引脚读取 1.6V(我怀疑这是因为 LED 和旋转编码器可能消耗太多当前的)
测量来自所述电源的电压以确保旋转编码器接收到 5.0V(我测量到大约 4.97V)
检查以确保电路正确并正常工作
不幸的是,这些事情都没有解决手头的问题。因此,我怀疑我的代码可能是罪魁祸首,因为这是我第一次尝试使用旋转编码器,更不用说解释由旋转编码器生成的数据了。但是,如果我的代码看起来应该可以正常工作,我将不胜感激,这样我就可以将精力集中在其他地方。
任何人都可以阐明可能导致此问题的原因吗?我不认为这是一块有问题的电路板,因为我在两天前将这些引脚用于不同的应用程序而没有任何问题。此外,在 AVR 方面,我还是个新手,所以我确信我的代码远未达到应有的健壮程度。
谢谢!
avr - 当接收时钟和从机选择作为输入时,尝试通过 SPI 作为从机发送 10 位数据(带缓冲模式)
我正在尝试模拟来自 10 位 AEAT-6010 旋转编码器的数据,并将其发送到 ATtiny3217 上 SPI 协议的 MISO 引脚上。ATtiny 充当从机,接收 CLK 和 SS 信号作为输入,通过输出数据(编码器值)来响应。编码器按照SSI协议发送数据,如下图:
当尝试在 ATtiny 上发送 8 位 SPI 协议的 10 位时,就会出现问题。SPI 协议的主控芯片是 TMS320F2808 芯片,我从它接收 11 个时钟脉冲和 SS 信号。测得的信号和数据如下图所示:
这里我尝试发送的数据0b10
只是为了测试。我可以在 MISO 线上看到正确的数据,但信号中间有三个额外的 1。这是在 ATtinyBUFEN=1
的BUFWR=1
SPI 设置中,如下面的配置所示(没有缓冲模式,三个 1 出现在最后 3 位上,并且第一位(MSB)被读取为 1):
我已经确认 TMS320F2808 的 SPI 模块和 ATtiny 的数据是相同的(在时钟下降沿读取)。关于 SPI 的缓冲区如何工作或 SPI 的中断,我是否遗漏了什么?当启用不同的中断(除了清除标志)时,我不确定在 ISR 中要做什么。这是我的主要功能(ISR 暂时为空):
其中SPI_transmit()
如下:
我也尝试过按照这里的建议拆分 16 位数据,但问题仍然存在于 8 位数据中。希望这是足够的背景信息。我很感谢任何想法!
c - 'prog_uint8_t' 没有命名类型 - ARDUINO IDE
恐怕这是一个非常新手的问题,但我已尽力理解这一点,但由于我对 C 编程的经验很少,所以一无所获。
我目前正在从 Instructables 获取一两年前的旧项目:https ://www.instructables.com/id/Jar-of-Fireflies/
这包括为 Firefly 模式编写的固件的 C 文件,但这是 12 年前编写的。
但是......我没有遵循第N级的指导。相反,我使用的是 DIP AtTiny85,我之前使用 Arduino 作为 ISP 对其进行了编程。因此希望能够使用 Visual Micro 插件在 Arduino IDE 或 Atmel Studio 中编译代码。
每次在 Arduino IDE 中编译时,我都会收到以下错误:“prog_uint8_t”没有命名类型,这会导致很多错误发生。
据我了解,这种减速在 2010 年左右作为 AVR GCC 的一部分被删除/更改了......无论如何我可以让它正确编译以运行代码吗?也许使用宏或包含库。我已经尝试了一些库,例如#include <stdint.h>
,但相信这应该作为自动<Arduino.h>
包含的一部分来处理。我敢肯定,如果我带了合适的程序员,我的问题可能会消失,但我敢肯定有一个简单的解决方法..?
在上面的可指导链接中提供为 .tgz 的代码,其中包括标题、c 可执行文件、十六进制等,
用于快速阅读主要的 c 可执行声明......
错误:
// -------------------- 错误结束
我希望程序能够编译,一旦为无符号 8/16/32 位 int 减速定义了一种方式。
如果有人可以帮助我更好地理解,那就太好了。当有人花了很长时间让萤火虫算法变得不错时,我宁愿不编写自己的代码!但请我愿意学习,所以任何指向此类内容的链接也很好。
c++ - 试图让 i2c 压力传感器将数据发送到 ATtiny85,但我可用的库给了我“未声明”的错误
我正在尝试将 LPS331AP 压力传感器连接到我的 ATtiny85,以从中读取压力。我的代码在 Arduino Uno 上完美运行,但是当按照多个论坛上的建议进行相关更改时,我遇到了我不太知道如何解决的错误。我正在使用 Wire.h、twi.h、TinyWire.h 和 LPS.h 库,但无济于事。
我尝试编辑库以符合不同的功能错误,并声明引脚,但我无法让它工作。我已经重置了所有内容,我使用的代码和库如下所示:
我试图执行的代码如下所示:
我希望代码能够正确上传,然后我可以开始编写代码来处理数据并对其进行计算。目前我收到以下错误:
我使用的库如下所示。.h 和 .c 库位于我的本地项目文件夹中:
TinyWire.h:
LPS.h:
USI_TWI_Master.h:
任何有关修复的建议将不胜感激。
arduino - 无法在 platfromio 中编译 arduino 代码
我无法在 platfromIO 中编译下面的代码。但是在arduino 1.5 IDE中成功编译
这是platformio.ini
编译 PIO 的输出
==================================================== =========================== [失败] 耗时 1.31 秒
我需要修改 PlatromIO 的代码吗?
但是,当我评论 INPUT_PULLUP 行时。我可以在 PIO 中编译,但与 Arduino IDE 相比,输出二进制大小更高?
你能建议任何标志或配置来优化二进制大小吗?
c - ATtiny817 Xplained 迷你 RTC 配置
我正在使用 ATtiny817 xplained Mini,我想从 RTC 每 10 秒使用溢出中断切换 LED,但我无法生成中断。配置是否正确?
我已将主时钟源配置为 32kHz(低功耗振荡器),使用其中的 1KHz 为 RTC 提供时钟,而无需预分频器。
c - ATtiny85 上的 ws2812b
我有 1MHz 时钟的 ATtiny。我正在尝试点亮一些 ws2812b LED 灯条。我在没有任何电阻器和电容器的情况下连接了所有东西。我认为一切都应该有效,但它没有:) 我正在使用 light_ws2812 库https://github.com/cpldcpu/light_ws2812。下面是示例代码。我在配置文件中只挂了 F_CPU 频率、输出引脚数和复位时间。你能帮我找到问题并建议我该如何解决吗?
主要的
配置