Forum: Mikrocontroller und Digitale Elektronik ATtiny2313 ISP Kommunikation funktioniert nur sporadisch


von Paul H. (powl)


Angehängte Dateien:

Lesenswert?

Hi,

ich hab hier mal wieder einen Fehler der mich wahnsinnig macht. Ich habe 
eine Relaissteuerung und RS232-Anbindung mit ATtiny2313 aufgebaut, 
Schaltplan im Anhang. An SV4 hängen nur Taster und LEDs dran aber auch 
unbeschaltet tritt das Problem auf.

Mein ISP-Adapter ist der mySmartUSB light unter AVRstudio 4. Die 
ISP-Leitungen sind separat angelötet (VCC vom ISP aber nicht). Wenn ich 
einen neuen ATtiny einsetze geht die ISP-Kommunikation eine Weile 
problemlos, doch nach wenigen malen Flashen fängt es an: Beim Starten 
irgendeiner ISP-Aktivität (flashen, signature..fuses auslesen) fängt das 
Programm in immer langsamer werdenden Abständen an loszulaufen und die 
Relais klackern (da sie bei Programmstart aktiviert werden) in 
entsprechendem Takt.

Abhilfe schafft manchmal, wenn ich die Relais vorher ausschalte UND die 
Resetleitung manuell dauerhaft auf GND ziehe. Seitdem ich die 
Aktivierung der Relais zu Programmbeginn aus dem Code rausgenommen habe 
hilft auch das nicht mehr. Was teilweise auch funktioniert ist, die 
Spannungsversorgung komplett abzustellen. Dann wird der AVR nur über die 
ISP-Datenleitungen gespeist beim Flashen aber irgendwie funktioniert das 
manchmal. Auf jeden Fall kann das nicht angehen.. mir gehen langsam die 
Tricks aus wie ich das Programm noch auf den AVR drauf kriege.

Ich dachte mir dann, ob der ISP es vll aus irgendwelchen gründen nicht 
schafft, Reset auf Masse zu ziehen aber mein DSO verrät mir, dass er das 
durchaus sauber durchschalten kann.

Vorhin, als ich meine Arbeit am Projekt wieder aufgenommen habe ließ 
sich der Controller dann ohne Probleme ein paar mal ganz normal und ohne 
Tricks Flashen und dann finden die genannten Probleme wieder an.

Was ist hier los? Tiny kaputt? Zu hohe Luftfeuchtigkeit? Ich komm nicht 
drauf. Und die unbeherrschbarkeit dieses Phänomens macht mich 
wahnsinnig.

Danke für jeden Tipp! lg

von Paul H. (powl)


Lesenswert?

Nachtrag: Mein Labornetzteil hat die Eigenschaft, die Spannung relativ 
langsam hochzufahren wenn man es aus dem Standby in den Betrieb 
schaltet. Trotz aktivierter Brown-Out Detection bei 4,3V bleibt der 
ATtiny2313 dann manchmal hängen und startet sein Programm nicht.

von Uwe (de0508)


Lesenswert?

Hallo,

wie ist den dein Reseteingang beschaltet ?
Ist der offen am langen Kabel?

Lege mal ein Pullup mit 1kΩ - 10kΩ an Vcc und 1nF Reset nach Masse.
Filtere die Versorgungsspannung deines attiny bitte über ein C-L-C 
Glied:
100nF-100µH-100nF.

von Paul H. (powl)


Lesenswert?

Der Reset ist offen am ISP-Kabel. Das allerdings hat nur 30cm Länge, das 
hat in der Konfiguration bisher auch noch nie probleme Bereitet auf 
diversen Breadboard-Aufbauten.

Ohne deine Tipps jetzt mal umgesetzt zu haben habe ich den Tiny aus der 
Schaltung rausgenommen, auf ein kleines Breadboard drauf an dem nichts 
weiter angeschlossen ist als VCC/GND vom Labornetzteil, ISP und der 
Quarz. Hier kriege ich auch überhaupt keine ISP-Verbindung, egal wie.

Wenn ich aber einen frischen Tiny einsetze klappt alles auf Anhieb 
problemlos, wie gewohnt. Auch wenn ich die Fuse-bits genau so 
konfiguriere, d.h. ext. Quarz und Brown-Out detection. Worin liegt der 
Fehler wenn ich jetzt davon ausgehe, dass die genannten Entstörmaßnahmen 
(in allen Ehren!) zwar nett aber nicht notwendig sind und irgendwas 
dafür verantwortlich ist, dass meine Tinys ständig partiell geschädigt 
werden?

von Paul H. (powl)


Lesenswert?

Auch interessant: Ich habe noch einen AVR Dragon aber der schafft es 
offenbar zuverlässig, den problematischen ATtiny2312 zu erkennen und zu 
flashen wohingegen der mySmartUSB light an diesem nicht oder nur ganz 
sporadisch funktioniert. Den neuen ATtiny2313 jedoch schlucken beide 
erst mal problemlos.

Was ist hier los??

: Bearbeitet durch User
von Uwe (de0508)


Lesenswert?

Nuja Paul,

Atmel hat für die Hardwarebeschaltung 2-3 Application Notes verfasst, 
wenn man diese alle nicht umsetzen möchte, dann musst Du weiter mit 
deinen Problemen leben.

Erst wenn Du dich erschöpfend mit EMV (HF) beschäftigt hast, wirst Du 
meinen Vorschlag erst nehmen.

von Paul H. (powl)


Lesenswert?

Ich werde deine Vorschläge morgen umsetzen. Einfach um mögliche 
Fehlerquellen auszuschließen. Schlüssig wirkt es auf mich aber aus 
genannten Gründen nicht.

von blubber (Gast)


Lesenswert?

Was soll das mit R4 an 12V?
Das finde ich nicht gut.
Ein Spannungsteiler ist dort sicherlich die bessere Wahl.

von Paul H. (powl)


Lesenswert?

blubber schrieb:
> Was soll das mit R4 an 12V?
> Das finde ich nicht gut.
> Ein Spannungsteiler ist dort sicherlich die bessere Wahl.

Ist derzeit nicht beschaltet. Kriegt in der realen Anwendung dann auch 
nur 5V ab anstatt der im Schaltplan vermerkten 12V :) sry

: Bearbeitet durch User
von Thomas (kosmos)


Lesenswert?

ich nehme immer 10 kOhm Pullup und 100nF Kerko als Resetbeschaltung, so 
hinkt die Resetspannung der Versorgungsspannung beim Einschalten 1 mSek 
hinterher und außerdem schaft es dann auch jeder Progger Reset 
runterzuziehen.

Hatte letztens einen TQFP-AVR auf einer Adapterplatine mal ohne den 
Kerko an VCC und Reset getestet und prompt bliebt er auch im Brown-Out 
hängen.

von Paul H. (powl)


Lesenswert?

So. Es hat mir keine Ruhe gelassen und ich habe die von dir 
vorgeschlagenen Maßnahmen umgesetzt. Versorgungsspannung mit CLC-Filter 
und am Reset 10k nach VCC und 10n nach GND.

Das ganze verändert am beschriebenen Verhalten des problematischen 
ATtinys leider überhaupt nichts :-( Hätte mich ehrlich gesagt aber auch 
gewundert, denn bisher hat das Programmieren eines nackten AVR auf 
Breadboard immer funktioniert, und mit einem nagelneuen Tiny klappts ja 
auch. Irgendetwas zerstört meine ATtinys so dass der mySmartUSB light 
nicht mehr damit klarkommt. Evtl ist es sogar der Programmer selbst. 
Jemand noch Ideen? Ich will nicht einen Tiny nach dem anderen schrotten.

Ich leg mich jetzt frustriert ins Bett.

: Bearbeitet durch User
von Paul H. (powl)


Lesenswert?

Einige neue Versuche, gleiches Phänomen.

Was ich nun probiert habe: Mal eine neue Firmware auf den mySmartUSB 
light aufgeflasht und das USB-Verlängerunskabel ausgetauscht bzw. einen 
anderen USB-Port verwendet. Leider keine Verbesserung, er erkennt den 
fragwürdigen Tiny immer noch nicht. Einen frischen Tiny erkennt er 
anstandslos, auch wenn ich das aktuelle Programm draufflashe. Der AVR 
Dragon erkennt nach wie vor alle.

Da kommen jetzt genau drei Fragen auf:
Warum funktionieren frische Tinys?
Warum funktionieren sie nach einigen Malen nicht mehr?
Warum macht nur der mySmartUSB light und nicht der Dragon Probleme?

: Bearbeitet durch User
von Paul H. (powl)


Lesenswert?

Gestern bin ich mal in die Gelegenheit gekommen, einen zweiten 
mySmartUSB light auszuprobieren.

Der zeigt genau das gleiche Verhalten am problematischen ATtiny2313. Das 
deutet darauf hin, dass mein Adapter nicht etwa defekt ist. 
Interessanterweise hat das Programmieren des µCs noch problemlos 
funktioniert als der interne RC-Oszillator aktiviert war. Mit dem 7,3827 
MHz Quarz jedoch funktioniert es nicht mehr. Mein AVR Dragon schafft 
aber weiterhin problemlos den ISP-Zugriff.

Scheinbar ist die Kombination ATtiny2313 + 7,3872MHz Quarz + mySmartUSB 
light ziemlich empfindlich. Eventuell gibt es hier Timingprobleme?

Ich stehe mittlerweile auch mit dem Hersteller des Programmieradapters 
in Kontakt. Bin mal Gespannt ob sich hier irgendwann eine Lösung ergibt.

von Paul H. (powl)


Lesenswert?

Ich führe meine one-man Show hier mal weiter:

Spoiler: Es liegt irgendwie am µC-Programm!?


Ich habe mich heute dem Problem noch mal angenommen und konnte das
Verhalten folgendermaßen bei drei verschiedenen ATtiny2313
reproduzieren. Einer davon war noch vollkommen unbenutzt, quasi
fabrikfrisch. Der ausschlaggebende Punkt scheint mein hex-File zu sein,
das ich auf den tiny flashe. Sobald dieses draufgeflasht ist
funktioniert die ISP-Kommunikation mit dem mySmartUSB light nicht mehr.
Zumindest nicht mit den eingestellten Fuses unter verwendung eines
externen Quarzes. Auch andere Quarze als 7,3728MHz wie 4MHz oder 8Mhz
funktionieren nicht. Das Programm läuft aber wie es soll, es gibt keine
Bugs. Der AVR Dragon bringt die ISP-Kommunikation nach wie vor zustande.
Wenn ich den tiny mit dem AVR Dragon erase dann erkennt der mySmartUSB
light ihn auch wieder. Das erklärt auch, warum während des
Programmierens der tiny irgendwann immer sporadisch ausgefallen ist.
Eventuell gab es einen Zusammenhang zwischen meines
Programmierfortschritts bzw. des damit resultierenden hex-Files und den
Ausfällen der ISP-Kommunikation.

Im Errata des Datenblatt für den ATtiny2313 sind keine Probleme mit dem
ISP aufgeführt.

Eben habe ich mal per Dragon die Fuses auf den internen 8MHz
RC-Oszillator (ohne CLKDIV8) zurückgeschaltet. Auch so funktioniert die 
ISP-Kommunikation mit dem mySmartUSB light nicht. Mittlerweile kann ich 
den Fehler wohl ziemlich gut auf das programmierte hex-File eingrenzen. 
Nur verstehe ich nicht wieso. Das Programm ist für den ATtiny2313 
entworfen und läuft auch einwandfrei. Abgesehen davon dürfte es gar 
keinen Einfluss auf das ISP-Interface haben.

Was geht hier schief?

Die Tinys scheinen sogar aus unterschiedlichen chargen zu stammen. 
Manche haben einen gelaserten, kaum leserlichen Aufdruck, manche einen 
inteniv weißen. Alle zeigen das gleiche Verhalten.

Parallel hierzu bin ich ja im Gespräch mit dem Hersteller des mySmartUSB 
light. Dieser Thread dient nurmehr als Informationsquelle für Leute, die 
evtl. mal auf das gleiche Problem stoßen. Oder vielleicht hat noch einer 
einen Geistesblitz und kann uns damit alle erleuchten ;-)

: Bearbeitet durch User
von grubber (Gast)


Lesenswert?

Sind das 22n oder 22p am Crystal?

von Paul H. (powl)


Lesenswert?

Ist nicht mehr von Relevanz, da wer Fehler, wie schon erwähnt, 
taktquellenunabhängig auftritt.

von Thomas (kosmos)


Lesenswert?

Hast du ein 2 Kanal Oszi. Es könnte sein das die Spannung am Resetpin 
schneller ansteigt als an VCC, verzögere das ganze mal indem du 10µF an 
den Resetpin hängst?

von Ich (Gast)


Lesenswert?

Wie groß ist das Startup Delay in den Fuses gewählt?

von Ich (Gast)


Lesenswert?

Wie groß ist deine ISP Clock? Schon mal versucht die abzusenken?

von Paul H. (powl)


Lesenswert?

Thomas O. schrieb:
> Hast du ein 2 Kanal Oszi. Es könnte sein das die Spannung am Resetpin
> schneller ansteigt als an VCC, verzögere das ganze mal indem du 10µF an
> den Resetpin hängst?

Reset hab ich schon mit nem 10k/10µF RC-Glied beschaltet. Bringt auch 
nix. Zum Programmieren muss aber der Reset ohnehin auf GND liegen also 
hilft hier eine Reset-Schaltung prinzipbedingt nicht weiter.

Ich schrieb:
> Wie groß ist das Startup Delay in den Fuses gewählt?
Alles ausprobiert. Nichts hilft.

Ich schrieb:
> Wie groß ist deine ISP Clock? Schon mal versucht die abzusenken?
Kann man nicht einstellen beim mySmartUSB light, denn der probiert am 
Anfang automatisch alle ISP Clocks durch und nimmt dann die 
höchstmögliche. Das ist auch der Moment an dem der Fehler offenbar 
auftritt. Der Programmer beginnt mit der höchstmöglichen und tastet sich 
weiter vor zu langsamsten. Zwischendurch startet das µC-Programm halt 
immer mal wieder in kürzer werdenden Abständen. Bis der 
Programmiervorgang abbricht weil er den geeigneten ISP Clock nicht 
findet. Das ganze ist abhängig davon, welches Programm auf den µC 
geflasht ist. Ein gelöschter Tiny oder einer mit einem anderen Programm 
geht.

: Bearbeitet durch User
von grubber (Gast)


Lesenswert?

Hm,

1. Also 22n ist murks. Es gibt Referenzbeschaltungen. Deine 
Lastkapazität ist viel zu hoch: 
https://blog.adafruit.com/2012/01/24/choosing-the-right-crystal-and-caps-for-your-design/
2. Was ist das für eine ISP Beschaltung? MyUSB gibt etwas anderes vor.
3. Reset hast du ebenfalls nachgerüstet?
4. Die 12V über 100k sind ebenso murks, hast du aber ebenso geändert?
5. Ist Deine Zelle korrekt?
6. Klackern die Relais beim Proggen? GGf. bricht Deine Spannung ein, 
wenn die 3 Relais gleichzeitig klacken? Welchen Strom ziehen die Relais 
im Schatltmoment? (DB)
7. Wo kommen die 5V und 12V her? Was leitet sich hier von wem ab?


Aufgabe:
* Designempfehlungen + Standardbeschaltungen nehmen
* Alle Änderungen einpflegen und neues Schaltbild bitte posten.

bis bald.

von Markus H. (traumflug)


Lesenswert?

Wühlt man sich etwas durch die Welt der AVR-Programmer und -Bootloader, 
findet man eine ganze Reihe Exemplare, die es mit der Spezifikation 
nicht besonders genau nehmen, um schneller zu sein. Es kann also 
durchaus sein, dass dieser mySmartUSB zwar meldet, den Flash zu löschen, 
das aber nicht tatsächlich tut.

Paul H. schrieb:
> Kann man nicht einstellen beim mySmartUSB light, denn der probiert am
> Anfang automatisch alle ISP Clocks durch und nimmt dann die
> höchstmögliche.

So ungefähr legt man es darauf an, Fehler zu produzieren. Wenn ein paar 
Testbytes korrekt zurück kommen heisst das noch lange nicht, dass das 
dann auch unter allen Umständen funktioniert.

von Malte S. (maltest)


Lesenswert?

Paul H. schrieb:
> Kann man nicht einstellen beim mySmartUSB light, denn der probiert am
> Anfang automatisch alle ISP Clocks durch und nimmt dann die
> höchstmögliche.

Dann versucht mySmartUSB da wohl, zu smart zu sein und ist es dann eben 
gar nicht mehr. Wenn du schon im Kontakt zum Hersteller bist, kann der 
ja vielleicht eine Firmware bereitstellen, bei der man die 
Geschwindigkeit manuell angeben kann.

von Paul H. (powl)


Lesenswert?

Danke für jede Hilfestellung bisher!

Falls ich es noch nicht erwähnt hatte: Ich habe auch schon eine 
Test"schaltung" mit einem nackten ATtiny2313 aufgebaut. Ohne jede 
Beschaltung außer dem ISP. Ich konnte da einige hex-files mit dem 
mySmartUSBlight draufflashen. Sobald ich jedoch das hex-file aus dem 
aktuellen Projekt draufflashe funktioniert das ISP nicht mehr. Zumindest 
nicht mehr mit dem mySmartUSBlight. Ich konnte das Verhalten mit 
mehreren Tinys und wiederholtem löschen/flashen wunderbar reproduzieren. 
Es liegt wohl am Programmer. Diese automatische Clock-Erkennung 
funktioniert nicht mehr, sobald ein gewisses hex-file im Tiny ist. In 
wie fern das aktuell geflashte Programm dafür relevant ist kann ich 
nicht beurteilen. Kanns mir auch schlecht vorstellen aber es scheint 
wohl so zu sein.

Ich hake beim Hersteller noch mal nach.

(Ach es sind übrigens natürlich 22p, nicht 22n. Hatte mich da wohl 
vertippt im Plan! Die 12V über 100k am AVR sind nun auch weg.)

von Thomas (kosmos)


Lesenswert?

stell mach mal die Startverzögerung auf den größten Wert ein, und 
Brownout abschalten oder sehr niedrig einstellen.

Erst VCC anschließen und dann erst Reset aber den 100µF Elko am Resetpin 
parallel zu dem 100nF Kerko dieses nicht weglassen.

von Paul H. (powl)


Lesenswert?

Danke aber.. Nein, ich sehs jetzt auch nicht ein, mir irgendwas um den 
ATtiny drum rum zu basteln, nur damit der mySmartUSB light auf Teufel 
komm raus damit funktioniert :D Entweder er tut es von sich aus, oder 
nicht.

Mit der nackten ISP-Beschaltung hatte ich noch nie Probleme. Eine 
Reset-Beschaltung existiert auch in keiner meiner Schaltungen und alle 
laufen bisher problemlos. Ich warte mal ab ob der Hersteller des 
mySmartUSB light etwas an seiner Firmware ändern wird.

von Markus H. (traumflug)


Lesenswert?

Thomas O. schrieb:
> Brownout abschalten

Keine gute Idee. Nicht selten fängt er dann bei 
Versorgungsspannungsverlust an, selbstständig den Flash zu 
überschreiben.

von Thomas (kosmos)


Lesenswert?

das sollte keine dauerhafte Lösung sein, sondern um den Fehler zu 
finden.

von Paul B. (paul_baumann)


Lesenswert?

Paul H. schrieb:
> Nein, ich sehs jetzt auch nicht ein, mir irgendwas um den
> ATtiny drum rum zu basteln, nur damit der mySmartUSB light auf Teufel
> komm raus damit funktioniert

Spann das Ding in den Schraubstock und drehe langsam zu. Das ist das 
Beste, was man mit diesem Rotzding anstellen kann.

Bau Dir dann einen AVRDOPER
https://www.obdev.at/products/vusb/avrdoper.html

und solche Quälereien gehören der Vergangenheit an.

MfG Paul

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.