Forum: Mikrocontroller und Digitale Elektronik atmega164A programmieren?


von THE B. (thebassbox)


Lesenswert?

Hallo Leutz!


Ich hab hier ein kleine Problem, für mein Projekt hatte ich eigentlich 
den atmega644 verwendet weil ich ja 20mhz taktfrequenz brauche.
da ich eine größere stückzahl brauche wurde mir der atmega164A 
empfohlen, der ja pingleich ist und auch 20mhz kann.
nun hab ich 50 stück davon da und kann die leider nicht programmieren.
ich verwende den mysmartusb mk2 (myAVR_ProgTool) mit dem pollin atmel 
eva. board.
den atmega16 32 644 konnte ich damit immer problemlos beschreiben.
nur leider beim 164A bekomme ich immer diesen fehler:
1
vorbereiten ...
2
brennen ...
3
benutze: mySmartUSB MK2 an COM4 mit ATmega164A
4
USB-Treiber installiert, aktiv (V 6.5.0.0), Port: COM4
5
Prozessor: ATmega164A
6
schreibe 3758 Bytes in Flash-Memory ...
7
Fehler: beim Vergleich der Prüfsumme.

auch das update auf die alte firmware des mysmart usb brachte keine 
besserung.

dann wolle ich das gute alte ponyprog zusammen mit der rs232 isp 
schnitstelle des pollin boades verwende, aber leider kann das ponyprog 
den 164a nicht.

kann mit jemand helfen wie ich den 164a programmieren kann?
ggf. auch mit anderer hardware.


Beste Grüße
TheBassBox

von mikro (Gast)


Lesenswert?

THE BASSBOX schrieb:
> ich verwende den mysmartusb mk2 (myAVR_ProgTool)


nimm doch das myAVR ProgTool, da kann man auch den 164a auswählen.


http://shop.myavr.de/index.php?sp=download.sp.php&suchwort=dl112

von THE B. (thebassbox)


Lesenswert?

mikro schrieb:
> THE BASSBOX schrieb:
>> ich verwende den mysmartusb mk2 (myAVR_ProgTool)
>
>
> nimm doch das myAVR ProgTool, da kann man auch den 164a auswählen.
>
>
> http://shop.myavr.de/index.php?sp=download.sp.php&;...

wie oben geschrieben verwende ich das tool schon und es kommt eben 
dieser fehler, den atmega164a hab ich ausgewählt.

von Michael (Gast)


Lesenswert?

Fuse auslesen klappt beim 164 und Spannung bekommt er auch?

von THE B. (thebassbox)


Lesenswert?

Fuse auslesen und schreiben klappt.
spannung hat er auch, wie gesagt wenn ich den atmega16 oder 644 einlege 
dann funktioniert das beschreiben.

von Julius (Gast)


Lesenswert?

hast schon DUDE versucht?
das kannst du im ProgTool auch auswählen... unten rechts die ListBox 
ruft DUDE auf... dort als Protokoll AVR911 für den MK2 asuwählen

Gruß

von THE B. (thebassbox)


Lesenswert?

so ich hab es nochmal mit dem avrdude probiert, hier das ergebniss:
1
C:\>avrdude -P com4 -c avr911 -p m164 -U flash:w:1.hex -F
2
3
Connecting to programmer: .
4
Found programmer: Id = "AVR ISP"; type = S
5
    Software Version = 2.3; Hardware Version = 2.0
6
Programmer supports auto addr increment.
7
Programmer supports buffered memory access with buffersize=512 bytes.
8
9
Programmer supports the following devices:
10
    Device code: 0x1c
11
    Device code: 0x55
12
    Device code: 0x01
13
    Device code: 0x56
14
    Device code: 0x13
15
    Device code: 0x28
16
    Device code: 0x20
17
    Device code: 0x4c
18
    Device code: 0x30
19
    Device code: 0x6c
20
    Device code: 0x38
21
    Device code: 0x68
22
    Device code: 0x41
23
    Device code: 0x46
24
    Device code: 0x44
25
    Device code: 0x03
26
    Device code: 0x75
27
    Device code: 0x74
28
    Device code: 0x63
29
    Device code: 0x64
30
    Device code: 0x79
31
    Device code: 0x14
32
    Device code: 0x15
33
    Device code: 0x16
34
    Device code: 0x17
35
    Device code: 0x72
36
    Device code: 0x60
37
    Device code: 0x76
38
    Device code: 0x77
39
    Device code: 0x3b
40
    Device code: 0x6a
41
    Device code: 0x5e
42
    Device code: 0x29
43
    Device code: 0x2a
44
    Device code: 0x2b
45
    Device code: 0x06
46
    Device code: 0x07
47
    Device code: 0x08
48
    Device code: 0x21
49
    Device code: 0x09
50
    Device code: 0x0a
51
    Device code: 0x22
52
    Device code: 0x23
53
    Device code: 0x24
54
    Device code: 0x0b
55
    Device code: 0x0c
56
    Device code: 0x0d
57
    Device code: 0x18
58
    Device code: 0x19
59
    Device code: 0x25
60
    Device code: 0x26
61
    Device code: 0x27
62
    Device code: 0x1a
63
    Device code: 0x1b
64
    Device code: 0x4b
65
    Device code: 0x4d
66
    Device code: 0x4e
67
    Device code: 0x4f
68
69
avrdude: AVR device initialized and ready to accept instructions
70
71
Reading | ################################################## | 100% 0.
72
73
avrdude: Device signature = 0x1e940f
74
avrdude: Expected signature for ATMEGA164 is 1E 94 0A
75
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be
76
77
         To disable this feature, specify the -D option.
78
avrdude: erasing chip
79
avrdude: reading input file "1.hex"
80
avrdude: input file 1.hex auto detected as Intel Hex
81
avrdude: writing flash (3596 bytes):
82
83
Writing | ################################################## | 100% 3.
84
85
86
87
avrdude: 3596 bytes of flash written
88
avrdude: verifying flash memory against 1.hex:
89
avrdude: load data flash data from input file 1.hex:
90
avrdude: input file 1.hex auto detected as Intel Hex
91
avrdude: input file 1.hex contains 3596 bytes
92
avrdude: reading on-chip flash data:
93
94
Reading | ################################################## | 100% 1.
95
96
97
98
avrdude: verifying ...
99
avrdude: verification error, first mismatch at byte 0x0000
100
         0x0c != 0xff
101
avrdude: verification error; content mismatch
102
103
avrdude: safemode: Fuses OK
104
105
avrdude done.  Thank you.
106
107
108
C:\>

-F muss ich machen damit der ATMEGA164A angenommen wird.

von Nobby (Gast)


Lesenswert?

THE BASSBOX schrieb:
> C:\>avrdude -P com4 -c avr911 -p m164 -U flash:w:1.hex -F

hast du den Programmer schon einmal auf langsamer eingestellt? zum 
Beispiel so:

C:\>avrdude -P com4 -c avr911 -p m164 -B 100 -U flash:w:1.hex -F

geht's dann?

von THE B. (thebassbox)


Lesenswert?

bringt leider auch nichts:



avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
         0x0c != 0xff
avrdude: verification error; content mismatch

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

von none (Gast)


Lesenswert?

Atmega164A vs. Atmega164PA

Table 27-6.
Device and JTAG ID.
Part
Signature bytes address JTAG
0x000 0x001 0x002 Part number Manufacture ID
1
ATmega164A 0x1E 0x94 0x0F 940A 0x1F
1
ATmega164PA 0x1E 0x94 0x0A 940A 0x1F
ATmega324A 0x1E 0x95 0x15 9511 0x1F
ATmega324PA 0x1E 0x95 0x11 9511 0x1F
ATmega644A 0x1E 0x96 0x09 960A 0x1F
ATmega644PA 0x1E 0x96 0x0A 960A 0x1F
ATmega1284 0x1E 0x97 0x06 9705 0x1F
ATmega1284P 0x1E 0x97 0x05 9705 0x1F

von THE B. (thebassbox)


Lesenswert?

danke für die antwort, ich hab das mal in der avrdude.conf geändert und 
nun wird der A auch richtig erkannt, aber der fehler ist trotzdem noch 
immer da.

hat einer von euch den 164A schon erfolgreich beschrieben?

von THE B. (thebassbox)


Lesenswert?

hier mal der ausschnitt aus der avrdude conf datei für den 164A:

#------------------------------------------------------------
# ATmega164A
#------------------------------------------------------------

# close to ATmega16

part
    id               = "m164a";
    desc             = "ATMEGA164A";
    has_jtag         = yes;
    stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
    avr910_devcode   = 0x74;
    signature        = 0x1e 0x94 0x0f;
    pagel            = 0xd7;
    bs2              = 0xa0;
    chip_erase_delay = 9000;
    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
                       "x x x x  x x x x    x x x x  x x x x";

    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
                       "x x x x  x x x x    x x x x  x x x x";

    timeout    = 200;
    stabdelay    = 100;
    cmdexedelay    = 25;
    synchloops    = 32;
    bytedelay    = 0;
    pollindex    = 3;
    pollvalue    = 0x53;
    predelay    = 1;
    postdelay    = 1;
    pollmethod    = 0;

    pp_controlstack     =
        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
    hventerstabdelay    = 100;
    progmodedelay       = 0;
    latchcycles         = 5;
    togglevtg           = 1;
    poweroffdelay       = 15;
    resetdelayms        = 1;
    resetdelayus        = 0;
    hvleavestabdelay    = 15;
    chiperasepulsewidth = 0;
    chiperasepolltimeout = 10;
    programfusepulsewidth = 0;
    programfusepolltimeout = 5;
    programlockpulsewidth = 0;
    programlockpolltimeout = 5;

    idr                 = 0x31;
    spmcr               = 0x57;
    allowfullpagebitstream = no;

    memory "eeprom"
        paged           = no; /* leave this "no" */
        page_size       = 4;  /* for parallel programming */
        size            = 512;
        min_write_delay = 9000;
        max_write_delay = 9000;
        readback_p1     = 0xff;
        readback_p2     = 0xff;
  read            = "  1   0   1   0      0   0   0   0",
                          "  0   0   x   x      x   x  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  o   o   o   o      o   o   o   o";

  write           = "  1   1   0   0      0   0   0   0",
                          "  0   0   x   x      x   x  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  i   i   i   i      i   i   i   i";

  loadpage_lo  = "  1   1   0   0      0   0   0   1",
        "  0   0   0   0      0   0   0   0",
        "  0   0   0   0      0   0  a1  a0",
        "  i   i   i   i      i   i   i   i";

  writepage  = "  1   1   0   0      0   0   1   0",
        "  0   0   x   x      x   x  a9  a8",
        " a7  a6  a5  a4     a3  a2   0   0",
        "  x   x   x   x      x   x   x   x";

  mode    = 0x41;
  delay    = 10;
  blocksize  = 128;
  readsize  = 256;
      ;

    memory "flash"
        paged           = yes;
        size            = 16384;
        page_size       = 128;
        num_pages       = 128;
        min_write_delay = 4500;
        max_write_delay = 4500;
        readback_p1     = 0xff;
        readback_p2     = 0xff;
        read_lo         = "  0   0   1   0      0   0   0   0",
                          "  0   0 a13 a12    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  o   o   o   o      o   o   o   o";

        read_hi         = "  0   0   1   0      1   0   0   0",
                          "  0   0 a13 a12    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  o   o   o   o      o   o   o   o";

        loadpage_lo     = "  0   1   0   0      0   0   0   0",
                          "  0   0   x   x      x   x   x   x",
                          "  x   x  a5  a4     a3  a2  a1  a0",
                          "  i   i   i   i      i   i   i   i";

        loadpage_hi     = "  0   1   0   0      1   0   0   0",
                          "  0   0   x   x      x   x   x   x",
                          "  x   x  a5  a4     a3  a2  a1  a0",
                          "  i   i   i   i      i   i   i   i";

        writepage       = "  0   1   0   0      1   1   0   0",
                          "  0   0 a13 a12    a11 a10  a9  a8",
                          " a7  a6   x   x      x   x   x   x",
                          "  x   x   x   x      x   x   x   x";

  mode    = 0x21;
  delay    = 6;
  blocksize  = 128;
  readsize  = 256;
      ;

    memory "lock"
        size            = 1;
        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
                          "x x x x  x x x x   x x o o  o o o o";

        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
                          "x x x x  x x x x   1 1 i i  i i i i";
        min_write_delay = 9000;
        max_write_delay = 9000;
      ;

    memory "lfuse"
        size            = 1;
        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
                          "x x x x  x x x x   o o o o  o o o o";

        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
                          "x x x x  x x x x   i i i i  i i i i";
        min_write_delay = 9000;
        max_write_delay = 9000;
      ;

    memory "hfuse"
        size            = 1;
        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
                          "x x x x  x x x x   o o o o  o o o o";

        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
                          "x x x x  x x x x   i i i i  i i i i";
        min_write_delay = 9000;
        max_write_delay = 9000;
      ;

    memory "efuse"
        size            = 1;

        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
                          "x x x x  x x x x  o o o o  o o o o";

        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
                          "x x x x  x x x x  1 1 1 1  1 i i i";
        min_write_delay = 9000;
        max_write_delay = 9000;
      ;

    memory "signature"
        size            = 3;
        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x 
x  x",
                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o 
o  o";
      ;

    memory "calibration"
        size            = 1;

        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
        ;
  ;

von THE B. (thebassbox)


Lesenswert?

ist denn dieser atmega164A so selten das den noch keiner beschrieben 
hat?

von Dietrich L. (dietrichl)


Lesenswert?

Hast Du ein 2. Exemplar zum Test? Vielleicht ist er ja kaputt :-(

von Dietrich L. (dietrichl)


Lesenswert?

Michi schrieb im Beitrag #3159828:
> THE BASSBOX schrieb:
>> ...nun hab ich 50 stück davon da...

Du hast recht, das schrieb er. Ich nehme ja auch an, er hat es mit 
mindestens einem anderen getestet.
Aber manchmal passiert es, dass man an komplizierte Probleme denkt und 
nur ein ganz einfaches hat...

von THE B. (thebassbox)


Lesenswert?

also ich hab 3 stück getestet und die sind alle gleich.
wenn ich den ic dann wieder auslese dann ist ein teil des programmes 
drauf.


Falk Brunner meinte dazu:

Ja, das sieht nach einem Programmierproblem aus, nicht nach einem 
Problem mit dem HEX-File. Möglichgerweise ist in den 
Beschreibungsdateien für dein 164A ein Fehler drin. Man sieht eindeutig, 
dass jeweils die 4. Page komplett exakt geschrieben wird, während die 3 
vorhergehenden voller Fehler sind und praktisch keinerlei korrekte Daten 
enthalten.

von M. N. (Gast)


Lesenswert?

In meinen Beständen ist ein ATmega164P, der die gleiche Kennung wie ein 
..164PA (940A) hat.

Beim Programmieren gab es keinerlei Probleme oder Abweichungen in den 
Programmierroutinen zu anderen ATmegas.
Ich verwende einen Programmieradapter am LPT-Port. Hast Du einen 
LPT-Port am Rechner, dann könntest Du es damit mal probieren? 
http://www.mino-elektronik.de/bilder/avrprog/avrprog2.png

von THE B. (thebassbox)


Lesenswert?

M. N. schrieb:
> In meinen Beständen ist ein ATmega164P, der die gleiche Kennung wie ein
> ..164PA (940A) hat.
>
> Beim Programmieren gab es keinerlei Probleme oder Abweichungen in den
> Programmierroutinen zu anderen ATmegas.
> Ich verwende einen Programmieradapter am LPT-Port. Hast Du einen
> LPT-Port am Rechner, dann könntest Du es damit mal probieren?
> http://www.mino-elektronik.de/bilder/avrprog/avrprog2.png

als lpt programmer hab ich immer diese schaltung vom henne verwendet:
http://www.hoelscher-hi.de/hendrik/light/ressources/an011.pdf
unter: paralleler Programmieradapter (PAR-PROG)

für deine schaltung fehlt mir leider der 74hct126d
was könnte ich alternativ verwenden?

von THE B. (thebassbox)


Lesenswert?

so ich kann euch nun mitteilen das ich es geschafft hab.
das hex file ist auf dem atmega164A drauf.

scheinbar kann man den nur richtig über lpt programmieren, ich hab dann 
diese schaltung vom henne verwendet wie ich oben geschrieben hab:
http://www.hoelscher-hi.de/hendrik/light/ressource...
unter paralleler Programmieradapter (PAR-PROG)

dann per avrdude mit meiner angepassten version (siehe oben) geflasht 
per:
avrdude -P lpt1 -c pony-stk200 -p m164a -U flash:w:1.hex -F
dann noch die fuse bits angepasst und fertig.


Vielen dank für eure Hilfe!

von M. N. (Gast)


Lesenswert?

THE BASSBOX schrieb:
> scheinbar kann man den nur richtig über lpt programmieren, ich hab dann
> diese schaltung vom henne verwendet wie ich oben geschrieben hab:

Das finde ich insofern bemerkenswert, als dass immer wieder auf 
LPT-Prommer geschimpft wird :-)
Bei meiner Schaltung könnte man den HCT126 vermutlich auch weglassen, 
was aber bei längeren Kabel nicht so günstig ist. Auch mag ich es 
lieber, wenn der µC voll entkoppelt ist, sofern er nicht gerade 
programmiert wird.

Glückwunsch, dass Du noch einen LPT-Port hast und dass er Dir geholfen 
hat!

von Falk B. (falk)


Lesenswert?

@ THE BASSBOX (thebassbox)

>so ich kann euch nun mitteilen das ich es geschafft hab.
>das hex file ist auf dem atmega164A drauf.

Gut.

>scheinbar kann man den nur richtig über lpt programmieren,

Sicher nicht. Wollen wir wetten, dass es ein "richtiger" 
Programmieradapter ala AVR ISP MK II es softort richtig kann?

>dann per avrdude mit meiner angepassten version (siehe oben) geflasht
>per:
>avrdude -P lpt1 -c pony-stk200 -p m164a -U flash:w:1.hex -F
>dann noch die fuse bits angepasst und fertig.

OK, ein passabler workaround, aber keine Lösung. Ich tippe immer noch 
auf ein Softwareproblem, wahrscheinlich im myAVR_ProgTool oder avrdude.

In der config kann ich auf die Schnelle keinen Fehler finden, damit 
kenne ich mich aber auch nicht wirklich aus.

von Dananiel (Gast)


Lesenswert?

Falls das überhaupt noch relevant ist:
Doch da könnte ein Fehler in der Config (es könnten auch noch mehr sein, 
hab nicht alles gecheckt)!!!

Ich hatte die gleichen Probleme bei meinem ATmega16U4. Habs am Ende mit 
avrdude und selbstgeschriebener config über das mySMARTUSB mk2 
hingekriegt (virtuell seriell). Das lustige ist, dass obwohl das myAVR 
ProgTool bei avr911 mode den AVRdude nutzt (er entpackt das in einen 
temp ordner) und man die config hier auch editieren kann (hab ich 
gemacht damit er meinen überhaupt erkennt, hat also funktioniert), läuft 
das Aufrufen der AVRdudes über ProgTool weiterhin fehlerhaft, wobei das 
direkte aufrufen funktioniert!!! Ich würde sagen vorsicht vor dem Tool.

Zurück zu deinem Problem:

Problem könnte die Adressierung beim SPI flashen sein.
Der kann nur die hälfte der bytes richtig zuordnen, weil sich die Anzahl 
der Bytes die der mit den Befehlen "load" und "write" jeweils 
mitgeschickt hat geändert hat (im Vergleich zu älteren Modellen wie 
mega16).

Beim Datenblatt des 164A sind widersprüche! Deswegen bin ich mir nicht 
ganz sicher. Und in meinem Fall (atmega16u4) war der Text auch 
widersprüchlich zur Tabelle und nicht richtig (ich brauchte nur 6, im 
text stand 7 LSB beim write befehl).

Bei 164A:

Im text (datenblatt seite 313) steht die 7 LSB mit dem write befel und 
dann byte 8:15... WO ist byte 7 geblieben? Man fängt doch bei byte 0 an 
zu zählen oder? Und anders gezählt wäre 15 auch nicht das letzte, wobei 
hier eh 13 nur nötig sind:16k / 15 bei 128k)
Deswegen beides mal ausprobieren (erst 7LSB, dann 7:15 und erst 8LSB 
dann 8:15) ...

Der chiperase vor dem flashen setzt alles auf 0xff und weil er einige 
Bytes systematisch nicht richtig adressieren kann, bleiben diese so.

Folgendes musst du in der Config oben vermutlich ändern...

memory "flash"
        paged           = yes;
        size            = 16384;
        page_size       = 128;
        num_pages       = 128;
        min_write_delay = 4500;
        max_write_delay = 4500;
        readback_p1     = 0xff;
        readback_p2     = 0xff;
        read_lo         = "  0   0   1   0      0   0   0   0",
                          "  0   0 a13 a12    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  o   o   o   o      o   o   o   o";

        read_hi         = "  0   0   1   0      1   0   0   0",
                          "  0   0 a13 a12    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  o   o   o   o      o   o   o   o";

        loadpage_lo     = "  0   1   0   0      0   0   0   0",
                          "  0   0   x   x      x   x   x   x",
                          "  x   a6  a5  a4     a3  a2  a1  a0",
                          "  i   i   i   i      i   i   i   i";

        loadpage_hi     = "  0   1   0   0      1   0   0   0",
                          "  0   0   x   x      x   x   x   x",
                          "  x   a6  a5  a4     a3  a2  a1  a0",
                          "  i   i   i   i      i   i   i   i";

        writepage       = "  0   1   0   0      1   1   0   0",
                          "  0   0 a13 a12    a11 a10  a9  a8",
                          " a7   x   x   x      x   x   x   x",
                          "  x   x   x   x      x   x   x   x";r:

eventuell schadet aber auch folgendes nicht, falls das nicht 
funktioniert, da die restlichen adressbits vermutlich immer don't cares 
(x) sind (so ist es beim atmega16u4 und bei 164a stehts nicht explizit, 
aber in der Tablle seite 314 steht quasi alle adressbits immer 
schicken)!

memory "flash"
        paged           = yes;
        size            = 16384;
        page_size       = 128;
        num_pages       = 128;
        min_write_delay = 4500;
        max_write_delay = 4500;
        readback_p1     = 0xff;
        readback_p2     = 0xff;
        read_lo         = "  0   0   1   0      0   0   0   0",
                          "  0   0 a13 a12    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  o   o   o   o      o   o   o   o";

        read_hi         = "  0   0   1   0      1   0   0   0",
                          "  0   0 a13 a12    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  o   o   o   o      o   o   o   o";

        loadpage_lo     = "  0   1   0   0      0   0   0   0",
                          "  0   0 a13 a12    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  i   i   i   i      i   i   i   i";

        loadpage_hi     = "  0   1   0   0      1   0   0   0",
                          "  0   0 a13 a12    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  i   i   i   i      i   i   i   i";

        writepage       = "  0   1   0   0      1   1   0   0",
                          "  0   0 a13 a12    a11 a10  a9  a8",
                          " a7  a6  a5  a4     a3  a2  a1  a0",
                          "  x   x   x   x      x   x   x   x";r:

Schlechte ATMEL docu und schlechtes myAVRProgTool in kombi. uiuiuiuiui.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Der Programmer sagt doch eindeutig was falsch läuft.
Signatur 1e940f ist der 164A, genau den hat er ja auch gekauft.
Aber der programmer erwartet 1e940a für den 164PA.
-> also den 164A statt 164PA beim Programmieren auswählen...
Oder im conf am Signature Byte rumspielen.

Dem LPT Progger waren die Sigbytes wohl einfach nur egal.

von Dananiel (Gast)


Lesenswert?

ich muss auch meinen erfolg revidieren. erst liefs, dann nicht mehr. 
sehr seltsam.

von Dananiel (Gast)


Lesenswert?

und direkt jetzt liefs wieder! :D
sobald ich das myAVR ProgTool mal laufen hatte, spinnt er, bis ich den 
mySMART USB neu connecte!!
So Smart ist das Ding gar nicht.

von Dananiel (Gast)


Lesenswert?

Martin Wende schrieb:
> Der Programmer sagt doch eindeutig was falsch läuft.
> Signatur 1e940f ist der 164A, genau den hat er ja auch gekauft.
> Aber der programmer erwartet 1e940a für den 164PA.
> -> also den 164A statt 164PA beim Programmieren auswählen...
> Oder im conf am Signature Byte rumspielen.

jaa, aber wenn du weitergelesen hättest, hättest du gesehen, dass das 
problem hier im thread schon mittlerweile gelöst war ...

von Falk B. (falk)


Lesenswert?

Auch wenn das Problem schon "geworkarounded" ist, hier mal ein Test. 
Sowohl Atmega164A als auch ATmega164PA lassen sich AVR Studio 4.18 + AVR 
Dragon problemlos erkennen und beschreiben. AVR ISP MK II hab ich nicht 
getestet.

von Amin (Gast)


Lesenswert?

I am not a German speaker. I used Google Translate to hardly understand 
what the final answer is, but could not.

I have the same problem, I am using USBASP to program an ATMEGA164A. 
But, it fails.

What should I do? changing the config file or the programmer? If config 
file, change which part from what to what and use what avrdude command? 
If programmer, which programmer?

Thanks.

von Amin (Gast)


Lesenswert?

I found out what the problem was:

I was powering up the circuit by two AA batteries, means 3 volts. When I 
changed the circuit power supply to 5 volts, it worked flawlessly. I 
think the programmer made the issue.

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.