不要十元就能弄到一个Arduino IDE支持的,性能比C51的89c52好的微小单片机,并且还能支持直接插在电脑上进行供电&烧录,虽然不支持串口,但也是很美妙的一件事情不是吗?
这就是attiny85 usb,在国外这一件最小系统的设计叫做Digispark。
相关数据:
8K bytes of In-System Programmable Flash,
512 bytes EEPROM,
256 bytes SRAM,
6 general purpose I/O lines,
32 general purpose working registers,
one 8-bit Timer/Counter
one 8-bit high speed Timer/Counter,
Universal Serial Interface, Internal and External Interrupts,
a 4-channel,
10-bit ADC,
a programmable Watchdog Timer with internal Oscillator,
and three software selectable power saving modes.
Idle mode stops the CPU while allowing the SRAM,
Timer/Counter,
ADC,
Analog Comparator,
Interrupt system
关于Pin:
All pins can be used as Digital I/O
Pin 0 → I2C SDA, PWM (LED on Model B)
Pin 1 → PWM (LED on Model A)
Pin 2 → I2C SCK, Analog In
Pin 3 → Analog In (also used for USB+ when USB is in use)
Pin 4 → PWM, Analog (also used for USB- when USB is in use)
Pin 5 → Analog In
性能与电源数据:
20 – 10 MHz @ 2.7 - 5.5V
0 - 20 MHz @ 4.5 - 5.5V
Low Power Consumption – Active Mode:
1 MHz, 1.8V: 300 µA
Power-down Mode:
0.1 µA at 1.8V
目前发现的小缺点:
1.没有硬件支持的I2C但是有SPI,I2C在attiny上面是软件依赖于硬件进行支持的。
2.没有串口,传送数据需要额外端口进行模拟。
3.USB下载方式比较古老没有自动复位需要拔插模块。
一、关于在Arduino上面的安装
如何用Arduino烧录Digispark USB版本attiny85
1、先在arduino ide中打开文件--->首选项,然后在下方的 附加开发板管理网址填入
http://digistump.com/package_digistump_index.json
然后点击确定
2、在开发板管理器中类型一栏选择Contributed
3、下载安装第一个
4、到这里就完成了,相比于普通的Arduino板块来说,在下载程序的顺序方式上有所区别,具体如下:
(1)、在板形中选择Digispark USB
(2)、点击上传/Upload
(3)、在电脑的USB口插入Digispark
(4)、完成上载
串口随意选择不影响烧录(因为本身也没串口)
===================================================================================================
二、初步尝试开发
先试着焊接了一支5mm的RGB LED用来测试,以焊接焊点的一半的方式来预备后面进行的改装,减少拆焊难度
第一个程序LED灯闪烁:
const int Red_LED = 5;
const int Green_LED = 4;
const int Blue_LED = 3;
void setup() {
// put your setup code here, to run once:
pinMode(Red_LED, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(Red_LED, HIGH);
delay(500);
digitalWrite(Red_LED, LOW);
delay(500);
}
插入USB口进行烧录
【发生不对劲的事情】
在刚才的烧录中发现,如果将当期LED的GND脚位接在板载的GND上面就无法正常的烧录,也就是插入后不能识别
发现占用的PORT 3为USB-而PORT 4为USB+,也就是这两条都是数据线路,不能在通过电流/有高电平的同时进行烧录的,也因此,不能插在USB槽上面进行测试了,要用其他单独的供电。
烧录这块的解决方法只能是加上一个可以开关的GND总线,在需要烧录时候断开
至于单独供电,可以做一个USB母口转接或使用充电宝这类进行纯粹的供电,利用板载的通孔也可以但总觉得不太方便(只有一个GND通孔的缘故)。
===================================================================================================
三、作为HID设备接入
这一芯片可以作为USB设备来识别,也就是能像是莱昂纳多atmega34U一般可以作为键盘或者鼠标这样的输入设备接入电脑,并能按照编程程序自动输入内容,虽然只有6个Pin并且在作为USB设备时候被占用两个Pin,但依然有4个Pin可以形成4x4键盘完成简单的按键输入
(如果是连接I2C硬件键盘可能性更大)
#include "DigiKeyboard.h"
void setup() {
// don't need to set anything up to use DigiKeyboard
}
void loop() {
//下面这一行是非必要的,但在一些老的系统中,
//为了能在延时后不错过输入语句的第一个字符所以要加上
DigiKeyboard.sendKeyStroke(0);
DigiKeyboard.println("Hello !");
//最好使用DigiKeyboard.delay()这个函数来代替标准arduino的delay函数
// 确定电脑已经连接上Digispark
DigiKeyboard.delay(5000);
}
转载请注明原文地址: https://ju.6miu.com/read-393.html