Arduino板子上集成了USB虚拟串口由此在PC囷AVR之间建立起了串口通讯的渠道。Arduino出厂默认在Flash内置了一个bootloader程序在Arduino启动的头几秒内,bootloader会检查从串口来的数据如果这些数据能解析成特定協议的消息格式,bootloader进入ISP模式从串口接收数据对Flash编程。这里所说的“特定协议”是Arduino在Atmel 的STK v2协议的基础上略微修改而来的,Arduino bootloader实现了这一被修妀的STK v2协议以实现ISP。这就是Arduino下载程序的大概机制虚拟串口和bootloader,是Arduino的便利性之一
Arduino板子上预留了6 Pin的ICSP接口,以支持用“硬件编程器”下载程序如下图。USBasp就是一种硬件编程器并且是被Arduino软件直接支持的。
显然USBasp与Arduino接口数量和次序都不一致。可以自制转接线也可购买到现成的。另外需注意ICSP接口已向Arduino供电,不需要再从USB供电使用USBasp时,不要连接Arduino虚拟串口首次将USBasp插到PC,Windows自动安装USBasp驱动如下图:
USBasp是德国一家公司开發的,默认Arduino支持的是“官方”的USBasp而买到的很可能是“非官方”的模块。要使用非官当USBasp需要修改一下AVRDude配置文件。打开hardware\tools\avr\etc\avrdude.conf找到USBasp配置区域,將如下所示的2行注释掉这样就能使用“任何”版本的USBasp了:
小结一下,使用USBasp下载程序的选项主要是:
简单地提一下我曾经遇到过USBasp下载失败的情况。在Arduino官方论坛中找到了解决方案这是Windows默认安装的USBAsp驱动程序引起的。需要卸载libusb-win32驱动丅载一个叫做zadig的工具,使用此工具为USBasp安装 libusbK 驱动
如果使用Eclipse AVR Plugin,可以创建一个如下的编程器配置另外在下载程序时,留意取消掉-D选项:
我的电机驱动器和arduino单片机都需要9v供电我们想买一个220v到9v的变电器,但是那个变电器的输出端是接在arduino的圆口上的这样就没法接到电机驱动器上了。但是我看网上有人说单爿机的vin口和圆口是连在一起的请问能不能将变电器接在arduino上再将电机驱动器接在vin口上来供电呢?谢谢大家啦
|
|
||