File: eeptypes.h

package info (click to toggle)
ponyprog 3.0.2%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 3,752 kB
  • sloc: cpp: 33,187; python: 981; sh: 507; makefile: 36
file content (311 lines) | stat: -rw-r--r-- 9,649 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
//=========================================================================//
//                                                                         //
//  PonyProg - Serial Device Programmer                                    //
//                                                                         //
//  Copyright (C) 1997-2019   Claudio Lanconelli                           //
//                                                                         //
//  http://ponyprog.sourceforge.net                                        //
//                                                                         //
//-------------------------------------------------------------------------//
//                                                                         //
// This program is free software; you can redistribute it and/or           //
// modify it under the terms of the GNU  General Public License            //
// as published by the Free Software Foundation; either version2 of        //
// the License, or (at your option) any later version.                     //
//                                                                         //
// This program is distributed in the hope that it will be useful,         //
// but WITHOUT ANY WARRANTY; without even the implied warranty of          //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU       //
// General Public License for more details.                                //
//                                                                         //
// You should have received a copy of the GNU  General Public License      //
// along with this program (see LICENSE);     if not, write to the         //
// Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. //
//                                                                         //
//=========================================================================//

#ifndef _EEPTYPES_H
#define _EEPTYPES_H

#include "globals.h"

#include <QVector>
#include <QString>
// #include <QStringList>

#define EID_INVALID     0

#define E24XX           0x01
// Sub types
#define E2400           0x010000
#define E2402           0x010001
#define E2404           0x010002
#define E2408           0x010004
#define E2416           0x010008

#define E24XX2          0x02
// Sub types
#define E24000          0x020000
#define E24E16          0x020008
#define E2432           0x020010
#define E2464           0x020020
#define E24128          0x020040
#define E24256          0x020080
#define E24512          0x020100

#define AT90SXX         0x03
// Sub types
#define AT90S0000       0x030000
#define AT90S1200       0x030002
#define AT90S2313       0x030003
#define AT90S4414       0x030004
#define AT90S8515       0x030005

#define ATmega603       0x030008
#define ATmega103       0x030009

#define AT90S2323       0x03000A
#define AT90S2343       0x03000B
#define AT90S2333       0x03000C
#define AT90S4433       0x03000D
#define AT90S4434       0x03000E
#define AT90S8534       0x03000F
#define AT90S8535       0x030010

#define ATtiny22        0x030011
#define ATtiny12        0x030012
#define ATtiny13        0x030013
#define ATtiny15        0x030014

#define ATmega8515      0x030015
#define ATmega8535      0x030016

#define ATmega8         0x03001A
#define ATmega161       0x030020
#define ATmega163       0x030021
#define ATmega16        0x030022
#define ATmega323       0x030023
#define ATmega32        0x030024
#define ATmega162       0x030025
#define ATmega169       0x030026
#define ATmega164       0x030027
#define ATmega324       0x030028
#define ATmega644       0x030029

#define ATmega64        0x03002A
#define ATmega128       0x030030

#define ATmega48        0x030031
#define ATmega88        0x030032
#define ATmega168       0x030033
#define ATmega640       0x030034
#define ATmega1280      0x030035
#define ATmega1281      0x030036
#define ATmega2560      0x030037
#define ATmega2561      0x030038
#define ATmega328       0x030039 // new (RG 22.06.2012)

#define ATtiny11        0x030080
#define ATtiny10        0x030081
#define ATtiny28        0x030082
#define ATtiny26        0x030083
#define ATtiny2313      0x030084
#define ATtiny25        0x030085
#define ATtiny45        0x030086
#define ATtiny85        0x030087
#define ATtiny261       0x030088
#define ATtiny461       0x030089
#define ATtiny861       0x03008A

#define AT90CAN32       0x030100
#define AT90CAN64       0x030101
#define AT90CAN128      0x030102

#define E93X6           0x04
// Sub types
#define E9300           0x040000
#define E9306           0x040001
#define E9346           0x040004
#define E9356           0x040008
#define E9357           0x040009
#define E9366           0x040010
#define E9376           0x040020
#define E9386           0x040040

#define PIC16XX         0x05
// Sub types
#define PIC1600         0x050000
#define PIC1684         0x050001
#define PIC1683         0x050002

#define E250XX          0x06
// Sub types
#define E25000          0x060000
#define E25010          0x060001
#define E25020          0x060002
#define E25040          0x060004

#define E2506XX         0x07
// Sub types
#define E250600         0x070000
#define E2506           0x070001

#define E24XX5          0x08
// Sub types
#define E24325          0x080010
#define E24645          0x080020

#define E25XXX          0x09
// Sub types
#define E25XX0          0x090000
#define E25080          0x090004
#define E25160          0x090008
#define E25320          0x090010
#define E25640          0x090020
#define E25128          0x090040
#define E25256          0x090080

#define AT89SXX         0x0A
// Sub types
#define AT89S0000       0x0A0000
#define AT89S8252       0x0A0002
#define AT89S8253       0x0A0003
#define AT89S53         0x0A0004
#define AT89S52         0x0A0005
#define AT89S51         0x0A0006

#define PIC168XX        0x0B
// Sub types
#define PIC16800        0x0B0000
#define PIC1684A        0x0B0001
#define PIC16870        0x0B0002
#define PIC16871        0x0B0003
#define PIC16872        0x0B0004
#define PIC16873        0x0B0005
#define PIC16874        0x0B0006
#define PIC16876        0x0B0008
#define PIC16877        0x0B0009
#define PIC16873A       0x0B000A
#define PIC16874A       0x0B000B
#define PIC16876A       0x0B000C
#define PIC16877A       0x0B000D

#define PIC16627        0x0B0020
#define PIC16628        0x0B0021

#define ENVMXXX         0x0C
// Sub types
#define ENVM3000        0x0C0000
#define EMDA2061        0x0C0002
#define EMDA2062        0x0C0003
#define ENVM3060        0x0C0004

#define E93XX_8         0x0D
// Sub types
#define E9300_8         0x0d0000
#define E9306_8         0x0d0001
#define E9346_8         0x0d0004
#define E9356_8         0x0d0008
#define E9357_8         0x0d0009
#define E9366_8         0x0d0010
#define E9376_8         0x0d0020
#define E9386_8         0x0d0040

#define PIC125XX        0x0E
// Sub types
#define PIC12500        0x0E0000
#define PIC12508        0x0E0004
#define PIC12509        0x0E0005
#define PIC12508A       0x0E0008
#define PIC12509A       0x0E0009
#define PIC12E518       0x0E0010
#define PIC12E519       0x0E0011

#define PIC12608        0x0E0024
#define PIC12609        0x0E0025
#define PIC12608A       0x0E0026
#define PIC12609A       0x0E0027
#define PIC12671        0x0E0030
#define PIC12672        0x0E0031
#define PIC12673        0x0E0032
#define PIC12674        0x0E0033

//#define PIC162XX      0x0F
// Sub types
//#define       PIC16200        0x0F0000
//#define       PIC1627         0x0F0004
//#define       PIC1628         0x0F0005

#define X24C44XX        0x10
// Sub types
#define S24H30          0x100001
#define X24C44          0x100002
#define X24C45          0x100003

#define E24XX1_A        0x11
// Sub types
#define E2401_A         0x110001

#define AT17XXX         0x12
// Sub types
#define AT1765          0x120002
#define AT17128         0x120003
#define AT17256         0x120004
#define AT17512         0x120005
#define AT17010         0x120006

#define E24XX1_B        0x13
// Sub types
#define E2401_B         0x130001

#define NO_OF_EEPTYPE   0x13

#define MAXEEPSUBTYPE   64


#define KB(x)   ((x) * 1024)


// EK 2017
// common structure for chips
struct chipInfo
{
	QString name;
	long id;    // pretype | subtype
	int  sz;    //dimensione in numero di banchi
	int  splt;  // split
	int  wpgsz; // page size
	int  adrsz; //dimensione dello spazio di indirizzamento in numero di banchi
};


// extern long BuildE2PType(int pritype, int subtype = 0);
extern long BuildE2PType(unsigned long type);
extern int GetE2PSubType(unsigned long type);
extern int GetE2PPriType(unsigned long type);

chipInfo GetChipInfo(QVector<chipInfo> &c, long subtype);

// extern QString GetEEPTypeString(int pritype, int subtype);
extern QString GetEEPTypeString(unsigned long type);

extern int GetEEPTypeIndex(int type);
// extern QStringList GetEEPSubTypeList(int type);
extern QVector<chipInfo> GetEEPSubTypeVector(int type);
extern int GetEEPSubTypeIndex(unsigned long type);
// extern int GetEEPTypeSize(int pritype, int subtype);
extern int GetEEPTypeSize(unsigned long type);
// extern int GetEEPAddrSize(int pritype, int subtype);
extern int GetEEPAddrSize(unsigned long type);
// extern int GetEEPTypeSplit(int pritype, int subtype);
extern int GetEEPTypeSplit(unsigned long type);

// extern long GetEEPTypeFromSize(int pritype, int size);
extern long GetEEPTypeFromSize(unsigned long type, int size);
extern long GetEEPTypeFromString(const QString &name);

// extern int GetEEPTypeWPageSize(int pritype, int subtype);
extern int GetEEPTypeWPageSize(unsigned long type);


#endif