ATMEGA32 Programmer kann den MC nicht identifizieren
Hallo zusammen,
hab mir eine Platine in Eagle zusammen gebastelt und erst fliegend zusammen gelötet - da ging noch alles wunderbar.
Nun hab ich - nach etwas Zeit - die Schaltung geätzt, nur sagt mir Bascom nun immer beim programmen, dass er den ATMEGA 32 nicht identifizieren kann. Hab alle Leitungen durchgemessen, sodass ich Unterbrechungen ausschließen kann.
Die Frage ist nun, ob es an der Schaltung liegt oder evtl. der MC schrott ist. Allerdings hab ich das Gefühl, dass das Programm was ich damals programmiert habe noch auf dem MC läuft (an den PINs kommen die Signale raus nur eben das Programmen geht nicht mehr).
Als Programmer benutz ich übrigens den von Robotikhardware.de und hab im Bascom "STK200/300 Programmer" eingestellt.
Ich poste mal die Schaltung (ist eigentlich ziehmlich trivial aber vll ist ja doch nen Fehler drin).
Sonst muss ich in Erwägung ziehn, dass ich die 3,5€ für nen neuen MC investieren muss
Wenn das Programm noch läuft, stehen die chance gut das der Prozessor noch geht.
Was gibt den Bascom genau als Prozessor ID aus ?
0000 oder FFFF als sind typisch wenn es Probleme gibt.
Wenn so einfache ISP Dougles Probleme machen hilft es manchmal einen kleinen Kondensator (ca. 22-100pF) an die SCLK Leitung zu hängen und ggf. noch 100-330 Ohm Wiederstand. Ist bei den besseren Programierern drin, aber schaden sollte es nicht viel.
Bascom meint das die Chip ID: FFFFFF ist... also eigentlich nen Zeichen dafür das gar nichts geht
Hab das mit dem Kondensator mal ausprobiert hat aber auch nichts gebracht.
Ich glaube eher dass ich nen Fehler in der Pinbelegung des Steckers hab oder dass der MC kaputt ist. Die Pins hab ich nur schon ca. 5 mal geprüft...
Die AVR Chips sind eigentlich recht robust. Ich habe noch keinen kaputt gekriegt, selbst 8 V hat einer überlebt. Eher ein Problem mit dem Programmierer, Kabel (? MSIO und MOSI vertauscht ?), der Versorgungsspannung oder dem Takt. Da hier sogar ein Oszillator drauf ist sollte es der Takt eigentlich nicht sein.
Ist denn die Versorgungsspannung OK ?.
Sonst einfach mal das Layout posten, da sieht man manchmal Fehler besser.
Die Versorgung ist wie gesagt 1A... hab alles durchgemessen.
Ich packe einfach 12V drauf und der 78s05 macht mir die 5V draus...
Die eine ungeroutete Leitung hab ich mittem Draht gemacht, weil ich keine zweiseitige platine haben wollte...
Ich hoffe mal nicht, dass der Programmer kaputt ist immerhin hab ich ihn fertig gekauft und ich bin mir aus ziehmlich sicher, dass er geht (zumindest ging er bis vor einem Montag noch, da hab ich ihn das letzte mal benutzt).
Das Layout ist nicht besonders gut, würde mich nicht wundern wenn es daran liegt:
Die Masseleitung zum Programmierstecker ist fürchterlich lang. Als Anhilfe könnte man die große Fläche zwischen Programmierstecker und AVR mit einer Drahtbrücke auch an Masse legen. Alternativ eine Leitung direkt vom AVR zum Stecker. Die Masseleitungen sollten dicker und möglicht kurz werden (für die nächste Platine). Direkt an die Anschlüsse VCC und GND des Prozessors gehören Kondensatoren (ca. 100nF Keramik). Dabei keine Angst vor SMD Kondensatoren, die passen wunderbar direkt an die PADs vom IC.
An den Oszillator gehört auch noch ein Abblockkondensator, sonst wird der Takt leicht instabil.
Aref sollte man übrigens nicht direkt an VCC legen, sondern eher einen Kondensator nach Masse vorsehen. Wenn man VCC als Referenz will, macht man das per Software. Sollte aber nicht das Problem hier sein.
Der Spannungsregler mag auch ganz gerne noch einen einfachen Elko( ca. 1-10uF) am Ausgang, denn die Elkos sorgen durch den hohen ESR für etwas Dämpfung bei hohen Frequenzen.
Mit etwas Glück könnte die Drahtbrücke bei GND und die Abblockkondensatoren die Schaltung zum laufen bringen.
Das ich ich als letztes vermutet, dass ne zu lange Leitung aus Kupfer?!?! Probleme auslösen kann... aber das klingt logisch, weil bei meiner fliegenden Verdrahtung waren die Leitungen extrem kürzer.
Bin gerade noch auffer Arbeit aber werde das direkt gleich, wenn ich zu hause bin ausprobieren und berichten...
Es liegt nicht so sehr an der Länge, sondern daran das die Fläche zwischen der Masse und den Signalen recht groß ist. Das wirkt dann wie eine Spule mit halt nur einer Windung, kann aber reichen, das die Signal zwischen den Leitungen übersprechen oder Überschwinger haben. Immerhin wird man da Frequenzen bis zu einigen MHz finden, das ist immerhin bis in den Kurzwellenbereich.
Gleicher Fehler obwohl ich die großen Flächen alle auf Masse gelegt hab...
Was muss ich denn alles beachten beim Platinendesign? Das Hauptproblem war für mich die Leitungen so zulegen, dass ich die mit dem Tonertransferverfahren noch sauber hinbekomme (dürfen nicht zu nah an einander sein) und ich trotzdem alle auf einer Seite habe...
Hier ein paar Grundregeln für das Layout. Ich habe bestimmt noch einige Vergessen.
1) an jedes Digitale (und fast jedes analoge) IC gehört mindesten ein Kondensator, möglichst dicht an die VCC/GND Pins. Am besten SMD Keramik
2) Die Masseleitungen sollten kurz und wenn möglich etwas dicker sein (weniger Inductivität), ca. 1-2 mm wenn möglich
3) Masse und Signal Leitungen sollten möglichst zusammen verlaufen, keine große Fläche zwichen Signalen und der dazugehörigen Masse.
4) Befestigungsbohrungen nicht Vergessen (passiert mir immer wieder mal)
5) bei digitalen Signalen mit langen Leitungen eventuell Widerstände von ca. 100 Ohm an den Enden vorsehen (Leitungsabschluss)
6) Analoge und digitale Teile getrennt halten, die Masse nur an einem Punkt kontrolliert verbunden.
7) Hochfrequente Schaltungen klein halten
kurze Zuleitungen zu Quarzen und den Kondensatoren dazu
9) Rechtwinklige (oder gar spitzere) Knicks in Leiterbahnen Vermeiden
Lesezeichen