ATMega32 vs. ATMega32A - einer funktioniert, der andere nicht [geschlossen]

Ich habe ein Setup mit einem ATMega32, das perfekt läuft. Beim Austausch des ATMega32 gegen einen ATMega32A passiert nichts mehr, nicht einmal der Quarzoszillator schwingt. Laut Changenote von Atmel hat der Reset-Pullup-Widerstand einen guten Wert und die Pull-Kondensatoren neben dem Quarz sind auch vorhanden. Ich habe es mit vielen verschiedenen Teilen (alle aus einer Lieferung) des ATMega32A versucht, immer das gleiche Verhalten. Beim Wechsel zurück zum ATMega32 ist alles wieder in Ordnung.

Schließlich baue ich eine Schaltung nur mit dem AVR auf, setze Pull-up, Quarz und Pull-Kondensatoren zurück. ATMega32 funktioniert (Kristallschaukeln), ATMega32A funktioniert nicht (Kristallschaukeln nicht).

Fällt Ihnen etwas ein, außer dass alle ATMega32A, die ich im Labor habe, kaputt sind?

Ich habe etwas Ähnliches erlebt, als ich versuchte, einen 164A anstelle eines 164P einzubauen: electronic.stackexchange.com/questions/15760/… Ich habe nie herausgefunden, was das Problem war
Hast du die Sicherungsbits zwischen den beiden überprüft?
@m.Alin Sicher, ich denke, ich sollte weitere Teile dieses Typs aus einer anderen Quelle zur doppelten Überprüfung besorgen.

Antworten (4)

Sie haben nirgendwo Sicherungsbits erwähnt - möglicherweise müssen Sie die ATmega32A-Sicherungsbits auf die richtigen Werte einstellen. Das ist normalerweise das Problem, wenn der Oszillator nicht funktioniert. Die zwei Vorrichtungen können Sicherungsbits haben, die für unterschiedliche Oszillatoren und/oder Startzeiten gesetzt sind.

Ich habe mir das Datenblatt zwischen den beiden angesehen - das Datenblatt behauptet, dass beide die gleichen Standard-Taktbits eingestellt haben. Aber wenn Sie zu engbedded.com/fusecalc gehen und nachsehen, 32A hat Sicherungsbits niedrig 0xF1, 32 hat Sicherungsbits niedrig 0xE1. Vielleicht habe ich das Datenblatt falsch gelesen...
Du hast recht, die Sicherungen habe ich ganz vergessen. Ich habe das Datenblatt erneut gelesen und versucht, die Sicherungen mit avrdude auszulesen, aber ich konnte sie nicht einmal lesen. Ist das das korrekte Verhalten des Chips, wenn die Uhr nicht läuft? Vielleicht muss ich eine externe Taktquelle anschließen und versuchen, die Sicherungen auf diese Weise zu lesen (und zu schreiben).
iirc mit den falschen Oszillatoreinstellungen müssen Sie avrdude anweisen, extrem langsam zu kommunizieren
@ChrisStratton Ich habe ein 1MHz-Signal auf den Oszillatoreingang des Chips gelegt und versucht, die Fuses auszulesen - ohne Erfolg. Ich denke, ich sollte zuerst einige weitere Teile dieses Typs aus einer anderen Quelle zur doppelten Überprüfung besorgen - wie oben erwähnt.
Sie könnten Fälschungen haben; Wenn Sie jedoch ein echtes Gerät haben, dessen Sicherungsbits irgendwie so eingestellt sind, dass es vom internen 32-kHz-Oszillator abläuft, müssen Sie avrdude so einstellen, dass es noch langsamer spricht - siehe zum Beispiel evilmadscientist.com/2007/…

Auch wenn die Spezifikationen gleich sind, kann es aufgrund unterschiedlicher Herstellungsprozesse zu unterschiedlichen Verhaltensweisen kommen, wenn die Teile leicht außerhalb der Spezifikationen laufen. Wenn beispielsweise Ihre Ladekondensatoren auf dem Kristall nicht ganz im richtigen Bereich waren, hat der ATmega32 möglicherweise trotzdem funktioniert, während der ATmega32A wählerischer sein könnte. Gleiches gilt für Spannung, Versorgungsstrom, Versorgungsrauschen, Zeitbeschränkungen des Programmierers usw.

Hallo für mich ATMEGA32A PUdas hilft:

avrdude -c usbasp -p m32 -B 3

Um eine Hex-Datei in den Mikrocontroller zu schreiben, verwende ich:

avrdude -c usbasp -p m32 -B 3 -U flash:w:Program.hex

Schließlich fand ich heraus, was falsch lief, und es war völlig meine eigene Schuld, und es war Chris Stratton, der den wichtigen Hinweis gab.

Ältere AVR-Geräte wurden mit Sicherungen konfiguriert, um mit einem externen Quarz zu arbeiten. Neuere sind so konfiguriert, dass sie mit dem internen Oszillator arbeiten. Dieser ist in der Tat viel langsamer und mein avrdude sprach einfach zu schnell ... das war auch der Grund, warum ich die Fuses nicht lesen oder schreiben konnte. Nachdem ich den Schalter -B von avrdude gefunden habe, ist alles wieder in Ordnung.

Nochmals vielen Dank an alle, die hier geantwortet und kommentiert haben.

Wie wäre es, wenn Sie die vollständige avrdude-Befehlszeile posten, die Sie verwendet haben, und dann Ihre eigene Antwort akzeptieren.