Hallo Forum,
Es gibt ja die Möglichkeit, das Programm von einem Arduino Chip auszulesen, und auf einen anderen Arduino zu übertragen. Und man kann den Chip auch sperren, um das auslesen zu verhindern, zB aus Kopierschutzgründen.
Zum Lernen habe ich mir eine kleine Batchdatei geschrieben, die einen Arduino auf Tastendruck clont. Das funktioniert jetzt einwandfrei.
Dann habe ich versucht, eine Batch zu schreiben, die den Chip sperrt, doch leider vergeblich. Die Lockbits werden falsch gelesen, und scheinbar auch falsch oder nicht geschrieben, der Chip lässt sich danach noch immer clonen. Ich habe alle möglichen Hex-Kombinationen für die Lockbits probiert!!
Ich verwenden einen Arduino Uno mit 328P Chip als ISP Programmer, und IDE 1.6.9.
Muss ich außer den Lockbits noch SPI (irgendwo bei Hfuse oder Lfuse) abschalten, oder geht dann kein angeschlossenes SPI gerät mehr?
Hier der aktuelle Batch Code:
ECHO OFF
:START
CLS
ECHO Nick's EASY CHIP LOCKER - www.roboter.hol.es
TIMEOUT /t 3 >nul
SET COMPORT=COM8
SET CHIP=ATmega328P
SET LOCKBITS=0x00
SET LOCKBITS2=0x07
SET LOCKBITS1=0x30
SET LOCKBITS3=0xFC
SET ARDUINODIRECTORY=C:\Program Files (x86)\Arduino
ECHO.
ECHO PORT = %COMPORT%
TIMEOUT /t 1 >nul
ECHO CHIP = %CHIP%
TIMEOUT /t 1 >nul
ECHO LOCKBITS = %LOCKBITS%
ECHO.
TIMEOUT /t 1 >nul
ECHO ARDUINO VERZEICHNIS: %ARDUINODIRECTORY%
TIMEOUT /t 1 >nul
ECHO.
ECHO ACHTUNG, CHIP WIRD GESPERRT! ZUM FORTFAHREN TASTE DRUECKEN...
PAUSE>nul
CLS
ECHO SPERRE CHIP...
TIMEOUT /t 2 >nul
CD %ARDUINODIRECTORY%\hardware\tools\avr\bin
avrdude -C ..\etc\avrdude.conf -p atmega328P -c arduino -P %COMPORT% -U lfuse:w:0xFF:m -U hfuse:w:0xFA:m -U efuse:w:0xFD:m -Ulock:w:0x3F:m
ECHO %CHIP% GESPERRT!
PAUSE>nul
GOTO :START
Die Com-Port Nummer und der Hex-Code "0x3F" muss evtl angepasst werden, oder gleich eine Abfrage dazuprogrammieren. Ihr müsstet dann in der Ausgabe sehen, dass die Lockbits nicht übereinstimmen.
Nach stundenlangem Googlen war ich nicht viel schlauer, nur dass es mit ArduinoISP nicht geht, und evtl ungenutzte Lockbits falsch gelesen werden?!
Lg