Hallo,
ich probiere jetzt seit ca. 3 Wochen ein Atmega16 bzw. 32 Board zu
bauen, um mich der Welt der yC näher zu bringen. Früher hatte ich einen
ISP Programmieradapter für Lpt, da ich diese Schnittstelle an meinem
Laptop aber nicht mehr habe, hab ich mir den USBasp von ullrichradig
zusammen gebaut. Dann fingen die Probleme auch schon an. Mal wollte das
USBasp programmieren, mal nur halb, mal wurden die Fuses gesetzt, mal
wurden andere Fuses gesetzt, die ich eigentlich gesetzt habe. Plötzlich
ging gar nichts mehr und ich musste mit einem Quarzoziloskop meinen yC
wieder wecken.
Ein weiterer Fehler ist, das ich meinen Zielcontroller immer manuell
reseten muss. Obwohl ich einen 10k Widerstand vor dem Reset habe!
Ich hab mich dann wochenlang durch Foren gelesen und nirgends eine
Lösung gefunden und mir dann schlussendlich einen fertigen USBasp von
Softland gekauft. (Natürlich wurde eine Leitung auf der Platine
vergessen, die ich dann nach langem Suchen zuaätzlich angelötet habe,
aber egal.)
Die ganzen Fehler von vorher sind aber geblieben!
Alle Fehler:
-Programmierung nur wenn er mag, und selbst dann wenn ein Versuch von 20
mal klappt, bin ich mir nicht sicher, ob es wirklich richtig beim
Zielcontroller angekommen ist.
-Programmiert wenn nur, wenn ich manuell Reset auf Masse lege.
- Setzt Fuses die ich gar nicht setzen will.
Häufigster Fehler bei AVRdude:
error: programm enable: target doesn't answer.1
initialization failed, rc=-1
Double check connections and try again, or use-F to override this check.
Manchmal fängt er an zu programmieren, bricht aber dann nach dem lesen
ab und gibt zurück das der Controller nicht stimmen würde.
Ich programmiere mit Winavr oder in Linux mit gedit und gcc.
Am Programmieradapter kann es ja jetzt nicht mehr liegen.
Ich habe ein Testboard auf einer Lochrasterplatine aufgebaut und eins in
eagle gelayoutet und danach geätzt. Beides mal das selbe Problem.
Ich habe mal die eagle Datei angehangen, nach der ich beides gebaut
habe.
Ich hoffe mir kann endlich jemand helfen und ich kann mich auf die
Programmierung konzentrieren und nicht wieder auf die Hardware.
Ich habe selbst die Spannungsversorgungsquellen und die Controller
gewechselt.
Und ich habe auch die Leitungen vom USBasp bis zum Zielcontroller
durchgepiepst..
PCs hab ich auch schon getauscht.
Hi
>Auf den diversen AVR Tutorials steht davon aber nix.>Hier nach bin ich gegangen und da hat es doch auch ohne>Abblockkondensatoren funktioniert.
Ist irrelevant. Die einzige gültige Informationquelle sind die
Datenblätter und AppNotes von Atmel. Und da steht das drin.
MfG Spess
Die Schaltung ist ok, wenn sie auch wirklich so aufgebaut ist. Keine
Schlüsse? Vielleicht schwingt der Quarz nicht richtig an? Den brauchst
du eigentlich amm Anfang nicht, denn der interne Oszillator reicht ja
und schließt eine Fehlerquelle aus. Sind die Massen auch wirklich
verbunden? Wie sieht VCC aus? Du hast Störungen auf den SPI-Leitungen
oder eine kalte Lötstelle...? Fragen über Fragen
Hallo,
Betriebsspannung des AVR ist wirklich ok? Wo kommt die her?
Ein neuer AVR läuft mit 1MHz internem Takt, ISP-Takt muß also merklich!
unter 250kHz liegen. Zu langsam ist unnötig, 100-150kHz muß immer gehen.
Was heißt "manuell Reset auf Masse lege"?
Beim Start des Programmierens wird zuerst Reset vom Programmer aus auf L
gelegt, das Signal ist selbst mit einem Multimeter zumindest erkennbar.
Wenn der nicht mit der Spannung runter geht, stimmt mit dem Programmer
was nicht.
Kann man auch gut ohne AVR am Programmer messen, muß sich genaus
verhalten wie mit AVR.
Fuses und Device-ID müssen sich immer! ohne Fehler und gültig lesen
lassen, sonst braucht man da garnicht weiter zu probieren, man riskiert
nur, daß der AVR ungewollt verfust wird.
Ich benutze selbst nur Dragon, selten STK500, früher STK200 mit
Ponyprog.
Ich habe mir den Programmer von
http://www.ullihome.de/index.php/Hauptseite
mal auf Lochraster zusammengelötet, auch der benimmt sich (fast)
ordentlich bei mir mit der AVRISPmkII-Firmware aus AVR-Studio.
Er ist schnell, merklich schneller als der Dragon bei angeblich gleichem
ISP-Takt. Dafür programmiert er sehr selten mal bei mir gro0e Files
(16kB) fehlerhaft. Da habe ich die Ursache noch nicht gefunden...
Gruß aus Berlin
Michael
Die Spannung liegt überall da an, wo sie laut Datenblatt anliegen soll.
Manuell Reset auf Masse legen heißt, per Schalter Pin Reset auf Masse
ziehen, vor dem 10k Widerstand.
An Pin 5 am Programmer kann ich sehen, dass auf Low gezogen wird, wenn
ich anfangen will zu programmieren.
Die Betriebsspannung wird von einem 7805 geregelt.
Jumper 2 ist gesetzt, alle anderen nicht.
Kalte Lötstellen habe ich nicht, hab alles durchgemessen und nach
gelötet.
Löten ist bei mir auch kein Problem.
Wenn ich am Programmer den Reset Ausgang messe, geht er beim
Programmierversuch auf Low (Ohne Zielcontroller). Messe ich aber am
Zielcontroller, geht Reset nicht auf Low?!
Hab gerade die SPannungsquellen nochmal gewechselt. Keine Veränderung!
MIttlerweile lassen sich die yC nur noch mit einem Quarzoszillator
auslesen.
Wenn ich die Einstellungen auf externe clock lasse, schreibe er die
Fuses erfolgreich. Änder ich auf "External crystal" folgt ein Fehler
beim schreiben.
Und weiterhin nur wenn ich Reset manuell auf Masse lege. Sonst tut sich
überhaupt nix.
Ja bin mir sicher. Sonst würde die LED gar nicht erst leuchten.
Hab wirklich durch Zufall eben rausgekriegt, dass alles wunderbar
funktioniert, wenn ich den 10k Widerstand komplett raus nehme?!?
Kann mir das jemand erklären? Auf allen Board funktioniert es jetzt!
Hi
>Hab wirklich durch Zufall eben rausgekriegt, dass alles wunderbar>funktioniert, wenn ich den 10k Widerstand komplett raus nehme?!?>Kann mir das jemand erklären? Auf allen Board funktioniert es jetzt!
1. Dann mal den Widerstand ausmessen. Sind vielleicht nur vermutete 10k.
2. Wenn der stimmt, dann mal in der Beschreibung vom Programmer
nachsehen. Vielleicht ist der in dieser Beziehung etwas schwach auf der
Brust.
MfG Spess
Also ich hatte bisher immer 3,3k genommen und nie Probleme damit gehabt.
Seitdem ich den Dragon habe, nehme ich 10k (bzw. 11k5, da ich davon eine
SMD-Rolle habe), damit Debug-Wire nicht gestört wird.
Wenn Du mit 10k Probleme hast, dann liegt der Fehler nicht an den 10k,
sondern irgendwoanders. Du suchst den Fehler also am falschen Ende...
...
Nur so nebenbei: AREF nicht auf AVCC legen. Damit nimmt man sich ADC
Konfigurationsmöglichkeiten. Statt dessen einen 100 nF Kondensator von
AREF nach GND.
Für den grundsätzlichen HW-Aufbau Atmel Application Note AVR042 lesen.
Oh, und was ist ein
> ich musste mit einem Quarzoziloskop
? Sowas ein Ding ich in <murmel><murmel> Jahrzehnten Berufserfahrung
noch nicht gesehen.
> AREF nicht auf AVCC legen. Damit nimmt man sich ADC> Konfigurationsmöglichkeiten. Statt dessen einen 100 nF Kondensator von> AREF nach GND.
Stimmt, aber das ist noch ein alter Zopf aus AT90Sxxxx-Schaltungen. In
meinen ersten Mega8-Projekten habe ich aus AT90S4433-Gewohnheit AREF
auch noch auf AVCC gelegt. Inzwischen kommt da nur noch ein
Chipkondensator 100n dran.
Ähnlich penetrant hält sich die Reset-Beschaltung der alten
Classsic-AVRs, obwohl die neueren AVRs die dank BOD nicht mehr brauchen.
Bei modernem Equipment (wie Dragon) ist sie sogar hinderlich.
> ich musste mit einem Quarzoziloskop
Ja, da musste ich auch schmunzeln... - Aber haben wir nicht alle mal
angefangen und diese oder jene Begriffe verwechselt?
...