问题标签 [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 回答
141 浏览

timer - Arduino Attiny84 和 Timer1 的问题

我有一个在任何库中都找不到的错误:

在功能

'void__vector_2()'

错误左值需要作为赋值的左操作数。

0 投票
1 回答
1005 浏览

windows - 更改/覆盖 Trinket (attiny85) USB 标识名称、设备名称

当用作 USB 键盘时,AdaFruit 'Trinket' 库将自身标识为“Trinket HID Combo”。是否可以将此名称更改为更有用的名称(使用一些代码、常量等)?

我正在使用 Arduino 1.0.4 IDE。查看此库的源代码,但找不到硬编码的名称。

有什么想法可以覆盖这个吗?

0 投票
1 回答
624 浏览

c++ - Arduino:在没有编辑库的情况下更改定义 [已解决,编译器中的错误,可用的解决方法]

编辑:见下面我的回答


我对 Arduino 平台相当陌生,现在使用 AdaFruit 的 attiny85 (Trinket) 库创建一个 USB HID 项目。另请参阅我之前回答的有关此库选项的问题: Change/Override Trinket (attiny85) USB Identification name, device name

我对一个罕见的与 C 相关的限制感到困惑(另请参阅上面链接中回答的最新评论到上一个问题),即通过单独编译对二进制文件进行分离后期绑定。如果要更改 USB 设备的选项,则必须更改库本身,这对我来说有点奇怪,因为它是一个库。

例如,如果在加载库之前包含带有更改选项的头文件,则不会发生任何更改,因为库不知道它,因为它也必须包含在此库中。

示例:这不起作用:

另一种方法:

所以我需要为每个项目更改库本身,在这种情况下是usbconfig.h文件。这对我来说听起来有点愚蠢,因为它是一个库,可以被其他项目使用。这可能是 Adafruit 库中的设计错误,诸如 vendorname、devicename 等必须在此库之外是可选的,并且当库更新时,您的设置可能会被覆盖。而且...您需要为每个单独的项目再次编辑文件。

所以我想出了在文件中包含一个可选头文件的想法,usbconfig.h这只#include "user_usbconfig.h"需要一次更改。但这不是唯一的usbconfig.h文件,至少有三个版本可用!在项目目录中创建一个 user_usbconfig.h 文件,编写一个批处理文件以使其自动化并将其包含在项目目录中,以便在切换项目时只需单击它即可更改选项。

在 usbconfig.h 文件中添加的行:

例如项目中包含的 user_usbconfig.h

示例源代码 myProject.ino,除了激活 USB 之外什么都不做:

我创建的批处理文件,添加到项目目录中:

结论和问题:

尽管这种方法运行良好,但我仍然不满意,想知道是否有更简单的方法可以做到这一点,而无需更改库的任何代码行。一个更“即时”的解决方案,因此您不必考虑这一点以避免错误和其他令人头疼的问题。

0 投票
1 回答
307 浏览

c++ - Arduino Trinket/Attiny85 USB:可以读取所有键的状态吗?

例如,USB 键盘是系统内的共享设备。可以使用多个键盘,它们共享 num、scroll 和 capslock 状态。当您按下键盘 #1 上的 capslock 时,键盘 #2 将检测到此状态。

对于模拟的 USB 键盘设备(使用 Trinket 库),您可以使用以下命令检查这些值:

问题:

所以我想知道我是否可以用任何键来做到这一点,或者这完全不可能?如果不是,为什么不呢?如果是,我该怎么做?

0 投票
1 回答
330 浏览

arduino - atTiny85 循环直到没有从 arduino 读取或超时

我想在我的 atTiny 中不循环任何内容,直到我读取特定输入或达到最大时间。读数来自 Arduino。

这是我的示例代码,但它似乎不起作用,代码直接跳出循环。

在 Arduino 中,我简单地将 PIN 更改为 OUTPUT,这部分工作正常。

提前致谢!干杯

将注释中的代码更改为主循环

0 投票
3 回答
1177 浏览

interrupt - ATtiny85:如何同时响应引脚和定时器中断

我最近一直在使用 ATtiny85 作为在一个非常小的封装中制作一些简单电子设备原型的方法。我在这方面遇到了一些麻烦,因为用于其许多功能的语言与标准 Arduino 草图中的语言非常不同(而且不太直观!)。我也很难为特定于硬件的功能找到合适的参考。

首先,我想做的是同时监听引脚变化和计时器。引脚状态的改变将重置定时器,但同时如果定时器在引脚状态改变之前结束,代码需要自己响应定时器。

现在,从我设法找到的教程中,似乎引脚更改和定时器中断都通过相同的函数 - ISR()汇集。我想知道的是:

  1. 是否可以同时使用引脚和定时器中断?
  2. 假设它们都调用相同的函数,你如何区分它们?
0 投票
1 回答
3533 浏览

c - AVR 定时器溢出中断不工作

你好堆栈溢出的好人。我的问题是一个看似永远不会执行的中断服务程序(ISR)!这是有关我设置的一些信息:我正在闪烁 avr attiny85。到目前为止,我只用一个 main.c 和两个模块:timer 和 hardwareInit 建立了一个项目的基本框架。在定时器模块中,我有一个 timer0_init 函数,用于将 timer0 设置为 CTC 模式,使其每 1 ms 溢出一次。这是功能:

设置好计时器后,我添加了一个 ISR 以在每次计数器溢出时递增滴答声,这样我就可以跟踪已经过去了多少时间,等等。

正如你所看到的,我注释掉了ticks++,因为它没有工作,并用它替换它PORTB |= ( 1 << PORTB0 );只是打开一个LED,所以如果中断被执行,我会通过LED亮的证明来知道。
不幸的是,我无法打开它,也看不到我错过了什么。(为了证明我 1. 将 LED 设置在正确的引脚上,并且 2. 在正确的寄存器中操作正确的位,我将这条语句PORTB |= ( 1 << PORTB0 );放入我的无限循环并确认 LED 亮起)

为了进一步解释,这是我的 main.c:

所以,你在无限循环中看到的是我首先尝试的,但是在那之后没有用,我尝试了一些更简单的方法,只是有一个空循环(注释掉以前的东西),并等待中断被触发,这将打开 LED。

您可以提供的任何帮助将不胜感激。我很困惑为什么这不起作用。

0 投票
1 回答
60 浏览

c - 如果不会在里面触发

目前我正在尽力编写微控制器。

是我的主要,gameStatus 是一个全局 uint_8。它由按下按钮引起的中断设置。

然而,主要的根本不会识别gameStatus。这可能是有原因的吗?

谢谢!

0 投票
1 回答
122 浏览

microcontroller - AVR SPI 编程问题

我正在尝试avrdude使用 Olimex AVR-ISP500 编程器通过 6 针 ICSP 连接器对 ATtiny13A 进行编程。但是,我无法让它与我的 MCU 通信。用户指南告诉使用-cstk500v2,这是带有此选项的日志:https ://ghostbin.com/paste/8yx35 ,这是带有以下内容的日志-cavrisphttps ://ghostbin.com/paste/2rpx6 (命令是$ avrdude -cXXXXXXX -P/dev/ttyACM0 -pattiny13 -v -F) . 芯片签名发生变化,但始终以 0x88 开头。以下是它的连接方式: MCU端 ICSP 侧

我可能做错了什么?

UPD:像这样重新排列电线:

它现在可以正确测量电压,但仍无法与 MCU 通信。

UPD2: 上传了重新排列线路的新日志。

UPD3:在每一侧,红色和黑色线都连接到电源,红色到Vcc,黑色到GND。

0 投票
1 回答
2318 浏览

arduino - Attiny85 用于调暗灯泡的交流相位控制

我正在尝试通过接受通过 I2C 发送的命令的 attiny85 来调暗灯泡。我的问题是灯泡几乎没有变暗并且闪烁很多。

我的电路可以在这里看到: Attiny85 调光电路控制 I2C

光隔离器(以及三端双向可控硅开关)通过引脚 2(AKA PB3、AKA PCINT3)控制,AC 过零检测在 Attiny85 上的引脚 3(AKA PB4、AKA PCINT4)上进行

该代码使用引脚更改中断启用而不是单个外部中断启用,因为外部中断引脚是引脚 7(又名 PB2),用作 I2C 通信的 SCL。

使用 8MHz 内部时钟,定时器/计数器预分频器为 1024。这意味着我的有效输入范围(见level代码中的变量)大约为 0-65。我的交流电源是美国 (60Hz)。

我尝试了各种灯泡,没有一个比另一个更好。

这是一个视频,显示了示波器上的过零检测器(黄色)和触发器(蓝色),因为我向它发送了不同的调光级别坏电话视频