如何防止arduino被覆盖

时间:2014-02-20 07:23:50

标签: arduino

我只是想问是否可以写保护arduino不被覆盖 我使用串口进行计算机和arduino之间的通信,所以它必须一直插入usb。问题是如何保护它形成覆盖?

有没有办法启用/禁用上传草图?

假设,我的草图是最终的,我不想有人可以写在里面。除非我解锁它。所以usb serial仅用于从arduino获取信息。

抱歉我的英语。

4 个答案:

答案 0 :(得分:3)

我建议采用以下方法:

  1. 禁用(取消编程)SPIEN熔丝位;这种方法需要外部ISP程序员以后启用它,因为大多数现代PC没有可用的LPT端口,因为额外的成本而导致USB编程器(例如ATAVRISP2)可能是不可接受的
  2. 在串行编程期间禁用自动重置:可以通过多种方式完成,例如

    a)在GND和复位引脚之间加一个10uF电容(带开关或跳线)

    b)移除连接DTR线的.1uF电容以从电路板复位

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

答案 1 :(得分:0)

问题不明白。意思是说如果打开串行监视器,则从头开始编码

答案 2 :(得分:0)

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

样品:

char pinRX = 0;
void setup() {
  pinMode(pinRX, OUTPUT);
  digitalWrite(pinRX, HIGH);
  ...
  ...
}

此方法将使您的Arduino成为只读但请小心。

微控制器将以普通方式不可写,因此我建议您准备一些方法使RX引脚变为低电平。 (例如,按钮中断)

答案 3 :(得分:0)

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

切断DTR: 要么取下标有C5的电容器,要么在焊盘之间切割标有“RESET-EN”的可切断跳线。这些都会严重影响串行端口的DTR,不再驱动Arduino的重置以重启到引导加载程序。

没有设置DTR: 这就是说你可以配置你的主机应用程序驱动串口不要断言DTR。可以将多个终端应用程序配置为“NOT USE DTR”。这将具有与上述相同的效果。并且没有代码更改的优雅好处,使其工作,而不是工作。只需为您的解决方案运行No DTR应用程序。当您想要编程或调试IDE时运行IDE。

使用LEONARDO: 请注意,Leonardo或其他基于ATmega32u4的Arduino在其USB驱动程序中有一个虚拟串行端口。它没有可能导致外部硬重置的DTR。相反,它的远程重启方法是以1200波特暂时连接到它,之后它以更高的波特率重新启动到引导加载程序。我怀疑你的主机应用程序会做到这一点。因此,使用Leo可能会满足您的需求而不会对任何内容进行任何更改。