37 lines
1 KiB
Python
37 lines
1 KiB
Python
# Original Trinket or Gemma (ATtiny85) programming example
|
|
|
|
import board
|
|
import adafruit_avrprog
|
|
|
|
avrprog = adafruit_avrprog.AVRprog()
|
|
avrprog.init(board.SCK, board.MOSI, board.MISO, board.D5)
|
|
|
|
# Each chip has to have a definition so the script knows how to find it
|
|
attiny85 = {'name': "ATtiny85"}
|
|
attiny85['sig'] = [0x93, 0x0b]
|
|
attiny85['flash_size'] = 8192
|
|
attiny85['page_size'] = 64
|
|
attiny85['fuse_mask'] = (0xFF, 0xFF, 0x07, 0x3F)
|
|
|
|
# Helper to print out errors for us
|
|
def error(err):
|
|
print("ERROR: "+err)
|
|
avrprog.end()
|
|
while True:
|
|
pass
|
|
|
|
if not avrprog.verify_sig(attiny85):
|
|
error("Signature read failure")
|
|
print("Found", attiny85['name'])
|
|
|
|
avrprog.write_fuses(attiny85, low=0xF1, high=0xD5, ext=0x06, lock=0x3F)
|
|
if not avrprog.verify_fuses(attiny85, low=0xF1, high=0xD5, ext=0x06, lock=0x3F):
|
|
error("Failure verifying fuses!")
|
|
|
|
print("Programming flash from file")
|
|
avrprog.program_file(attiny85, "trinket.hex", verbose=True)
|
|
|
|
print("Verifying flash vs file")
|
|
avrprog.verify_file(attiny85, "trinket.hex", verbose=True)
|
|
|
|
print("Done!")
|