Forum: Mikrocontroller und Digitale Elektronik Programmierungsproblem Selbstbauboard


von Terfagter (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Terfagter (Gast)


Angehängte Dateien:

Lesenswert?

Und hier die Eagle Datei als Bild.

von Terfagter (Gast)


Lesenswert?

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.

von spess53 (Gast)


Lesenswert?

Hi

Warum sind zwischen VCC-GND und AVCC-AGND keine Abblock-Cs (100nF)?
Sollte sich langsam herumgesprochen haben.

MfG Spess

von Terfagter (Gast)


Lesenswert?

Ok ich versuche es mal. Auf den diversen AVR Tutorials steht davon aber 
nix.
Werds dann direkt berichten.

von Terfagter (Gast)


Lesenswert?

Hier nach bin ich gegangen und da hat es doch auch ohne 
Abblockkondensatoren funktioniert.
http://www.rn-wissen.de/images/f/f8/Avrtutorial_grundschaltung_mitled.gif

von spess53 (Gast)


Lesenswert?

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

von Terfagter (Gast)


Lesenswert?

Ich habe 2 100nF Keramikkondensatoren an die Stellen eingelötet. Das 
Reset Problem bleibt aber weiter bestehen...

von Andy H. (vinculum) Benutzerseite


Lesenswert?

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

von Michael U. (amiga)


Lesenswert?

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

von Terfagter (Gast)


Lesenswert?

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.

von Terfagter (Gast)


Lesenswert?

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?!

von Terfagter (Gast)


Lesenswert?

Sry hatte mich nur auf die Schnelle vermessen. Auf der Resetpin am 
Zielcontroller geht kurzzeitig auf low!

von Terfagter (Gast)


Lesenswert?

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.

von Gast (Gast)


Lesenswert?

Bist Du dir sicher, dass die Kommunikation zwischen USBasp und PC 
korrekt funktioniert? Schwingt der Quarz des USBasp richtig?

von Terfagter (Gast)


Lesenswert?

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!

von spess53 (Gast)


Lesenswert?

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

von Terfagter (Gast)


Lesenswert?

Also 10k sind es auf jeden Fall. Werd mal einen 47k oder 100k 
ausprobieren.

von spess53 (Gast)


Lesenswert?

Hi

>Werd mal einen 47k oder 100k ausprobieren.

Der interne PullUp hat 30...60k. Was soll das dann noch?

MfG Spess

von Terfagter (Gast)


Lesenswert?

Also einen kleineren als 30k?!

von Hannes Lux (Gast)


Lesenswert?

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...

...

von Ollz (Gast)


Lesenswert?

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.

von Hannes Lux (Gast)


Lesenswert?

> 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?

...

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.