Liste der Anhänge anzeigen (Anzahl: 1)
(Mir) unerklärliches AVR-Sterben
Moin!
Ich habe eine simple Schaltung auf Basis eines mega168 aufgebaut. Das anhängende Schaltbild (ganz unten) zeigt das Wesentliche, nicht mit dargestellt sind nur ein FT232RL (an den Signalen TXD_FT232 und RXD_FT232) und ein synchron serieller DAC (an den Signalen DOUT und PD_SCK). Die Teile funktionieren (s.u.), ich habe sie hier einfach aus Platzgründen weggelassen. Das LCD verfügt über einen KS108 kompatiblen Controller. Sorry übrigens für das etwas pfuschige Schaltbild, hab's auf die Schnelle zusammengehauen ...
Die Schaltung ist in SMD auf einer ordentlichen Platine aufgebaut.
Ich habe nun zum zweiten Mal folgendes Problem:
nach dem Aufbau funktioniert zunächst alles einwandfrei (LCD, UART, DAC), sodass ich mit der eigentlichen Firmwareentwicklung beginnen kann. Nach etwa dem 20. Flashen (sehr grob geschätzt) häufen sich Fehler beim Verifizieren nach dem Flashen, und die Firmware läuft auch folgerichtig nicht wie sie soll. Nach einigen weiteren Flash-Vorgängen treten dann jedesmal Fehler beim Verifizieren auf, ich kann den Controller also effektiv nicht mehr flashen. Ein paar Mal kann ich dann immerhin noch die Device Kennung auslesen, bis das dann auch nicht mehr geht. Ich flashe idR aus BASCOM, habe testweise auch mit AVRDUDE geflasht und dabei zwei verscheidene ISP Dongles getestet (USBASP und USBtinyISP) - mit dem gleichen Ergebnis.
in AVRDUDE
Code:
avrdude: error: program enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
in BASCOM
Code:
Could not detect chip, Auto program failed
Chip ID: FFFFFF
Mit den Dongles kann ich andere AVRs problemslos flashen (Positivkontrolle). Wenn ich mir ansehe, was auf dem ISP nach dem Defekt los ist, fällt auf, dass RESET, SCK und MOSI tun was sie sollen (auf den ersten Blick, habe mir den Bitstrom nicht genauer angesehen) aber MISO permanent auf low bleibt. Ich habe mal den Eingangswiderstand von allen ISP Pins am Controller nach Masse gemessen, die sind alle um die 10k, MISO hat also zumindest keinen Schluss nach Masse. Außerdem habe ich die Pins vom ISP, die das LCD parallel nutzt, vom LCD getrennt, das hat dann auch nichts mehr geändert (zu dem Problem siehe unten).
Was mich stutzig macht ist, dass ich das exakt gleiche "Todes-Szenario" jetzt zum zweiten Mal habe. D. h. ich habe den ersten Controller wieder von der Platine runtergefönt und einen neuen draufgesetzt und von vorne angefangen - wie gesagt, mit dem gleichen Ausgang, erst geht alles, dann ist das Flashen nur noch sporadisch erfolgreich, bis der Controller dann schließlich augenscheinlich tot ist.
Wie man sieht, nutze ich die ISP Pins auch für's LCD. Ich weiß, dass Application Note AVR910 für diesen Fall empfiehlt, Peripherie am ISP durch Widerstände zu "entkoppeln". Das habe ich mir hier in der Tat gespart, weil ich noch nie Probleme dieser Art hatte. Okay, das mag ein Fehler sein, aber: Selbst wenn diese Doppelnutzung zu Schreibfehlern beim Flashen führen sollte, kann ein Controller dadurch hardwaremäßig Schaden nehmen? Kann ich ihn also "kaputtflashen"? Können dabei die Fusebits vielleicht total verdreht werden?
Sorry für die vielen Worte, hat jemand vielleicht eine Idee, wo das Problem liegen könnte? Im Moment steht nur auf meiner Liste, beim nächsten Mal Widerstände zwischen LCD und ISP-Pins einzubauen. Bin ansonsten mit meinem Latain gerade etwas am Ende ...
Ganz vielen Dank!
Malte
Anhang 29120
Liste der Anhänge anzeigen (Anzahl: 2)
Wie schaut die Betriebsspannung aus? Mach mal ein Scope mit einem Oszi....
Die Reset Schaltung gefällt mir nicht ... Schau dir dazu das Hardware Design Appnote von Atmel an ... [1] Seite 6. Ich hab es so ausgeführt.
Reset Schaltung:
Anhang 29124
Ist die Peripherie sicher auch auf TTL Pegel?
Ziehen irgendwelche Bauteile mehr als die Pins hergeben können? (max. 20 mA).
Ist die gesamt abgegebene Leitung des Atmega in grünen Bereich?
Ist das Display ein TTL Typ oder etwa eine 3.3V Variante? dann könnte zu viel Strom fliessen ...
Pin 4 und Pin 6 brauchen jeweils eigene 100nF Stützkondensatoren.
Avcc braucht auch einen eigenen Stützkondensator.
Erzeugung +5V:
Anhang 29125
[1] http://www.atmel.com/images/atmel-25...ote_avr042.pdf
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo!
Danke für die Hilfe!
Die Versorgungsspannung sieht okay aus, ich wüsste auch erstmal nicht, wo es da haken könnte. Die Erzeugung der 5V ist 08/15 folgendermaßen realisiert:
Anhang 29126
Der Gleichrichter dient nur als Verpolungsschutz, deswegen fällt die Siebung nur minimal aus. Allerdings speise ich die Versorgungsspannung im Moment noch hinter dem Gleichrichter ein, damit alles auf der Masse von meinem Netzteil liegt. Hier mal schnell ein Einblick in die Versorgungsspannung, AC-gekoppelt, 20 mV/div. Vpp ist ca 57 mV, Vrms 8.44 mV. Sieht für mich erstmal okay aus (zumal auf die Schnelle gemessen mit frei fliegenden Kabeln). Die Schaltung zieht insgesamt ca. 80 mA, was natürlich im wesentlichen auf die Hintergrundbeleuchtung des LCDs zurückgeht.
Anhang 29127
Stimmt schon, AVCC ist etwas ruppig angeschlossen, ich benutze hier den gesamten Analogteil des µC nicht, aber ich werde das beim nächsten mal ordentlicher machen. Dass die Sache daran scheitert glaube ich aber erstmal auch nicht.
Auch die Beschaltung vom Reset ist etwas minimal ausgefallen, aber nach den Diskussionen die ich um dieses Thema bisher so verfolgt habe, sei das bei den neueren AVRs auch nicht mehr so ein riesen Problem, deswegen habe ich den Pull-Up weggelassen. Okay, auch das kann ich besser machen. Aber auch da bin ich erstmal ein wenig skeptisch dass dort das Problem liegt, denn der Punkt ist ja, dass ich nicht einfach nur eine "Funktionsstörung" habe sondern tatsächlich irgend ein letaler Effekt auftritt.
Das LCD habe ich als 5V Typ in China gekauft - muss also nicht zwingend stimmen, bin da aber erstmal nicht vom Gegenteil ausgegangen. Und die Gesamtstromaufnahme vom System liegt in einem realistischen Bereich (s.o.).
Gruß
Malte
- - - Aktualisiert - - -
Zitat:
Ich wundere mich nur, das du für Entwicklung einen µC in SMD nimmst, wenn es gleichen in DIL gibt. :confused:
:-) Also erstens macht mir der Umgang mit SMD Spass, also rein handwerklich. Ist halt nichts für Weicheier ;-) ... nein im Ernst, tatsächlich ist der Umgang damit garnicht so schlimm wie man als Anfänger vielleicht erstmal denkt. Zumindest mir ging es so, und ich war dann überrascht wie gut man damit zurecht kommt. Aber dann gibt es noch technische Gründe. Die Aufbauten werden deutlich kleiner, das ist zunächst ein finanzieller Vorteil, wenn man Platinen machen lässt. Wenn man seine Schaltungen in Gehäuse o.ä. einbauen will, ist es außerdem angenehm, wenn man nicht so riesige Bretter hat, sondern eine kleine flache Platine. Im übrigen gibt es viele moderne ICs eh nur noch in SMD, wenn ich also schon einige Bauteile in SMD auf der Platine habe, dann brauche ich den Rest auch nicht mehr in DIP machen, finde ich. War jetzt etwas off topic ... :-)
Gruß
Malte