@@ -58,6 +58,41 @@ class AVRprog:
58
58
"""
59
59
Helper class used to program AVR chips from CircuitPython.
60
60
"""
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
+
61
96
_spi = None
62
97
_rst = None
63
98
@@ -100,7 +135,8 @@ def program_file(self, chip, file_name, verbose=False, verify=True):
100
135
print ("Erasing chip...." )
101
136
self .erase_chip ()
102
137
103
- self .begin ()
138
+ clock_speed = getattr (chip , 'clock_speed' , _FAST_CLOCK )
139
+ self .begin (clock = clock_speed )
104
140
105
141
# create a file state dictionary
106
142
file_state = {'line' : 0 , 'ext_addr' : 0 , 'eof' : False }
@@ -164,7 +200,8 @@ def verify_file(self, chip, file_name, verbose=False):
164
200
file_state ['f' ] = open (file_name , 'r' )
165
201
166
202
page_size = chip ['page_size' ]
167
- self .begin ()
203
+ clock_speed = getattr (chip , 'clock_speed' , _FAST_CLOCK )
204
+ self .begin (clock = clock_speed )
168
205
for page_addr in range (0x0 , chip ['flash_size' ], page_size ):
169
206
page_buffer = bytearray (page_size )
170
207
for b in range (page_size ):
0 commit comments