Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何防止arduino覆盖_Arduino - Fatal编程技术网

如何防止arduino覆盖

如何防止arduino覆盖,arduino,Arduino,我只是想问,是否可以写保护arduino不被覆盖。 我使用串口在计算机和arduino之间进行通信,因此它必须始终插入usb。问题是如何保护它不被覆盖 有没有办法启用/禁用上载草图 假设我的素描是最终的,我不想有人在上面写。除非我打开它。因此,usb串行仅用于从arduino获取信息 对不起,我说的是英语。如果您使用串行通信只是为了从Arduino获取数据,请将RX引脚设置为高 样本: char pinRX = 0; void setup() { pinMode(pinRX, OUTPUT)

我只是想问,是否可以写保护arduino不被覆盖。
我使用串口在计算机和arduino之间进行通信,因此它必须始终插入usb。问题是如何保护它不被覆盖

有没有办法启用/禁用上载草图

假设我的素描是最终的,我不想有人在上面写。除非我打开它。因此,usb串行仅用于从arduino获取信息


对不起,我说的是英语。

如果您使用串行通信只是为了从Arduino获取数据,请将RX引脚设置为高

样本:

char pinRX = 0;
void setup() {
  pinMode(pinRX, OUTPUT);
  digitalWrite(pinRX, HIGH);
  ...
  ...
}
此方法将使您的Arduino为只读,但请小心


微控制器将以普通方式不可写入,因此我建议您准备一些使RX引脚变低的方法。(e.x.按钮中断)

我建议以下方法:

  • 禁用(取消编程)SPIEN保险丝位;这种方法需要外部ISP编程器在以后启用,而且由于大多数现代PC没有可用的LPT端口,因此由于额外的成本,获得USB编程器(例如ATAVRISP 2)可能是不可接受的
  • 在串行编程期间禁用自动复位:可以通过多种方式完成,例如:

    a) 通过在GND和复位引脚之间添加10uF电容器(带开关或跳线)

    b) 通过从板上卸下连接DTR线路的.1uF电容器进行复位


  • 我最喜欢的方法是2.a

    假设是UNO或ATmega328克隆。 通过切换串行端口DTR,处理器将远程重新启动到引导加载程序中。这通常发生在应用程序连接到COM端口(或Linux上的ttyS)时。除了其他答案中提到的其他方法外,可以通过几种方法防止DTR

    剪切DTR: 拆除标有C5的电容器,或在接地之间切断标有“RESET-EN”的可切断跳线。这两种情况都将严重影响串行端口的DTR,不再驱动Arduino的重置以重新启动引导加载程序

    不设置DTR: 也就是说,您可以将驱动串行端口的宿主应用程序配置为不断言DTR。可以将多个终端应用程序配置为“不使用DTR”。这将产生与上述相同的影响。并且将有一个优雅的好处,即不需要修改代码就可以让它工作,也不需要修改代码。只需为您的解决方案运行无DTR应用程序。并在需要编程或调试IDE时运行它

    使用莱昂纳多: 请注意,Leonardo或其他基于ATmega32u4的Arduino在其USB驱动程序中有一个虚拟串行端口。如果没有可导致外部硬复位的DTR。相反,它的远程重新启动方法是以1200波特的速率临时连接到它,然后以更高的波特率重新启动到引导加载程序。我怀疑您的主机应用程序是否会这样做。所以,使用狮子座的人很可能会满足你的需求,而不会对任何事情做出任何改变