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.
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
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
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ß.
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
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?
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
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
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.