Forum: Mikrocontroller und Digitale Elektronik AtMega2560 + AvrISP MK2 funktioniert nicht


von Andre G. (andgst01)


Lesenswert?

Schönen Freitag Abend!

Ich habe wieder mal ein kleines Problem und sehe den Wald vor lauter 
Bäumen nicht mehr.

Ich habe einen AtMega2560 der mit einem AvrISP MK2 programmiert werden 
soll.
Der µC wird mit einem 16MHz Oszillator betaktet.
Pullup-Widerstand am Reset Pin ist 100k.

Außer dem Oszillator, der Spannungsversorgung und dem Programmer ist 
nichts am µC angeschlossen (vorerst).


Über Atmel Studio kann ich problemlos die Seriennummer des µCs auslesen 
und die Versorgungsspannung passt auch.

Aber wenn ich das Programm auf den µC laden will dann beginnt nach 
einiger Zeit die LED am Programmer rot zu blinken.
Das bedeutet dass es einen Kurzschluss gibt.

Mit dem Durchgangsprüfer habe ich das aber ausgeschlossen.
Die 6 Pins des ISP Steckers auf dem Board haben keine Kurzschlüsse.

Der Programmer selbst funktioniert auch, ein anderes Board kann 
problemlos programmiert werden.


Zuerst dachte ich dass der Pullup Widerstand der Reset Leitung 
vielleicht zu klein war (1k) deshalb habe ich dann einen 100k Widerstand 
verbaut.
Das änderte aber nichts.


Was könnte hier das Problem sein?
Verdrehte MISO / MOSI Leitungen können es ja nicht sein, die 
Seriennummer des µC kann ja ausgelesen werden.

Ich bin ratlos ...

von Harry R. (harry_r2)


Lesenswert?

Edit: kann nicht sein, da anderes Board funktioniert, sorry

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Andre G. schrieb:
> Der µC wird mit einem 16MHz Oszillator betaktet.

Hast du auch die Fuses schon entsprechend gestellt? Sonst läuft er mit 
dem Standardtakt von 1 MHz, und deine ISP-Frequenz muss auf weniger als 
250 kHz eingestellt sein.

> Pullup-Widerstand am Reset Pin ist 100k.

Interessiert nicht. Der Controller wird während der Programmierung eh im 
Reset gehalten.

> Über Atmel Studio kann ich problemlos die Seriennummer des µCs auslesen
> und die Versorgungsspannung passt auch.

Meinst du die device ID? Das ist keine "Seriennummer", denn sie ist ja 
für alle ATmega2560 die gleiche.

Wenn du die lesen kannst aber dann die Programmierung nicht mehr 
funktioniert, klingt das sehr danach, als wäre der ISP-Takt "auf Kante". 
Dann funktionieren ein paar Byte (für die Device ID) halt noch, aber bei 
einer größeren Folge "verpasst" dann der interne Abtaster im Controller 
mal eine Flanke, und alles rennt aus dem Ruder.

von Andre G. (andgst01)


Lesenswert?

Ich habe den ISP Takt auf so-langsam-wie-möglich gestellt.

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


Lesenswert?

Was auch immer das heißen möge. Ich müsste jetzt nachgucken, wie viele 
(oder wenige) kHz das beim AVRISPmkII überhaupt sind.

Übrigens ist zu langsam auch nicht gut, irgendwann bekommt dann 
irgendwas auf dem Host kalte Füße.

Welche Taktrate hast du denn genau eingestellt? Wenn du dann schneller 
werden willst, wäre die erste Aktion, die Fuses entsprechend 
einzustellen, dass dein schnellerer Oszillator benutzbar ist, und erst 
danach den eigentlichen Download zu starten.

von Andre G. (andgst01)


Lesenswert?

Jörg W. schrieb:
> Übrigens ist zu langsam auch nicht gut, irgendwann bekommt dann
> irgendwas auf dem Host kalte Füße.

Ok ....

Ich habe jetzt mal den ISP Takt auf 1MHz gestellt und jetzt funktioniert 
es!
Danke!

Die kleinst mögliche Geschwindigkeit waren übrigens 2,152 kHz.

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


Lesenswert?

Andre G. schrieb:
> Jörg W. schrieb:

> Die kleinst mögliche Geschwindigkeit waren übrigens 2,152 kHz.

Dass es extrem langsam ist, hatte ich noch in Erinnerung.

Schön, dass es jetzt tut.

von Stefan F. (Gast)


Lesenswert?

Andre G. schrieb:
> Ich habe den ISP Takt auf so-langsam-wie-möglich gestellt.

Wirklich? Dieser Programmieradapter kann so langsam takten, dass du es 
mit bloßem Auge sehen kannst (mit einer LED an der Taktleitung). Nur 
dein Bedienprogramm bietet diese Extreme vielleicht nicht an.

Nenne doch mal konkrete Zahlen, und zeige deinen Schaltplan. Oder willst 
du über Gefühle diskutieren?

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


Lesenswert?

Stefan ⛄ F. schrieb:
> Nenne doch mal konkrete Zahlen,

Hat er doch, inklusive Bestätigung, dass es schneller funktioniert.

von Andre G. (andgst01)


Lesenswert?

Das sollte ich eigentlich in einem neuen Thread sagen aber es gibt ein 
weiteres Problem:

Ich habe an den ersten fünf Pins von Port L LEDs (mit Vorwiderstand) die 
auf GND gehen.
Testweise habe ich ein einfaches "LED-Blink-Programm" auf den µC geladen 
und nichts passiert.

Das Programm lässt sich problemlos auf den Chip laden, aber es passiert 
gar nichts.
Die Spannungen am Port L ändern sich gar nicht, sie sind alle 0V.



Aber ich bin gerade während des Schreibens hier draufgekommen was das 
Problem war:

Ich hatte in Atmel Studio zwei "Tabs" offen und hab den "LED Blink Test 
Code" im "falschen" Tab geschrieben.
Als ich dann auf "Programm Device" geklickt habe hat Atmel Stuido das 
ELF File vom anderen Tab genommen und in den µC programmiert.
Der Code in dem Tab sagt "alle Pins von Port L sind 0".
Darum waren immer alle Ports auf 0.

Also es funktioniert alles perfekt, ich bin nur zu blöd (wieder mal) ...

von Bernd (Gast)


Lesenswert?

Andre G. schrieb:
> Pullup-Widerstand am Reset Pin ist 100k.
Nimm mal ein Feuerzeug mit Piezozünder und betätige es in der Nähe des 
Reset-Pins.
Wenn Dein Programm neu startet, würde ich den Pullup reduzieren...

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


Lesenswert?

Bernd schrieb:
> Andre G. schrieb:
>> Pullup-Widerstand am Reset Pin ist 100k.
> Nimm mal ein Feuerzeug mit Piezozünder und betätige es in der Nähe des
> Reset-Pins.
> Wenn Dein Programm neu startet, würde ich den Pullup reduzieren...

War allerdings nicht Thema des Threads. Fürs reine ISP ist der Pullup 
völlig schnuppe. Bezüglich EMV-Schutz ist es besser, 10 kΩ Pullup, 100 
nF an GND und den Pullup mit einer Diode überbrückt zu benutzen. Steht 
irgendwo in einer Appnote. (Die Diode braucht man, weil /RESET intern 
keine Schutzdiode nach Vcc hat, um die HV-Programmierung zu 
ermöglichen.)

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.