Skip to main content

wokwi-attiny85参考

ATtiny85是一款小型8位AVR微控制器。它有8KB的Flash程序内存、512字节的SRAM和512字节的EEPROM。

ATtiny85

引脚名称

PinNameFunctionsAnalog Channel
1PB5Reset0
2PB33
3PB42
4GNDGround
5PB0SPI:MOSI, I2C:SDA
6PB1SPI:MISO
7PB2SPI:SCK, I2C:SCL1
8VCCPositive voltage

属性

NameDescriptionDefault value
env使用Arduino核心:“attiny”或“ATTinyCore”"attiny"
frequencyMCU时钟频率,以赫兹为单位。共同价值观:: "1m", "8m", "16m", and "20m""8m"

代码和库

Arduino核心提供内置的Arduino函数,如pinMode() and digitalRead(),以及一组标准Arduino库,如Servo、Wire和SPI。

在为ATtiny85编译代码时,您可以在两个不同的内核中进行选择:

  • attiny - 一个最小的核心,提供大多数标准的Arduino函数。这是默认值。

  • ATTinyCore-高级核心,包括Wire、SPI、Servo和Serial库。在 ATTinyCore documentation中了解更多信息)。

注意:ATTinyCore是一个新选项,尚未经过广泛测试。

要选择核心,请设置 wokwi-attiny85部分的“env”属性,例如

  "parts": [
{
"type": "wokwi-attiny85",
"id": "tiny",
"attrs": {
"env": "ATTinyCore"
}

},

]

使用TinyDebug进行调试打印

您可以使用 TinyDebug library 从代码中打印调试消息。这些消息显示在Wokwi的串行监视器中。要使用该库,请在项目中包含“TinyDebug.h”,并创建一个文本为“TinyDebug”的libraries.txt 文件。

调用Debug.begin(),然后使用Debug.println()打印调试消息:

#include <TinyDebug.h>

void setup() {
Debug.begin();
Debug.println(F("Hello, TinyDebug!"));
}

void loop() {
/* Sprinkle some magic code here */
}

同样,您可以使用Debug对象从模拟器的串行监视器读取输入:

if (Debug.read() == 'c') {
// Do something, e.g. toggle an LED
}

有关可用方法的更多信息,请查看Stream class documentation

“调试”接口消耗约30字节的SRAM和150字节的闪存,具体取决于您在代码中使用的方法。这有时可能是一个问题,因为ATtiny85只有512字节的SRAM。

这就是为什么TinyDebug还提供了一个不使用任何SRAM的替代轻量级日志界面。它提供了两个函数,tdPrint()tdPrintln()。缺点是,您只能打印c样式(char*)字符串:

#include <TinyDebug.h>

void setup() {
tdPrintln(F("I do not use any SRAM!"));
}

void loop() {
/* ... */
}

TinyDebug库在Wokwi中开箱即用,对您的图表没有任何更改。它使用内部调试接口是Wokwi仿真引擎的一部分,不使用任何MCU引脚。

您可以在物理ATtiny85芯片上安全地运行使用TinyDebug的代码。物理芯片没有有调试界面,所以你显然不会看到调试消息,但除此之外,它不干扰你的代码。

有关完整的代码示例,请查看TinyDebug demo project on Wokwi

串口输出

ATtiny85没有专用的UART外围设备,但仍然可以使用软件串行库获得串行输出。

有关更多信息和演示代码,请参阅Serial Monitor Guide

I2C

对于I2C通信,请使用 TinyWireM 库。

仿真功能

ATtiny85使用 AVR8js Library仿真。下表总结了功能的状态:

外设状态注意
Processor✔️
GPIO✔️6 GPIO pins (PB0...PB6), INT0 / PCINT support
USI🟡Only works in I2C mode
Timer0✔️PWM support for PB0/PB1
Timer1
Watchdog Timer✔️
EEPROM✔️
ADC✔️Used by analogRead()
Analog Comparator
GDB Debugging✔️See the GDB Debugging Guide

说明: ✔️ 可仿真 🟡 可以仿真, 但是要看注意 ❌ 不支持

如果您需要任何缺失的功能,请 open an issue on the AVR8js repo 或者 reach out on Discord.。

仿真案例