come proteggere il codice da lettura

fischio85:
Grazie ancora per le tue pronte risposte :), ti chiedo un altra cosa e poi penso di essere apposto.
Se io setto solo i lock bits senza andare a disabilitare la spi e il reset, si ha la possibilità la possibilità di estrarre il firmware?
Cio che importa a me è che non sia possibile la lettura, poi se capita che qualcuno vada a spingere il reset o provi a leggere l'arduino si arrangia!!

l'impottante è che non riesca a recuperare il firmware.(Se posso fare a meno di disabilitare il bit SPIEN ne faccio a meno,
questo per non rischiare di bloccare l'arduino)

OK.
Allora procedi come ti ho detto.
Programmi lo sketch normalmente. Poi alla fine ti armi di terminale ed imposti i lock bit e basta.

Nel sito http://www.engbedded.com non riesco a capire come devo fare per impostare i lock bits, perchè gli autput sono solo i fuse low, high ed extended.
Non menziona i lock bits. come devo procedere??

I lock bit si impostano specificando ad avrdude di modificare questa parte di memoria (i lock bit sono registri, indi per avrdude sono un tipo di memoria). Il parametro da usare è "-U", la memoria da specificare "lock".

avrdude -c stk500v2 -p m2560 -P COM3 -b 19200 -U lock:w:0x00:m -D

dovrebbe fare al caso tuo.
Ho messo "stk500v2" come programmatore perché mi sembra che l'ArduinoISP per i Mega emuli questo programmatore, però se tu hai usato una voce differente e ti ha funzionato, usala.
Non specificare nient'altro, tu devi solo cambiare i lock bit, non il resto della memoria. Il parametro "-D" serve apposto per non far toccare la Flash.