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"
> 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.
Fehlende Abblockkondensatoren und lange Strippen sind keine gute
Kombination.
Christoph schrieb:> Atmega64-A
Warum ist der zweite GND nicht angeschlossen?
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.
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.
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
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.
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
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?
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.
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