Forum: Compiler & IDEs AVRDUDE µC-Kompatibilität (A und PA Typen)


von Tim (Gast)


Lesenswert?

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?

von Uwe (Gast)


Lesenswert?

Tim,

die Kennung der Typen steht im Datenblatt und dann kannst Du u.a. die 
Textdatei erweitern. Ist gar nicht schwer !

von Falk B. (falk)


Lesenswert?

Die unterscheiden sich doch meist nur im ID code. Also A-Typen in der 
config kopieren, Name und ID ändern, fertig.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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.

von Tim (Gast)


Lesenswert?

Das klingt doch schon mal sehr gut. Vielen Dank für die Kommentare.

Gilt das gleiche auch für die Picopower-Typen?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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.

von Axel R. (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.