Forum: Mikrocontroller und Digitale Elektronik AVR-ISP Programmer Problem


von Flo (Gast)


Lesenswert?

Hallo,
ich habe mir folgenden ISP-Programmer nachgebaut:
http://rumil.de/hardware/avrisp.html

Am Anfang war es erstmal schwierigen eine Programier-Software zu finden
mit dem ich den ATmega48 beschreiben kann. Bin dann auf TwinAvr
gestoßen... damit lief es so halb. Also ich mein das Programm stürtze
öfters mal ab, eigentlich ziemlich oft.

Dann hat das ganze ca. eine Woche gelegen und nun wollte ich weiter
machen und nun geht es gar nicht mehr... Wenn ich in TwinAvr irgendwas
machen will (Löschen, Beschreiben, Auslesen) sagt er immer: Programming
Enable sequence not Successfull. LPT and Programmer type Correct? If yes
try to switch power off and on... oder so ähnlich.
Jedenfalls hat sich während dieser Woche nichts an der Schaltung
geändert... das alte Programm ist noch im Controller drin, und es läuft
auch noch. Beschaltung ist auch noch richtig und wenn ich Probier ein
Lese, Schreib oder Löschvorgang zu starten bekomme ich auch immer kurz
einen negativen impuls an allen leitungen die für ISP benötigt werden.

Jedenfalls denke ich das es an dem Programm TwinAvr liegt (weil es beim
ersten mal benutzten schon so oft abgestürtzt ist und so)..

Gibt es noch eine Software mit der man über den oben genannten ISP
Programmer den ATmega48 beschreiben kann? Ponyprog und yaap
unterstützen den ATmega48 nicht.

Bin für jedehilfe dankbar. Und ja ich hab vorher das Forum durchsucht
aber nichts hilfreiches gefunden.

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

avrdude sollte mit dem Chip umgehen können. Evtl. mußt du aber eine
Definition für den Mega48 der avrdude.conf hinzufügen.

Matthias

von Flo (Gast)


Lesenswert?

Hi,
also AVRDude macht schonmal einen guten Eindruck im Gegensatz zu
TwinAVR.
Ich benutze AVRDude zusammen mit der AVRDude-GUI die bei WinAVR mit
dabei ist, dort is in der avrdude.conf schon eine Definition für den
ATmega48 vorhanden.

Einen neuen ATmega48 kann ich problemlos beschreiben. Aber wenn ich den
Controller auslesen will den ich vor einer Woche benutzt habe gibt es
wieder Probleme. Ich denke es liegt daran das ich dort schon die clock
source fuses auf external clock gestellt habe(damals noch mit TwinAVR)
und das ganze dann mit 20MHz läuft.

Der neue ATmega48 läuft ja defaultmäßig mit dem internen RC Oszillator
und Vorteiler auf 1MHz Taktfrequent.

Kann ich bei AVRDude die Taktfrequenz einstellen oder findet AVRDude
das selbständig herraus? Weil ich denke das es daran liegt das ich den
"alten" Controller von vor einer Woche nicht per AVRDude programieren
kann.

Und der ISP-Programmer von http://rumil.de/hardware/avrisp.html
hinterläst auch keinen guten Eindruck bei mir.
Gibt es da etwas besseres? Ich habe damals mit PIC Controllern
angefangen als ich mich mit uCs beschäfitgt habe... Dort gibt es den
Brenner5 von Sprut
http://www.sprut.de/electronic/pic/projekte/brenner5/index.htm damit
lief immer alles einwandfrei und problemlos.

Gibt es sowas wie den Brenner5 von Sprut auch für AVRs? Oder eben etwas
wirklich zuverlässiges zum selbstbauen?

ciao
Flo

von Sebastian Eckert (Gast)


Lesenswert?

Es gibt schon ein paar anspruchsvollere AVR-Programmer. Die sind dann
meistens seriell und basieren bereits auf einen programmierten AVR.
Allerdings halte ich persönlich den beschriebenen Parallel-Programmer
(auch bekannt als STK200-Programmer) in Verbindung mit avrdude für
zuverlässig.
Die Sache mit den Oszillatoreinstellungen ist jedoch entscheidend, denn
im Gegensatz zum PIC benötigt ein AVR zum Programmieren grundsätzlich
einen laufenden Oszillator, egal ob intern oder extern. Wenn also der
Oszillator auf extern umgeschaltet wurde, aber kein Quarz angeschlossen
ist, wird sich der ATmega wohl eher unkooperativ zeigen.
Übrigens gehen die meisten Atmel-Programmieradapter vom Konzept her
davon aus, daß die angeschlossene Schaltung die Versorgungsspannung
liefert. In den meisten Fällen, auch beim STK200-Adapter, müssen also
die 5V während der Programmierung zugeführt werden.
Viele PIC-Programmer hingegen liefern Versorgungsspannung und brauchen
demzufolge bei der Programmierung keinen externen 5V-Anschluß.

von Flo (Gast)


Lesenswert?

Also 20MHz externen Takt bekam der Controller stets geliefert als ich
versuchte ihn zu Programieren, aber vielleicht muss ich ja auch AVRDude
auf 20MHz einstellen? Bei TwinAVR musste man auch den Arbeitstakt des
Controllers angeben!

Vielleicht ist ja auch meine Beschaltung an den Programierpins falsch.


Habe an jedem Pin der fürs Programieren zuständig ist (reset, sck,
miso, mosi) einen 10kOhm Pullup-Widerstand.
VCC an Pin 7 und Pin 20.
GND an Pin 8 und Pin 22.
Den externen Takt liefert ein 20MHz Quarzoszillator welcher mit Pin 9
des Controllers verbunden ist.

Mal weiter probieren. Das Sebastian sagt das der Programmer eigentlich
zuverlässig sein sollte gibt mir jedenfalls Mut. :)

Gruß
Flo

von Sebastian Eckert (Gast)


Lesenswert?

Beim Reset ist der Pull-Up sinnvoll. Bei den anderen Pins habe ich
bisher ohne Probleme darauf verzichten können. Es hängt natürlich davon
ab, ob in den SCK und MOSI Leitungen Dioden sind (auf dem STK200 Board
wurde das so gemacht, und dann AVR-seitig 1k Widerstände vorgesehen).
Das mit den Dioden ist aber nur eine in den allermeisten Fällen
entbehrliche Schutzbeschaltung, zumindest wenn die Betriebsspannung 5V
beträgt.
Ich wußte gar nicht, daß man bei avrdude den Takt einstellen kann (oder
muß?), habe aber bisher immer nur mit 4 MHz gearbeitet, so daß ich keine
Erfahrungen mit eventuellen Problemen bei höherem Takt habe.
Der einzige Fehler, nach dem ich im Zusammenhang mit der AVR
Programmierung lange gesucht habe, war eine kalte Lötstelle an einem
XTAL-Anschluß. Wie gesagt, ohne Takt geht`s eben nicht. :) Wird
eigentlich wenigstens die Signatur korrekt gelesen?

von Flo (Gast)


Lesenswert?

Ich glaube man muss bei AVRDude den Takt nicht einstellen bzw. man kann
es auch gar nicht. Hatte das nur als Fehlerquelle in Betracht gezogen,
weil ich das Programm nicht kannte und man bei TwinAVR ihn ja
einstellen muss. TwinAVR war auch das Einzige was ich bis dahin
kannte.

Ich habe jetzt mal ein extra Sockel zu dem ISP-Programmer hinzugefügt
wo der Controller Extra mit 20MHz und 5V versorgt wird. Also ich
entnehme ihn Praktisch der Zielschaltung und Stecke ihn in den
"Brenner-Sockel" weil ich meinem ISP-Kabel nich so ganz vertraut
habe. Hierbei habe ich jetzt auch nur noch einen Pullup am Reset-Pin.

Und Ergebnis bis jetzt:
Alter Controller geht immer noch nicht. Kann auch keine Signatur lesen,
er sagt immer Device not connected. PIN 18 (MISO) ist von Anfang an high
und wird wenn ich die Programierung auslöse nicht richtig auf low
gezogen. MOSI und SCK und RESET werden immer "sauber" auf ein
Potential gezogen.

Der neue Controller funktioniert einwandfrei. Kann ich per AVRDude
alles machen außer die Fuses bearbeiten. Ich stelle bei AVRDude die
jeweilige Fuse auf write und geb in dem Feld den Wert an den das Byte
dann haben soll aber es wird nichts übernommen. In der Console sagt er
dann das der Safemode aktiviert ist und man was mit -u machen soll.
Aber das geht im Moment noch etwas über mein Horizont hinaus. Benutzte
wie gesagt die AVRDude-GUI die bei WinAvr dabei ist. Habe die Fuses
dann per TwinAVR eingestellt und das Programm per AVRDude
draufgeschrieben. Hat bis jetzt prima funktioniert auch ohne Pullups an
den restlichen Pins sondern nur an Reset.

Ich denke der alte Controller ist wohl im Ar***. Oder weis jemand wie
ich das Signal an Pin 18 (MISO) richtig auf low bekomme?

Gruß
Flo

von Flo (Gast)


Lesenswert?

So nun ist bei dem zweiten Controller genau das gleiche Problem wie bei
dem ersten.

Ich glaub der Programmer ( http://rumil.de/hardware/avrisp.html ) macht
bei mir die Controller kaputt.


Naja ich versuche meine laufenden Projekte erstmal wieder mit PICs zu
realisieren, vielleicht später irgendwann einmal wieder mit AVR
versuchen anzufreunden.

Trotzdem danke für die Hilfe bis jetzt.

Gruß
Flo

von Rick Dangerus (Gast)


Lesenswert?

Hi Flo!

Ich hab das Ding auch nachgebaut. Allerdings mit einem 74HCT244.
Vielleicht ist das das Problem?
Zwei Pull-Ups (100k) an die Enable-Eingänge (Pin 1 und Pin 19), dann
läuft der Controller auch wenn der PC ab ist. (Sonst wird evtl.
permanent ein Reset ausgelöst.)

Bei mir funktioniert es ganz gut. Bin jetzt aber umgeschwenkt auf einen
Bootloader der einen seriellen Programmer emuliert. Geht natürlich nur,
wenn Du die serielle Schnittstelle am Controller nutzt.

Rick

von Flo (Gast)


Lesenswert?

Hi Rick,

ein 74HCT244 hab ich auch verwendet.

Meinst du Pull-Ups am Controller oder an dem 74HCT244?

An dem 74HCT244 hab ich keine Pull-Ups vielleicht liegts ja daran?

Gruß
Flo

von Rick Dangerus (Gast)


Lesenswert?

Hi Flo!

Ich hab die Pull-Ups am 74HCT244. Aber die hab ich nur drin, damit das
Ding nicht rumspinnt, wenn der PC aus ist oder gar kein PC dran hängt.

Vielleicht nochmal alle Verbindungen auf Durchgang bzw. Kurzschluß
prüfen? Vielleicht mal den Rest der Schaltung der evtl. mit an den
SPI-Pins hängt abklemmen?

Oder die ganz billig Programmervariante mit den drei Widerständen
realisieren.

Rick

von Flo (Gast)


Lesenswert?

Mein Kabel vom Parallel-Port bis zum ISP-Programmer is etwas unter einem
Meter lang. Könnte daran der Fehler liegen?

Bei den Controllern die jetzt nicht mehr gehen ist PIN 18 (MISO) von
Anfang an high, ohne zusätzliche Beschaltung, und wird wenn ich die
Programierung auslöse nicht richtig auf low gezogen. Was ich da auf dem
Oszi sehe sieht sehr nach "Murks" aus. MOSI und SCK und RESET werden
immer "sauber" auf ein Potential gezogen. Aber MISO kommt doch
eigentlich vom Controller also kann das nicht doch nichts mit der
langen Leitung zu tun haben?

Gruß
Flo

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.