@@ -58,6 +58,41 @@ class AVRprog:
5858 """
5959 Helper class used to program AVR chips from CircuitPython.
6060 """
61+ class Boards :
62+ """
63+ Some well known board definitions.
64+ """
65+ # pylint: disable=too-few-public-methods
66+ ATtiny13a = {
67+ 'name' : "ATtiny13a" ,
68+ 'sig' : [0x1E , 0x90 , 0x07 ],
69+ 'flash_size' : 1024 ,
70+ 'page_size' : 32 ,
71+ 'fuse_mask' : (0xFF , 0xFF , 0x00 , 0x03 ),
72+ 'clock_speed' : 100000
73+ }
74+ ATtiny85 = {
75+ 'name' : "ATtiny85" ,
76+ 'sig' : [0x1E , 0x93 , 0x0B ],
77+ 'flash_size' : 8192 ,
78+ 'page_size' : 64 ,
79+ 'fuse_mask' : (0xFF , 0xFF , 0x07 , 0x3F )
80+ }
81+ ATmega328p = {
82+ 'name' : "ATmega328p" ,
83+ 'sig' : [0x1E , 0x95 , 0x0F ],
84+ 'flash_size' : 32768 ,
85+ 'page_size' : 128 ,
86+ 'fuse_mask' : (0xFF , 0xFF , 0x07 , 0x3F ),
87+ }
88+ ATmega2560 = {
89+ 'name' : "ATmega2560" ,
90+ 'sig' : [0x1E , 0x98 , 0x01 ],
91+ 'flash_size' : 262144 ,
92+ 'page_size' : 256 ,
93+ 'fuse_mask' : (0xFF , 0xFF , 0x07 , 0x3F )
94+ }
95+
6196 _spi = None
6297 _rst = None
6398
@@ -100,7 +135,8 @@ def program_file(self, chip, file_name, verbose=False, verify=True):
100135 print ("Erasing chip...." )
101136 self .erase_chip ()
102137
103- self .begin ()
138+ clock_speed = getattr (chip , 'clock_speed' , _FAST_CLOCK )
139+ self .begin (clock = clock_speed )
104140
105141 # create a file state dictionary
106142 file_state = {'line' : 0 , 'ext_addr' : 0 , 'eof' : False }
@@ -164,7 +200,8 @@ def verify_file(self, chip, file_name, verbose=False):
164200 file_state ['f' ] = open (file_name , 'r' )
165201
166202 page_size = chip ['page_size' ]
167- self .begin ()
203+ clock_speed = getattr (chip , 'clock_speed' , _FAST_CLOCK )
204+ self .begin (clock = clock_speed )
168205 for page_addr in range (0x0 , chip ['flash_size' ], page_size ):
169206 page_buffer = bytearray (page_size )
170207 for b in range (page_size ):
0 commit comments