【最小开发板】Attiny85开发与实践

    xiaoxiao2021-03-25  290

    不要十元就能弄到一个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

    最新回复(0)