Forum: Mikrocontroller und Digitale Elektronik Atmega32-Programmierung schlägt mit externem Takt fehl?!


von Martin Lawitzky (Gast)


Lesenswert?

Hallo,

mein Problem sieht folgendermaßen aus:
Ich habe ein paar Atmega32 16PU. Mithilfe eines Programmiergerätes,
dass wie folgt aussieht, kann ich die MCU auch im jungfräulichen
Zustand programmieren:
http://www.oxed.de/index.php?open=6&sub=30&side=avr/overview.html

An XTAL1 habe ich nun einen solchen Taktgeber installiert:
http://www.hosonic.com/pdf/frequency/f25.pdf (16.000MHz)

Wenn ich nun die CKSEL-Fuses vom Default-Zustand 0001 auf 0000 ändere,
um den externen Takt zu verwenden funktioniert die Applikation auf der
MCU entsprechend. Nun kann ich die MCU nicht mehr mithilfe des
Programmieradapters programmieren. PonyProg meint "bad device or
device locked".

Da mit zeitweise aber noch ein T51Prog zur Verfügung stand, habe ich
mich davon überzeugen können, dass die Fuses alle korrekt gesetzt
wurden. Die Applikation funktioniert ja auch. Nur das Programmieren via
ISP funktioniert dann nicht mehr.
Wenn ich mit dem T51Prog die Fuses zurücksetze, geht das Spiel wieder
von vorne los.

Wo kann das Problem denn liegen?
Meine Schaltung ist denkbar einfach:

Programmer an MISO, MOSI, SCK, +5V, GND
AVR VCC,AVCC an +5V, GND und GND an 0V
HOSONIC an XTAL1
10k Pull-up zwischen Reset und +5V
100nF jeweils zwischen VCC und GNC am AVR, zwischen Reset und GND und
zwischen +5V und GND an der Programmer-Buchse, sowie einmal zwischen +
und - des HOSONIC.
ein 22µF Elko zwischen +5V und GND.
überall einigermaßen kurze Leitungen verwendet, also 10-20mm.

An der Reset-Leitung liegt es nicht. Wenn ich die Fest auf Masse
verbinde, erhalte ich den gleichen Effekt.

Es muss also irgendeinen Grund geben, weshalb zwar die Applikation mit
dem 16MHz-Takt funktioniert, aber das ISP nicht.
Ich habe 2 baugleiche Taktgeber getestet, daran liegt es nicht.

Hat irgendjemand eine Idee?

Vielen Dank!

Gruß,

Martin

von Profi (Gast)


Lesenswert?

Hmmmm,
wie lange ist das Programmierkabel?
versuche mal:
 - den R1 (100k) an MISO zu verkleinern
 - den 100nF am Reset auf 10 nF zu verkleiner oder wegzulassen.
 - bei den Leitungen auf der Treiberseite 10..68 Ohm serielle
Dämpfungswiderstände zum Verhindern von Ringing einzufügen

von Martin Lawitzky (Gast)


Lesenswert?

Hallo Profi,

vielen Dank für die Tips.
Also das Kabel zwischen Parallelport und Programmer ist ca. 1m Lang,
der Programmer steckt direkt am MCU-Board, also ca. 3-5cm.

Die 3 Tips werde ich mal ausprobieren. Also einen Kondensator zwischen
Reset und Masse brauche ich, weil sonst funktioniert das Programmieren
nichtmal mehr mit dem internen Takt (Glitch). Aber ich werden den auf
jeden Fall mal verkleinern.

Was würdest du für den MISO-R1 vorschlagen? 10k?

Wo überall soll ich die Dämpfungswiderstände unterbringen?

Würdest du mir den Gefallen tun und mir noch kurz Kommentieren, was die
Vorschläge bewirken sollen? Ich würde gerne verstehen, was ich tue. :)

Vor allem würde mich interessieren, was sich für den Programmiervorgang
ändert, wenn der externe Taktgeber verwendet wird. Das Programmieren
funktioniert ja im Prinzip, der Taktgeber ja auch (Software läuft).
Also wo kann denn das Problem bestehen?
Hat der Taktgeber möglicherweise Rückwirkungen auf meine 5V oder so?

Vielen Dank für die Unterstützung!!

Gruß,

Martin

von Martin Lawitzky (Gast)


Lesenswert?

Achja, zu dem Kondensator am Reset: Der dürfte ja keine Rolle spielen,
da das Programmieren auch fehlschlägt, wenn ich manuell den Resetpin
auf Masse verbinde. (Schalter)

von Profi (Gast)


Lesenswert?

Ehrlich gesagt sind es nur Vermutungen:
Ein 100nF direkt am Ausgang eines ICs ruft einen hohen Strom beim
Umschalten hervor, der alles mögliche bewirken kann.

Ein R zwischen einem Ausgang und einer Leitung begrenzt den Umladestrom
der Leitungskapazität, welcher zusammen mit der Leitungsinduktivität ein
Überschwingen (Ringing) verursacht.
Verwende ich sehr oft, außerdem schützt er den Ausgang im
Kurzschlussfalle.

Kannst Du versuchen, den Adapter direkt am PC einzustecken?

Wenn der µC mit internem Takt läuft, ist er langsamer.

10k ist schonmal gut. Ich weiß nicht, ob der R eine PullUp-Funktion hat
oder nur, um die Leitung auf definierten Pegel zu legen, falls nichts
angeschlossen ist.

von Martin Lawitzky (Gast)


Lesenswert?

Danke! Das war der entscheidende Tip:

Kannst Du versuchen, den Adapter direkt am PC einzustecken?

Ja, und dann geht es auch.
Ich muss sagen, ich bin erstaunt, dass ein 1m langes Kabel zwischen LPT
und Programmer so drastische Auswirkungen hat.
Und wieso funktioniert es, wenn man ohne externen Takt zugreift?
Ist die Datenrate mit externem Takt auch höher?

Vielen vielen Dank!

Gruß,

Martin

von Michael U. (Gast)


Lesenswert?

Hallo,

dafür gibt es mehrere Gründe: Kabelqualität zu schlecht, speziell
irgendwelche dünnen Strippen aus der Kramkiste
Kabel nicht voll beschaltet, nicht jede Druckerverlängerung verlängert
wirklich alle Leitungen 1:1
Rechner mit ungünstigem Verhalten am Parallelport, je neuer, je
kritischer ist meine Erfahrung

Ja, die Datenrate ist offenbar höher, wenn der AVR-Takt höher ist.
Ich habe mit dem STK200-Dongle (das ist Deine Schaltung) auch schon 2m
1:1 dazwischen gehabt ohne Probleme, allerdings ein zeimlich dickes
offenbar gut abgeschirmtes Kabel. Ich kenne aber auch Deinen Effekt.
ISP-Kabel hatte ich bis 1m Flachbandkabel noch keine Probleme, wenn es
wirklich unbedingt länger sein soll, als Parallelport-Verlängerung auch
Flachbandkabel nehmen und Stecker und Buchse anquetschen.

Gruß aus Berlin
Michael

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.