STK500 via mySmartUSB light programmieren

wer

Neues Mitglied
02. Juli 2012
485
0
0
Sprachen
  1. Assembler
Folgendes Problem:

Ich möchte einen ATmega1284p programmieren mit einem 'mySmartUSB light'.

Sitzt der MC in seiner Zielschaltung (Loch/Streifenraster mit 6 pol. ISP Header ohne eigene Stromversorgung) dann läßt er sich anstandslos programmieren.
Die Programmierung über das STK500 selbst, seriell (also ohne den USB-Programmer) klappt auch. Aber, sitzt er hingegen in einem roten Sockel des STK500 (Spannungsversorgung des STK500 aus, USB-Programmer an SPROG3) dann bekomme ich die folgende Meldung:

Getting isp parameter.. SD=0x03 .. OKOK
Reading FLASH input file.. OK
Setting mode and device parameters.. OK
Entering programming mode.. FAILED!

In beiden Positionen die gleichen Fuses und einen externen Quarz.
Ich trau mich nicht, das STK500 unter Strom zu setzen. Das sollte ja auch nicht nötig sein, oder?

Wo könnte das Problem liegen?
 
Hi,

Die Programmierung über das STK500 selbst, seriell (also ohne den USB-Programmer) klappt auch.
Aber, sitzt er hingegen in einem roten Sockel des STK500 (Spannungsversorgung des STK500 aus, USB-Programmer an SPROG3) dann bekomme ich die folgende Meldung:

Getting isp parameter.. SD=0x03 .. OKOK
Reading FLASH input file.. OK
Setting mode and device parameters.. OK
Entering programming mode.. FAILED!

In beiden Positionen die gleichen Fuses und einen externen Quarz.
Ich trau mich nicht, das STK500 unter Strom zu setzen. Das sollte ja auch nicht nötig sein, oder?

Wo könnte das Problem liegen?

sind die Jumper auf dem STK500 richtig gesetzt?

Gruß
Dino
 
Wie meinst Du das mit dem externen Quarz im Sockel des Stk? Im Quarzsockel des Stk? Das ist für den AVR'ne eexterne Clock. Außerdem mus die auf dem STK via Jumper auf den Sockel verbunden werden (siehe Handbuch)
 
Hätte ich sonst nicht auch Probleme, wenn ich den MC mit dem STK500 (seriell) programmiere?
An welchen Jumper denkst Du?
Wenn Du das STK programmieren läßt, sind Vtg, Reset usw mit dem entsprechenden Netz auf der "Masterseite" des STK verbunden (bzw zu verbinden) - wenn Du einfach einen anderen Programmer auf den SPROG-Header klemmst, ist bedient der den Reset (das STK darf dann also nicht mitreinfummeln) verwendest Du jetzt sogar einen Programmer der auf der Vtg-Leitung 'ne Spannung mitbringt (Vtg= Target Voltage - darüber mißt der Programmer eigentlich die vorhandene (!) Spannung des targets zur Pegelanpassung), würde diese mit dem Vtg der Masterseite des STK verbunden werden. Du kannst das aber alles trennen -> Jumper
(sicherheitshalber nochmal zusammengefaßt:
AVR steckt im Sockel, externer Programmer ist mit entsprechendem SPROG-Stecker verbunden.
Programmer bringt über Vtg (und GNd) Stromversorgung mit
AVR ist auf nicht-internen Takt gefused)

UserGuide 3.8.1 (Figure 3-22) VTARGET-Jumper -> verbindet das Vtg-Netz um die Sockel, LEDs, Taster usw mit der Stromversorgung des STK (Masterseite). Oder anders gesagt: über diesen Jumper wird das gesamte Vtg-Netz aus dem STK heraus versorgt (wobei die Spannung über das Studio einstellbar sein sollte) --> willst Du nicht da externe Spannung --> Jumper offen

UserGuide 3.8.3 (Figure 3-26) RESET-Jumper -> verbindet das (Target-)Reset-Netz mit dem Master-Controller - das STK kann darüber also den Target-AVR in den Reset zwingen (zB beim Flaschen, oder eben beim Reset über den Taster rechts oben --> Programmieren soll Dein externer Programmer, nicht das STK --> Jumper offen

UserGuide 3.8.4 (Figure 3-30) OCSEL- und XTAL1-Jumper -> mit OCSEL kannst Du entweder einen Takt den der Master-Controller generiert (Studio) oder den Takt eines "Oszillators" (der durch den Quarzsockel bestimmt wird) auf einen Voltage-Converter legen (oder strenggenommen über den mittleren Pin auch irgend'ne andere externe Clock) - über den XTAL1-Jumper wird der Converter-Ausgang dann mit dem XTAL1-Netz verbunden.
Hier war jetzt unklar, wie Du Deinen externen Quarz mit dem AVR-Sockel verbunden hast.
Steckt der Quarz im CRYSTAL-Sockel des STK, ist OCSEL auf 2-3 zu jumpern, und der XTAL zu schließen. Hast Du hingegen Deinen externen Quarz (mit Bürdekerkos) direkt an den entsprechenden Beinen (bzw PORT-Header), muß der XTAL1-Jumper offen sein (OCSEL ist dann logischerweise Wurscht).
Zumindest bei Verwendung des STK-Quarz-Sockels benötigt das STK seine eigene Spannungsversorgung - der "Voltage-Converter" da oben ist Quasi ein Not-Gatter mit Schmitt-Trigger-Eingang, welches Durch das Vtg-Netz (also Deinen Programmer) versorgt wird, der "Oszillator" (Also die Kippstufe, die mit dem CRYSTAL-Sockel gebildet wird) wird hingegen durch Vcc, also das Spannungsnetz des STK versorgt.

Wenn der VTARGET-Jumper wie gefordert offen ist, kannst (solltest) Du die STK-Versorgung anschalten.
 
Wenn Du das STK programmieren läßt, sind Vtg, Reset usw mit dem entsprechenden Netz auf der "Masterseite" des STK verbunden (bzw zu verbinden) - wenn Du einfach einen anderen Programmer auf den SPROG-Header klemmst, ist bedient der den Reset (das STK darf dann also nicht mitreinfummeln) verwendest Du jetzt sogar einen Programmer der auf der Vtg-Leitung 'ne Spannung mitbringt (Vtg= Target Voltage - darüber mißt der Programmer eigentlich die vorhandene (!) Spannung des targets zur Pegelanpassung), würde diese mit dem Vtg der Masterseite des STK verbunden werden. Du kannst das aber alles trennen -> Jumper
(sicherheitshalber nochmal zusammengefaßt:
AVR steckt im Sockel, externer Programmer ist mit entsprechendem SPROG-Stecker verbunden.
Programmer bringt über Vtg (und GNd) Stromversorgung mit
AVR ist auf nicht-internen Takt gefused)
Richtig! Und Quarz steckt im CRYSTAL-Sockel.
UserGuide 3.8.1 (Figure 3-22) VTARGET-Jumper -> verbindet das Vtg-Netz um die Sockel, LEDs, Taster usw mit der Stromversorgung des STK (Masterseite). Oder anders gesagt: über diesen Jumper wird das gesamte Vtg-Netz aus dem STK heraus versorgt (wobei die Spannung über das Studio einstellbar sein sollte) --> willst Du nicht da externe Spannung --> Jumper offen

UserGuide 3.8.3 (Figure 3-26) RESET-Jumper -> verbindet das (Target-)Reset-Netz mit dem Master-Controller - das STK kann darüber also den Target-AVR in den Reset zwingen (zB beim Flaschen, oder eben beim Reset über den Taster rechts oben --> Programmieren soll Dein externer Programmer, nicht das STK --> Jumper offen

UserGuide 3.8.4 (Figure 3-30) OCSEL- und XTAL1-Jumper -> mit OCSEL kannst Du entweder einen Takt den der Master-Controller generiert (Studio) oder den Takt eines "Oszillators" (der durch den Quarzsockel bestimmt wird) auf einen Voltage-Converter legen (oder strenggenommen über den mittleren Pin auch irgend'ne andere externe Clock) - über den XTAL1-Jumper wird der Converter-Ausgang dann mit dem XTAL1-Netz verbunden.
Hier war jetzt unklar, wie Du Deinen externen Quarz mit dem AVR-Sockel verbunden hast.
Steckt der Quarz im CRYSTAL-Sockel des STK, ist OCSEL auf 2-3 zu jumpern, und der XTAL zu schließen. Hast Du hingegen Deinen externen Quarz (mit Bürdekerkos) direkt an den entsprechenden Beinen (bzw PORT-Header), muß der XTAL1-Jumper offen sein (OCSEL ist dann logischerweise Wurscht).
Zumindest bei Verwendung des STK-Quarz-Sockels benötigt das STK seine eigene Spannungsversorgung - der "Voltage-Converter" da oben ist Quasi ein Not-Gatter mit Schmitt-Trigger-Eingang, welches Durch das Vtg-Netz (also Deinen Programmer) versorgt wird, der "Oszillator" (Also die Kippstufe, die mit dem CRYSTAL-Sockel gebildet wird) wird hingegen durch Vcc, also das Spannungsnetz des STK versorgt.

Wenn der VTARGET-Jumper wie gefordert offen ist, kannst (solltest) Du die STK-Versorgung anschalten.

Also wenn ich das richtig verstehe, dann klappt das nicht, weil der Quarz nicht versorgt wird?
Ich muß also den VTARGET-Jumper und den RESET-Jumper öffnen, damit sich die beiden Systeme nicht in die Quere kommen, dann aber dennoch das STK500 einschalten, wegen des Quarzes?
 
Hi,

Richtig! Und Quarz steckt im CRYSTAL-Sockel.

Also wenn ich das richtig verstehe, dann klappt das nicht, weil der Quarz nicht versorgt wird?
Ich muß also den VTARGET-Jumper und den RESET-Jumper öffnen, damit sich die beiden Systeme nicht in die Quere kommen, dann aber dennoch das STK500 einschalten, wegen des Quarzes?

wenn du den internen Takt des Atmels nicht verwendest sondern den Takt des STK500 dann mußt du den STK500 auch versorgen. Der CRYSTAL-Sockel wird nicht als Quarz zu den Atmels geroutet. Das STK500 hat einen Oszillator der mit diesem Quarz betrieben wird. Der Takt wird dann zum Atmel geleitet. Es ist also eigentlich dann kein "External Crystal" sondern "External Clock" bsw "External Oscillator".

Gruß
Dino
 
...klappt das nicht, weil der Quarz nicht versorgt wird?...
genauer: der ganze Oszillator. Ohne Strom schwingt da auch nix. Im AVR ist ein ähnlicher Oszillator, der mit einem externen Quarz komplettiert wird. benötigt halt 2 Beine. Auf dem STK ist mit diskreten Bauteilen ein Quarzoszillator aufgebaut, wobei der Quarz selbst austauschbar ist, und das ganze aus dem Vcc-Netz des STK versorgt wird. Für einen angeschlossenen Target-AVR ist das dasselbe wie ein monolithischer Quarzoszillator-IC, oder 'ne externe Clock - der Target-AVR braucht nur ein Bein, und muß das Schwingen nicht selbst antreiben/rückkoppeln.
...Ich muß also den VTARGET-Jumper und den RESET-Jumper öffnen, damit sich die beiden Systeme nicht in die Quere kommen, dann aber dennoch das STK500 einschalten, wegen des Quarzes?
Und die Schwingungen des STK-Oszillators mittels OSCSEL-Jumper auf den "Voltage Converter" (Vcc->Vtg), und von dort über den XTAL1-Jumper auf das XTAL1-Netz der Target-Sockel verbinden.
(also OSCSEL auf 2-3 und XTAL1 geschlossen)
 
Und die Schwingungen des STK-Oszillators mittels OSCSEL-Jumper auf den "Voltage Converter" (Vcc->Vtg), und von dort über den XTAL1-Jumper auf das XTAL1-Netz der Target-Sockel verbinden.
(also OSCSEL auf 2-3 und XTAL1 geschlossen)
Ja, aber das hab ich ja sowieso! Das ist ja Voraussetzung, wenn man einen externen Quarz nutzen will.
 
nö...
Du kannst den Quarz (mit Bürdeelkos) ebenso am entsprechenden PORT-Header anschließen (PORTE-AUX ?) - dann isses sogar konform zu den Fuses "external Crystal bla blub". Inwiefern der wegen der langen Leitungen noch ordentlich läuft, ist 'ne andere Sache...

Edit: Oder am Expansion-Connector-1 (Pin17, 18) ;)
 
nö...
Du kannst den Quarz (mit Bürdeelkos) ebenso am entsprechenden PORT-Header anschließen (PORTE-AUX ?) - dann isses sogar konform zu den Fuses "external Crystal bla blub". Inwiefern der wegen der langen Leitungen noch ordentlich läuft, ist 'ne andere Sache...

Edit: Oder am Expansion-Connector-1 (Pin17, 18) ;)
Na ja, ich suchte nur einen einfachen Weg den MC im STK500 zu programmieren, ohne mein serielles Kabel ständig umzustecken. Das brauche ich nämlich zur Kommunikation mit einem anderen MC. Aber alleine das ganze hin und her gejumpere ist wahrscheinlich mehr Aufwand, als das umstecken des seriellen Kabels, ganz zu schweigen von dem Quarz.
 
Ehrlich gesagt verstehe ich Dein Problem nicht.

Du hast einen 2ten AVR in einer separaten Schaltung, die den einzigen seriellen Anschluß des Rechners blockiert.
Deswegen kannst Du den internen Programmer des STK nicht verwenden (ohne ständig umzustecken zu müssen).
Folglich willst Du mit Deinem myProgrammer den Controller im STK flashen.
Was spricht eigentlich dagegen, den 1284 direkt in seiner Zielschaltung zu flashen? mit dem myProgrammer.

Wenns das STK sein soll, mußt Du doch nur einmal Jumpern. Wenn Du den Crystal-Sockel des STK nimmst, jumperst Du den entsprechend. Reset läßt Du offen. wenn Du den AVR dann im STK testen willst, er aber dann nicht durch den myProgger versorgt werden soll, kannst Du zwischen die 6Pin-Pfostenbuchse des Programmierers und den SPROG-Header des STK einfach 'ne Verbindung stecken, bei der Vtg getrennt ist. ( Und das STK eben auch beim flashen Vtg erzeugen lassen)

Achtung: wenn Du Deinen Progger verwendest, während der AVR im STK durch das STK versorgt wird (also das STK Vtg generiert) mußt Du sicherstellen, daß im AVR-Studio für das STK 'ne Vtg-Spannung von 5V eingestellt ist.

Im Studio kannst Du nämlich die vom STK generierten Spannungen für Vtg und Aref vorgeben. Der originale AVRISP MKII würde Vtg detektieren (also zB 1,8V), und seine Logikpegel entsprechend anpassen. Dein Programmer bleibt aber mMn stupide bei seinen 5V (bzw dem, was Der Rechner über Vusb schickt). Damit wären aber an den MOSI und SCK höhere Spannungen als Vtg (was nicht erlaubt ist).

Zu Aref: sollte immer offen sein, außer Du willst die wirklich nutzen. Wenn der ADC des Targets auf interne Referenz konfiguriert wird, ist diese meist über den Aref-Pin extern abzublocken. Heißt: die interne Referenz liegt auf dem Bein des AVR. Wenn Du da jetzt irgendwie 'ne (andere) externe Spannung drauflegst, fließt Strom. Je nach Höhe des Stromes weicht entweder solange nur die Referenzspannung ab - wenn er hinreichend groß ist, verabschiedet sich irgendwas...
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)