Hallo! Ich verwende bisher die Mikrocontroller "Standard"-Typen von Atmel. In Zukunft würde ich gern A-Typen (ATmega 8A, etc.) bzw. die Picopower-Serie (ATmega 48PA, etc.) einsetzten. Kennt jemand eine gute Anleitung wie man die neuen Atmel-Typen in der avrdude.conf korrekt ergänzt? Oder ist jemand im Besitz einer aktualisierten avrdude.conf?
Tim, die Kennung der Typen steht im Datenblatt und dann kannst Du u.a. die Textdatei erweitern. Ist gar nicht schwer !
Die unterscheiden sich doch meist nur im ID code. Also A-Typen in der config kopieren, Name und ID ändern, fertig.
Falk Brunner schrieb: > Die unterscheiden sich doch meist nur im ID code. Wenn überhaupt. > Also A-Typen in der > config kopieren, Name und ID ändern, fertig. Ab AVRDUDE Version 6 noch einfacher: simpel eine Bezugnahme machen, das Kopieren erfolgt dann intern. (Beispiele dafür gibts's genug im mitgelieferten avrdude.conf.) Wäre nett, wenn mal jemand einen Patch mit allen gängigen A-Typen erstellen würde.
IMHO kann man die ohne A nicht von denen mit A unterscheiden, da die Signatur gleich ist. Den ATtiny2313A kann man vom ATtiny2313 nur durch die zusätzlichen Register PCMSK1,2 unterscheiden.
Peter Dannegger schrieb: > IMHO kann man die ohne A nicht von denen mit A unterscheiden, da die > Signatur gleich ist. Mir ist so, als gäbe es auch von dieser Regel mal wieder irgendwo die berühmte Ausnahme. Nichtsdestoweniger wäre ich für einen entsprechenden Patch dankbar, denn es schafft weniger Verwirrung, wenn die Leute einen ATtiny2313A auch als solchen bezeichnen dürfen.
Das klingt doch schon mal sehr gut. Vielen Dank für die Kommentare. Gilt das gleiche auch für die Picopower-Typen?
Tim schrieb: > Gilt das gleiche auch für die Picopower-Typen? Programmierkompatibel zu den nicht-P-Typen dürften die allesamt sein (höchstens zwischen ATmega644 und ATmega644P würde ich hier ggf. Unterschiede erwarten, denn beide sind sehr verschieden entstanden), allerdings haben die P-Typen generell eine andere Signature als die nicht-P-Typen.
Ich habe es mal andersrum gemacht: erst das Problem mit meinem ATMEGA48PA selbst gelöst (mit Suchmaschine) und dann erst hier nachgesehen. :) stolz die AVRDUDE.CONF habe ich mit folgendem Eintrag ergänzt.
1 | #------------------------------------------------------------ |
2 | # ATmega48pa |
3 | #------------------------------------------------------------ |
4 | |
5 | part |
6 | id = "m48pa"; |
7 | desc = "ATMEGA48PA"; |
8 | has_debugwire = yes; |
9 | flash_instr = 0xB6, 0x01, 0x11; |
10 | eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, |
11 | 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, |
12 | 0x99, 0xF9, 0xBB, 0xAF; |
13 | stk500_devcode = 0x59; |
14 | signature = 0x1e 0x92 0x0a; |
15 | pagel = 0xd7; |
16 | bs2 = 0xc2; |
17 | chip_erase_delay = 45000; |
18 | pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", |
19 | "x x x x x x x x x x x x x x x x"; |
20 | |
21 | chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", |
22 | "x x x x x x x x x x x x x x x x"; |
23 | |
24 | timeout = 200; |
25 | stabdelay = 100; |
26 | cmdexedelay = 25; |
27 | synchloops = 32; |
28 | bytedelay = 0; |
29 | pollindex = 3; |
30 | pollvalue = 0x53; |
31 | predelay = 1; |
32 | postdelay = 1; |
33 | pollmethod = 1; |
34 | |
35 | pp_controlstack = |
36 | 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, |
37 | 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, |
38 | 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, |
39 | 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; |
40 | hventerstabdelay = 100; |
41 | progmodedelay = 0; |
42 | latchcycles = 5; |
43 | togglevtg = 1; |
44 | poweroffdelay = 15; |
45 | resetdelayms = 1; |
46 | resetdelayus = 0; |
47 | hvleavestabdelay = 15; |
48 | resetdelay = 15; |
49 | chiperasepulsewidth = 0; |
50 | chiperasepolltimeout = 10; |
51 | programfusepulsewidth = 0; |
52 | programfusepolltimeout = 5; |
53 | programlockpulsewidth = 0; |
54 | programlockpolltimeout = 5; |
55 | |
56 | memory "eeprom" |
57 | paged = no; |
58 | page_size = 4; |
59 | size = 256; |
60 | min_write_delay = 3600; |
61 | max_write_delay = 3600; |
62 | readback_p1 = 0xff; |
63 | readback_p2 = 0xff; |
64 | read = " 1 0 1 0 0 0 0 0", |
65 | " 0 0 0 x x x x x", |
66 | " a7 a6 a5 a4 a3 a2 a1 a0", |
67 | " o o o o o o o o"; |
68 | |
69 | write = " 1 1 0 0 0 0 0 0", |
70 | " 0 0 0 x x x x x", |
71 | " a7 a6 a5 a4 a3 a2 a1 a0", |
72 | " i i i i i i i i"; |
73 | |
74 | loadpage_lo = " 1 1 0 0 0 0 0 1", |
75 | " 0 0 0 0 0 0 0 0", |
76 | " 0 0 0 0 0 0 a1 a0", |
77 | " i i i i i i i i"; |
78 | |
79 | writepage = " 1 1 0 0 0 0 1 0", |
80 | " 0 0 x x x x x x", |
81 | " a7 a6 a5 a4 a3 a2 0 0", |
82 | " x x x x x x x x"; |
83 | |
84 | mode = 0x41; |
85 | delay = 20; |
86 | blocksize = 4; |
87 | readsize = 256; |
88 | ; |
89 | memory "flash" |
90 | paged = yes; |
91 | size = 4096; |
92 | page_size = 64; |
93 | num_pages = 64; |
94 | min_write_delay = 4500; |
95 | max_write_delay = 4500; |
96 | readback_p1 = 0x00; |
97 | readback_p2 = 0x00; |
98 | read_lo = " 0 0 1 0 0 0 0 0", |
99 | " 0 0 0 0 0 a10 a9 a8", |
100 | " a7 a6 a5 a4 a3 a2 a1 a0", |
101 | " o o o o o o o o"; |
102 | |
103 | read_hi = " 0 0 1 0 1 0 0 0", |
104 | " 0 0 0 0 0 a10 a9 a8", |
105 | " a7 a6 a5 a4 a3 a2 a1 a0", |
106 | " o o o o o o o o"; |
107 | |
108 | loadpage_lo = " 0 1 0 0 0 0 0 0", |
109 | " 0 0 0 x x x x x", |
110 | " x x x a4 a3 a2 a1 a0", |
111 | " i i i i i i i i"; |
112 | |
113 | loadpage_hi = " 0 1 0 0 1 0 0 0", |
114 | " 0 0 0 x x x x x", |
115 | " x x x a4 a3 a2 a1 a0", |
116 | " i i i i i i i i"; |
117 | |
118 | writepage = " 0 1 0 0 1 1 0 0", |
119 | " 0 0 0 0 0 a10 a9 a8", |
120 | " a7 a6 a5 x x x x x", |
121 | " x x x x x x x x"; |
122 | |
123 | mode = 0x41; |
124 | delay = 6; |
125 | blocksize = 64; |
126 | readsize = 256; |
127 | ; |
128 | |
129 | memory "lfuse" |
130 | size = 1; |
131 | min_write_delay = 4500; |
132 | max_write_delay = 4500; |
133 | read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", |
134 | "x x x x x x x x o o o o o o o o"; |
135 | |
136 | write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", |
137 | "x x x x x x x x i i i i i i i i"; |
138 | ; |
139 | |
140 | memory "hfuse" |
141 | size = 1; |
142 | min_write_delay = 4500; |
143 | max_write_delay = 4500; |
144 | read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", |
145 | "x x x x x x x x o o o o o o o o"; |
146 | |
147 | write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", |
148 | "x x x x x x x x i i i i i i i i"; |
149 | ; |
150 | |
151 | memory "efuse" |
152 | size = 1; |
153 | min_write_delay = 4500; |
154 | max_write_delay = 4500; |
155 | read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", |
156 | "x x x x x x x x x x x x x x x o"; |
157 | |
158 | write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", |
159 | "x x x x x x x x x x x x x x x i"; |
160 | ; |
161 | |
162 | memory "lock" |
163 | size = 1; |
164 | min_write_delay = 4500; |
165 | max_write_delay = 4500; |
166 | read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", |
167 | "x x x x x x x x x x o o o o o o"; |
168 | |
169 | write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", |
170 | "x x x x x x x x 1 1 i i i i i i"; |
171 | ; |
172 | |
173 | memory "calibration" |
174 | size = 1; |
175 | read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", |
176 | "0 0 0 0 0 0 0 0 o o o o o o o o"; |
177 | ; |
178 | |
179 | memory "signature" |
180 | size = 3; |
181 | read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", |
182 | "x x x x x x a1 a0 o o o o o o o o"; |
183 | ; |
184 | ; |
EDIT: Oh ganz schön lang für inline. Nächstes Mal als Anhang, versprochen ;) Diesen habe ich hier gefunden: http://www.raspberrypi.org/forums/viewtopic.php?f=96&t=61901# Wie kann ich >Ab AVRDUDE Version 6 noch einfacher: simpel eine Bezugnahme machen, ? Dann könnte man bei anderen Typen das selbst lösen, wenn die sich NUR in der Bezeichung und in der DEVICE-ID unterscheiden. Axelr.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.