Forum: Mikrocontroller und Digitale Elektronik AVR Atmega64-A ISP funktioniert nicht


von Christoph (slanda)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich versuche schon seit einiger zeit den Atmega64-A zu programmieren.
Das ist das erste mal das ich eine Mikrocontroller direkt programmieren.
Ich nutzte das Blink Sketch von Arduino und einen Arduino UNO als ISP.
Ich habe mittlerweile auch einen Attiny85 geholt um zu testen ob ich das 
Prinzip verstehe, mit dem klappt das ohne Probleme.
Der Atmega64-A ist mit einem Labornetzteil bei 5V versorgt, der zeiht 
zwischen 10mA-11mA.
An den Fuses hab ich noch nichts verändert und so wie ich das Datenblatt 
verstanden habe ist der 1MHz interne Oszillator der Standard.

Die Verkabelung hab ich schon ein par mal neu verdrahtet. MOSI & MISO 
hab ich schon versucht zu tauschen.
Ich habe 3 Chips rumliegen hab 2 schon versucht und auf das 
Breakoutboard gelötet.

Sollte ich beim nutzen des Internen Oszillators ein Signal an XTAL1 oder 
XTAL2 messen können?

Und wieso krieg ich keine Verbindung mit dem Chip hin?

Danke schonmal für Antworten :)

Folgend ist die Fehlermeldung die ich in Arduino erhalte:
1
avrdude: Version 6.3-20201216
2
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
3
         Copyright (c) 2007-2014 Joerg Wunsch
4
5
         System wide configuration file is "C:\Users\nutzer\AppData\Local\Arduino15\packages\MegaCore\hardware\avr\2.2.0/avrdude.conf"
6
7
         Using Port                    : COM5
8
         Using Programmer              : stk500v1
9
         Overriding Baud Rate          : 19200
10
         AVR Part                      : ATmega64
11
         Chip Erase delay              : 9000 us
12
         PAGEL                         : PD7
13
         BS2                           : PA0
14
         RESET disposition             : dedicated
15
         RETRY pulse                   : SCK
16
         serial program mode           : yes
17
         parallel program mode         : yes
18
         Timeout                       : 200
19
         StabDelay                     : 100
20
         CmdexeDelay                   : 25
21
         SyncLoops                     : 32
22
         ByteDelay                     : 0
23
         PollIndex                     : 3
24
         PollValue                     : 0x53
25
         Memory Detail                 :
26
27
                                  Block Poll               Page                       Polled
28
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
29
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
30
           eeprom         4    20    64    0 no       2048    8      0  9000  9000 0xff 0xff
31
           flash         33     6   128    0 yes     65536  256    256  4500  4500 0xff 0xff
32
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
33
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
34
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
35
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
36
           calibration    0     0     0    0 no          4    0      0     0     0 0x00 0x00
37
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
38
39
         Programmer Type : STK500
40
         Description     : Atmel STK500 Version 1.x firmware
41
         Hardware Version: 2
42
         Firmware Version: 1.18
43
         Topcard         : Unknown
44
         Vtarget         : 0.0 V
45
         Varef           : 0.0 V
46
         Oscillator      : Off
47
         SCK period      : 0.1 us
48
49
avrdude: AVR device initialized and ready to accept instructions
50
51
Reading | ################################################## | 100% 0.03s
52
53
avrdude: Device signature = 0x000000 (retrying)
54
55
Reading | ################################################## | 100% 0.02s
56
57
avrdude: Device signature = 0x000000 (retrying)
58
59
Beim Hochladen des Sketches ist ein Fehler aufgetreten
60
Reading | ################################################## | 100% 0.02s
61
62
avrdude: Device signature = 0x000000
63
avrdude: Yikes!  Invalid device signature.
64
         Double check connections and try again, or use -F to override
65
         this check.
66
67
68
avrdude done.  Thank you.

von Oliver S. (oliverso)


Lesenswert?

Beim Mega64 und Verwandten liegt die ISP-Schnittstelle nicht auf den 
SPI-Pins.

Datenblatt hilft.

Oliver

von Jürgen (Gast)


Lesenswert?

Außerdem sieht der Pin38 ab aus.

von Christoph (slanda)


Lesenswert?

> Beim Mega64 und Verwandten liegt die ISP-Schnittstelle nicht auf den
> SPI-Pins.

Laut Datenblatt sind nur MOSI und MISO unterschiedlich zur SPI 
Schnittstelle, und man soll PE0 und PE1 nutzen wie ich es auch 
angeschlossen habe.

von EAF (Gast)


Lesenswert?

Fehlende Abblockkondensatoren und lange Strippen sind keine gute 
Kombination.

Christoph schrieb:
> Atmega64-A

Warum ist der zweite GND nicht angeschlossen?

von Stefan F. (Gast)


Lesenswert?

R4 ist zu hochohmig.

Aus dem Datenblatt:
"AVCC is the supply voltage pin for Port F and the A/D Converter. It 
should be externally connected to VCC, even if the ADC is not used. If 
the ADC is used, it should be connected to VCC through a low-pass 
filter."

Mit "low-pass filter" meinen die aber nicht ein R/C Glied mit 470 Ohm, 
sondern eher einen L/C Filter z.B. mit 10µH und 100nF.

von Sebastian W. (wangnick)


Lesenswert?

Jürgen schrieb:
> Außerdem sieht der Pin38 ab aus.

Da sehen noch mehr ab aus.

Mich wundert auch dieser brutale Elko an RESET ...

LG, Sebastian

von Stefan F. (Gast)


Lesenswert?

EAF schrieb:
> Warum ist der zweite GND nicht angeschlossen?

Nicht nur der, auch der zweite VCC Pin fehlt im Schaltplan.

von Christoph (slanda)


Lesenswert?

Stefan F. schrieb:
> R4 ist zu hochohmig. AVCC dient zur Stromversorgung einiger I/O Pins.
Ich habe jetzt R4 rausgeworfen.

EAF schrieb:
> Warum ist der zweite GND nicht angeschlossen?
Hab jetzt alle 3 GND angeschlossen.

EAF schrieb:
> Fehlende Abblockkondensatoren und lange Strippen sind keine gute
> Kombination.
Ich weiß das das nicht das Optimalste ist, aber das ich nicht einmal die 
Device Signature bekommen? Ich will erstmal testen ob ich den 
Programmieren kann bevor ich mir die (noch unfertige) Platine bestelle.

Jürgen schrieb:
> Außerdem sieht der Pin38 ab aus.
Soweit ich weis brauche ich Pin38 nicht zum Programmieren.

Stefan F. schrieb:
> Nicht nur der, auch der zweite VCC Pin fehlt im Schaltplan.
Hab den auch jetzt angeschlossen.

Das Hochladen bringt trotzdem den selben Fehler.

von Stefan F. (Gast)


Lesenswert?

Mache C2 kleiner oder nimm ihn ganz raus.

von Sebastian W. (wangnick)


Lesenswert?

Christoph schrieb:
> und einen Arduino UNO als ISP

Da gab es vor kurzem einen ähnlichen "Fall" hier im Forum, allerdings 
mit einem Arduino Mega 2560 als ISP. Anscheinend muss man, wenn man 
einen Arduino als ISP benutzt, dessen RESET mit einem Kondensator oder 
so verhindern, ansonsten bekommt man angeblich genau die Fehlermeldung 
die du beschreibst. Das ist allerdings Hörensagen, selbst hab ich das 
nie probiert.

LG, Sebastian

von Jürgen (Gast)


Lesenswert?

Christoph schrieb:
>> Außerdem sieht der Pin38 ab aus.
> Soweit ich weis brauche ich Pin38 nicht zum Programmieren.

Nein, aber solange der Chip nicht richtig gelötet ist, würde ich nicht 
woanders suchen

Sebastian W. schrieb:
> Da sehen noch mehr ab aus.
24 bis 32 sind zumindest versetzt, beim Rest bräuchte man einen anderen 
Winkel.

von EAF (Gast)


Lesenswert?

Der 10µC gehört, wenn, dann, an den Reset des UNO.
So stehts in der AdruinoAsISP Anleitung.
Und so sollte man es auch halten.

von EAF (Gast)


Lesenswert?

EAF schrieb:
> 10µC
natürlich 10µF

von Frank K. (fchk)


Lesenswert?

Christoph schrieb:
> EAF schrieb:
>> Fehlende Abblockkondensatoren und lange Strippen sind keine gute
>> Kombination.
> Ich weiß das das nicht das Optimalste ist, aber das ich nicht einmal die
> Device Signature bekommen? Ich will erstmal testen ob ich den
> Programmieren kann bevor ich mir die (noch unfertige) Platine bestelle.

Das ist eine Grundvoraussetzung, damit das überhaupt geht.

Also:
Du hast folgende VCC/GND Paare:
21/22
52/32
64/63

Jedes einzelne Paar braucht einmal 100n keramisch, und zwar so dicht an 
die Prozessorpins, wie es irgendwie geht. Jeder mm zählt. Natürlich 
müssen alle Versorgungspins angeschlossen sein.

Dann einmal 100n zwischen AREF und GND, wo wir schon dabei sind.
Reset will einmal 10k gegen VCC haben, 100n gegen GND ist optional.

ISP-Programming braucht zusätzlich: PB1(SCK), PE0(MOSI), PE1 (MISO), 
RESET, und einen funktionierenden Prozessortakt. Wenn Du die Fuses schon 
umprogrammiert bekommen hast, nimmst Du am besten einen externen 
Oszillator wie sowas hier:

https://www.reichelt.de/quarzoszillator-16-00-mhz-oszi-16-000000-p13686.html?&trstct=pol_0&nbc=1

Auch der möchte einmal 100n direkt zwischen seinem VCC und GND haben, 
und auch hier möglichst dicht an den Pins und nicht 5cm weit weg. Der 
Ausgang kommt an XTAL1.

Damit solltest Du Kontakt bekommen.

fchk

von Christoph (slanda)


Lesenswert?

EAF schrieb:
> Der 10µC gehört, wenn, dann, an den Reset des UNO.
> So stehts in der AdruinoAsISP Anleitung.
> Und so sollte man es auch halten.
Ich habe jetzt den Kondensator direkt an den UNO geklemmt.

Jürgen schrieb:
> 24 bis 32 sind zumindest versetzt, beim Rest bräuchte man einen anderen
> Winkel.
Ich habe die Pins die ich zum Programmieren brauche durchgemessen und 
habe Pin 2&3 locker gefunden, alle anderen sind sonst in Ordnung. Ich 
hab sie jetzt festgelötet. Unter dem Mikroskops find ich sonst auch nix.

Ich habe für den Kondensator von Reset zu GND 10µC, 220pF und 10nF 
Probiert.

Frank K. schrieb:
> Wenn Du die Fuses schon
> umprogrammiert bekommen hast, nimmst Du am besten einen externen
> Oszillator wie sowas hier:
Leider noch nicht, 16MHz Quartz hab ich schon daliegen.

Hab jetzt die 100nF auf das Breakoutboard gelötet.
Reset ist jetzt mit 10K und 100nF(am UNO) angeschlossen.

Gleiche Fehlermeldung wie bisher.
Ich habe bei MegaCore den Atmega64 ausgewählt, oder brauche ich extra 
eine Bibliothek für den Atmega64-A?

von Stefan F. (Gast)


Lesenswert?

Christoph schrieb:
> Ich habe bei MegaCore den Atmega64 ausgewählt, oder brauche ich extra
> eine Bibliothek für den Atmega64-A?

Selbst wenn es so wäre, hat das wohl nichts mit deinem Problem zu tun, 
da er ja nicht einmal die device signature auslesen kann.

von Sebastian (Gast)


Lesenswert?

Christoph schrieb:
> Ich habe jetzt den Kondensator direkt an den UNO geklemmt.

Nicht nur direkt an den Uno, sondern insbesonders zwischen GND und RESET 
des Uno, NICHT des Atmega64. Die Idee ist anscheinend, den ansonsten 
durch avrdude auf dem PC über DTR ausgelösten Hardware-Reset des Uno zu 
verhindern.

LG, Sebastian

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.