Forum: Mikrocontroller und Digitale Elektronik Probleme mit ISP bei Atmega32


von Ber n. (bernhard_s43)


Lesenswert?

Ich habe folgendes Problem:

Ich versuche seit Tagen meine Schaltung mit einem mega32 über ISP zu 
programmieren. Als Programer verwende ich mein STK500.

Ich habe MISO(1), Vcc(2), SCK(3), MOSI(4), Reset(5) und GND(6) mit den 
jeweiligen Pins am STK500 (ISP6PIN) verbunden.
Die Jumper AREF, RESET, XTAL1 und OSCSEL(auf 2.Position) gesetzt.

Leider bringt AVR-Studio beim Versuch zu Programmieren oder die ID zu 
lesen den Fehler:
"Unable to enter programming mode. Please verify that the programmer is 
correctly attached to the target and that target power has been switched 
on. Also verify that the correct device and interface settings have been 
specified."

Das ISP Kabel habe ich durchgemessen.

Woran könnte das noch liegen? Stimmen die Jumper so?

Vielen Dank im Voraus!

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


Lesenswert?

Ber ni schrieb:
> Woran könnte das noch liegen?

An deiner Ziel-Schaltung.

> Stimmen die Jumper so?

Die interessieren keinen, die werden nur bei Benutzung der Fassungen
auf dem STK500 benutzt.

Du musst schon irgendwie deine Schaltung debuggen.  Verfolgen der
Impulse mit einem Oszilloskop wäre dafür meine Methode der Wahl.

von H.Joachim S. (crazyhorse)


Lesenswert?

-lässt sich der Mega32 direkt auf dem STK500 programmieren?
-hat er auf deinem Board einen Takt?
-hast du auf deinem Board einen Widerstand von Reset nach Vcc? Falls ja 
und der zu klein ist, gibts Probleme. 3k3 oder grösser funktioniert auf 
jeden Fall.

von Ber n. (bernhard_s43)


Lesenswert?

> -lässt sich der Mega32 direkt auf dem STK500 programmieren?
   Ja

> -hat er auf deinem Board einen Takt?
   Ja, 16MHz Oszillator

> -hast du auf deinem Board einen Widerstand von Reset nach Vcc? Falls ja
> und der zu klein ist, gibts Probleme. 3k3 oder grösser funktioniert auf
> jeden Fall.
  Ja, 1M Ohm

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


Lesenswert?

Ber ni schrieb:

>> -hast du auf deinem Board einen Widerstand von Reset nach Vcc? Falls ja
>> und der zu klein ist, gibts Probleme. 3k3 oder grösser funktioniert auf
>> jeden Fall.
>   Ja, 1M Ohm

Kannst du dir aber auch sparen, der interne Pullup ist kleiner (das
Datenblatt garantiert Werte zwischen 30 und 60 kΩ).

von H.Joachim S. (crazyhorse)


Lesenswert?

Tja, dann kanns nur ein Verdrahtungsfehler sein. Unterbrechung, 
überkreuzt, oder Kurzschluss.
Schliess dein Board mit dem ISP-Kabel an und klingel dann nochmal alle 
betreffenden 6 Leitungen durch. Also von der leeren Fasssung des STK zu 
deinem Prozessor.

von Ber n. (bernhard_s43)


Lesenswert?

Jörg Wunsch schrieb:
> Ber ni schrieb:
>
>>> -hast du auf deinem Board einen Widerstand von Reset nach Vcc? Falls ja
>>> und der zu klein ist, gibts Probleme. 3k3 oder grösser funktioniert auf
>>> jeden Fall.
>>   Ja, 1M Ohm
>
> Kannst du dir aber auch sparen, der interne Pullup ist kleiner (das
> Datenblatt garantiert Werte zwischen 30 und 60 kΩ).

Alles klar, danke!
Das sollte die Funktion aber nicht beeinträchtigen, oder?
Ist aber für das nächste Mal gut zu wissen!

Ist das mit dem 16MHZ oszillator so richtig? Ich habe Fuse 
'EXTRCOSC_XX_0MHZ9_18CK_4MS' gesetz.

Ich habe die externe Schaltung beim Versuch zu Programmieren mit 
Spannung versorgt, passt das?

von Ber n. (bernhard_s43)


Lesenswert?

H.joachim Seifert schrieb:
> Tja, dann kanns nur ein Verdrahtungsfehler sein. Unterbrechung,
> überkreuzt, oder Kurzschluss.
> Schliess dein Board mit dem ISP-Kabel an und klingel dann nochmal alle
> betreffenden 6 Leitungen durch. Also von der leeren Fasssung des STK zu
> deinem Prozessor.

Das passt, ich habs jetz 3mal durchgemessen.

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


Lesenswert?

Ber ni schrieb:
> Ich habe Fuse
> 'EXTRCOSC_XX_0MHZ9_18CK_4MS' gesetz.

Welcher hexadezimale Wert kommt da für die low fuse raus dabei?

von bitrate (Gast)


Lesenswert?

Kann man bei stk500 die Taktrate wie beim avrisp mkII einstellen?
Evtl. will er zu schnell programmieren.

Ich teste in solchen Faellen immer mit avrdude ob eine Verbindung 
herdestellt werden kann UND ob die ausgelesene ID konstant den falschen 
Wert hat. Bei mir ist es immer so, dass sich die ID bei einer zu hohen 
Frequenz mit jedem Ausleseversuch aendert.

Viele gruesse

von spess53 (Gast)


Lesenswert?

Hi

Welchen Anschluss am STK benutzt du?

MfG Spess

von Ber n. (bernhard_s43)


Lesenswert?

Jörg Wunsch schrieb:
> Ber ni schrieb:
>> Ich habe Fuse
>> 'EXTRCOSC_XX_0MHZ9_18CK_4MS' gesetz.
>
> Welcher hexadezimale Wert kommt da für die low fuse raus dabei?

bitrate schrieb im Beitrag:
>Kann man bei stk500 die Taktrate wie beim avrisp mkII einstellen?
>Evtl. will er zu schnell programmieren.

>Ich teste in solchen Faellen immer mit avrdude ob eine Verbindung
>herdestellt werden kann UND ob die ausgelesene ID konstant den falschen
>Wert hat. Bei mir ist es immer so, dass sich die ID bei einer zu hohen
>Frequenz mit jedem Ausleseversuch aendert.

>Viele gruesse

Kannst du das bitte erklären, ich benutze das erste Mal einen externen 
Takt...

von Ber n. (bernhard_s43)


Lesenswert?

spess53 schrieb:
> Hi
>
> Welchen Anschluss am STK benutzt du?
>
> MfG Spess

Ich benutze "ISP6PIN". Müsste eigendlich passen.

von spess53 (Gast)


Lesenswert?

Hi

>Ich benutze "ISP6PIN". Müsste eigendlich passen.

Ja. Ich wollte nur sicher gehen.

MfG Spess

von Ber n. (bernhard_s43)


Lesenswert?

Ok, ich hab mich schlau gelesen.

@Jörg:

für high: 0x99
     low: 0xD5

passt das?

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


Lesenswert?

Ber ni schrieb:
> Ok, ich hab mich schlau gelesen.

Du solltest eigentlich nur den Wert ablesen, den AVR Studio beim
Programmieren der Fuses unten im Statusbereich anzeigt.

> @Jörg:
>
> für high: 0x99
>      low: 0xD5
>
> passt das?

Nö, das wäre ein externer RC-Oszillator.  Das ist vermutlich nicht
das, was du wirklich willst.

Stell die low fuse am besten erstmal zurück auf 0xE1 (das ist der
Auslieferungszustand) und sieh an, ob du dann mit deinem Programmier-
stecker in der Zielschaltung (bei hinreichend langsamem ISP-Takt,
muss < 250 kHz sein) arbeiten kannst.

Wenn das funktioniert, dann programmierst du die high fuse auf 0x89
und die low fuse auf 0xef.  Danach sollte er auch mit einem
16-MHz-Quarz arbeiten.

von bitrate (Gast)


Lesenswert?

Ber ni schrieb:
> Jörg Wunsch schrieb:
>> Ber ni schrieb:
>>> Ich habe Fuse
>>> 'EXTRCOSC_XX_0MHZ9_18CK_4MS' gesetz.
>>
>> Welcher hexadezimale Wert kommt da für die low fuse raus dabei?
>
> bitrate schrieb im Beitrag:
>>Kann man bei stk500 die Taktrate wie beim avrisp mkII einstellen?
>>Evtl. will er zu schnell programmieren.
>
>>Ich teste in solchen Faellen immer mit avrdude ob eine Verbindung
>>herdestellt werden kann UND ob die ausgelesene ID konstant den falschen
>>Wert hat. Bei mir ist es immer so, dass sich die ID bei einer zu hohen
>>Frequenz mit jedem Ausleseversuch aendert.
>
>>Viele gruesse
>
> Kannst du das bitte erklären, ich benutze das erste Mal einen externen
> Takt...

Hi,

das was ich mit avdude mache, scheint auch in avrstudio zu 
funktionieren.

http://www.steinhartw.de/avr-studio-projekt/studio_projekt.htm

Da hab ich auf Anhieb alles das gefunden, was ich jetzt bräuchte um das 
von mir vorgeschlagene zu testen.

Also einfach nur die Signatur auslesen und zwar diverse Male und gucken 
wie sich der Wert verhält. Dann mal mit der ISP-Freq spielen. (in 
Richtung niedrigerer Frequenzen)

Grüße

von Ber n. (bernhard_s43)


Lesenswert?

Ok, Problem hat sich erledigt!
Nachdem ich gemerkt hatte, dass der Mega32 in der Schaltng auch nicht 
funtioniert habe ich die Takt-Leitung überprüft. Die Leiterbahn war an 
einer Stelle durchkratzt.
Jetzt funktioniert auch das ISP!

Vielen Dank für eure tolle Hilfe!!

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.