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 ...
Edit: kann nicht sein, da anderes Board funktioniert, sorry
:
Bearbeitet durch User
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.
Ich habe den ISP Takt auf so-langsam-wie-möglich gestellt.
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.
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.
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.
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?
Stefan ⛄ F. schrieb: > Nenne doch mal konkrete Zahlen, Hat er doch, inklusive Bestätigung, dass es schneller funktioniert.
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) ...
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.