Forum: Mikrocontroller und Digitale Elektronik Plötzlicher AVR - Tod


von Johannes Raschke (Gast)


Lesenswert?

Hi!

Ich wollte mir eine Schrittmotorsteuerung bauen, mit der ich zwei 
Motoren mit meinem HP48GX - Taschenrechner steuern kann. Dafür verwende 
ich wegen des eingebauten UARTs den AT90S2313.
Ich benutze die Elektor - Entwicklungsplatine, welche eigendlich für den 
1200 gedacht ist.
Mein Problem ist jedoch, daß sich die Controller immer nur 1 bis 5 Mal 
programmieren lassen und dann praktisch gar nichts mehr machen. Das 
Programm läuft zwar so einigermaßen weiter, incl. serieller 
Kommunikation, aber der Controller reagiert nicht mehr auf das 
Flashprogramm. Nicht mal das Auslesen des Controllertyps geht noch!
Das ist jetzt schon beim fünften Controller so, und bevor ich jetzt 
sinnlos weiter die Teile verbrate, wollte ich mal fragen, ob jemand da 
ne Idee hat...
Die Programmierung funktioniert seriell, die Motoren werden über TCA 
3727 - Chips versorgt. Die Spannung nach dem Spannungsregler beträgt 
genau 5 Volt.

von Peter D. (peda)


Lesenswert?

Du solltest den Programmierer wechseln.
Er hält sich wohl nicht an die Programmiervorschrift in den 
Datenblättern.

Entweder er streßt den 2313 wirklich so, daß der wie 10000 mal 
programmiert reagiert.

Oder die Timings sind so kritisch, daß nur die Kommunikation nicht 
klappt und Deine 2313 mit einem ordentlichen Programmierer weiterhin 
programmiert werden können.

Prinzipiell habe alle Programierer mit dem Parallelport Probleme auf 
jedem PC das richtige Timing zu generieren.
Deshalb benutzt Atmel z.B. im STK500 auch einen extra µC für die 
Programmierung.


Ich habe noch nie einen Atmel totprogrammieren können obwohl ich immer 
jeden kleinen Programmschritt sofort ausprobiere. D.h. es können schon 
mal bis zu 100 Programmierungen pro Tag zusammenkommen.


Ich benutze diesen Programmierer:

http://www.specs.de/~danni/tools/proflash/index.htm


Peter

von Johannes Raschke (Gast)


Lesenswert?

Hi, Peter!

Danke für Deinen Tip!
Allerdings arbeitet mein Programmer seriell. Er hat noch einen 74HC14N - 
Chip drauf, der das ganze wohl irgendwie puffern soll. Außerdem benutze 
ich extra einen alten 386er Computer zum Flashen...
Vielleicht hast Du trotzdem recht.
Der Programmer, den Du benutzt, kann man anscheinend nicht fertig oder 
als kompletten Bausatz erwerben, oder? Sieht ja sehr interessant aus, 
das Teil!

Danke nochmal

Johannes

von Holger (Gast)


Lesenswert?

Dein HC14 tut leider nur as an der Signalqualität, leider nicht an deren 
Timing. Hilft in der Situation also nicht recht.

Auch ein 386 sollte problemlos in der Lage sein, dass entsprechende 
Schnittstellen-Timing für den Programmer auf die Reihe zu bekommen. 
Scheint mir eher ein Problem der nicht ganz ausgereiften 
Elektor-Software zu sein.

Das STK 500 ist das Standard-Atmel-Entwicklungsboard, dass es 
mittlerweile an so ziemlich jeder Ecke zu kaufen gibt. Sogar bei Conrad 
(da ist es allerdings zu teuer).
---
Holger

von Kilian Nötzold (Gast)


Lesenswert?

Kann es nicht sein das das fuse und lock Bit gesetzt wurde? Ich kann mir 
zwar nicht erklären warum aber das könnte doch sein oder? Ich würde mal 
den Programmer aus dem Tutorial nachbauen und damit testen ob man das 
fuse und lock Bit wieder löschen kann. Wie das geht steht hier im Forum 
einige mal man musste die Spannung unter einen wert senken und dann 
einen erase machen.

von Mike (Gast)


Lesenswert?

Mein beileid

von Johannes Raschke (Gast)


Lesenswert?

Hi!

Kilian, so wie es aussieht hast Du Recht gehabt - die Such - Funktion im 
Forum hatte ich erst gar nicht gesehen. Ich habe die Versorgungsspannung 
mal auf 4 Volt gesenkt, und nach dem zweiten Versuch meldete sich der 
AVR wieder. Löschen ging auch, Programmieren dann erst nach mehreren 
Versuchen mit etwas höherer Spannung. Das Teil scheint ja ganz schön 
empfindlich zu sein, was das angeht!
Seltsamerweise macht das Programm trotzdem noch nicht das, was es 
sollte, obwohl es vor ein paar Veränderungen noch lief. Der Port B 
bleibt dauerhaft auf high...
Na ja, wenn ich den Fehler finde und das Programm fertig ist, werde ich 
es hier mal posten...

Vielen Dank an alle, die sich Gedanken gemacht haben!

Johannes

von Johannes Raschke (Gast)


Lesenswert?

Ich bin´s nochmal,

Die Chips laufen tatsächlich wieder und das Programm in seiner 
Grundfunktion auch. Seltsamerweise hat er sich während der Fehlersuche 
nie mehr "totgestellt"...
Habe jetzt fast vier Stunden dafür gebraucht um festzustellen, daß ich 
vergessen hatte, ZH zu initialisieren. Der Simulator verhält sich da 
offenbar anders als der echte AVR...

Hat jemand Interesse an dem Programm zur Schrittmotorsteuerung? Ist 
eigendlich nix wildes, man kann bis jetzt zwei Motoren mit seriell 
übertragenen Buchstaben links/rechts bewegen. Dazu kommen sollen noch 
Features wie direkte Koordinatenangabe mit automatischer Fahrt auf dem 
kürzesten Weg, Koordinatenspeicher, variable Geschwindigkeit etc. 
Vielleicht mal automatisch abfahrbare Wege...
Ich hatte mal dran gedacht, mit zwei Motoren und Spiegeln nen Laser 
abzulenken und Muster an die Wand zu projezieren, aber so wie es 
aussieht, sind die Motoren bei 300 (Voll-)Schritten pro Sekunde schon so 
ziemlich am Ende... Na, mal sehen, ob das reicht...

von thkaiser (Gast)


Lesenswert?

versuche mal, die Schrittmotoren zu "beschleunigen", d.h. also nicht 
sofort mit Full-Speed zu fahren. Die Trägheit der Mechanik läßt sich so 
ein wenig austricksen. Außerdem sollte der Motor-Treiber die Spannung 
nachführen, so daß der Strom konstant bleibt - Je schneller ein 
Schrittmotor dreht, umso kleiner wird der Strom durch die Spulen. Wird 
die Spannung nachgeführt, kann man wesentlich höhere Taktraten erzielen.

von crazy horse (Gast)


Lesenswert?

Ist zwar richtig, aber ein bißchen verwirrend. Diese Betriebsart nennt 
sich Konstantstrombetrieb und ist auf jeden Fall zu empfehlen. 
Stromabsenkung bei Stillstand nicht vergessen, sonst werden die 
Motörchen zu warm.

von phil (Gast)


Lesenswert?

Hi Johannes,
ich bin grad an nem sehr ähnlichen Projekt. Ich hab mir ne Platine mit 3 
TCA3727, einen 2313 und einem MAX232 für die UART-Kommunikation gebaut. 
Allerdings hab ich noch ein Paar seltsame Probleme, z.B. funktioniert 
die ISP-Programmierung auf der Platine nur so halb, der AVR verhält sich 
ziemlich seltsam usw. Hab aber grad auch nicht so viel Zeit, mich damit 
zu beschäftigen...
Aber schick mir mal bitte dein Programm!
Danke
Phil

von Markus (Gast)


Lesenswert?

Hi Johannes,
ich wundere mich immer wieder über solche Probleme. Ich habe hier schon 
bestimmt 50 Controller (2313, Mega8 und andere) Programmiert und 
getestet. Das beschriebene Problem ist aber noch nie aufgetreten. Ich 
vermute eher, das es mit der Schaltung und/oder dem Programmer und 
dessen Software zusammenhängt.

Gruß
Markus

von Johannes (Gast)


Angehängte Dateien:

Lesenswert?

'n Abend...

@thkaiser
Soweit ich weiß, tun die TCAs genau das, die kanen ne Stromüberwachung. 
Das mit der Stromabsenkung könnte ich machen, aber das würde pro Motor 
zwei weitere Pins erfordern. Dann könnte ich auch Halbschritte fahren, 
aber dann kann ich nur noch zwei Motoren über einen Port betreiben statt 
vier...

@phil:
Ich hab das Programm mal angehängt. Die TCAs hängen dabei an PortB, Pins 
1/2 bzw. 3/4. Mit der Eingabe von "B" und "P" über den UART kann man den 
ersten Motor dann links bzw. rechtsdrehen, zu Testzwecken. Viel Erfolg 
für Dein Projekt!

@Markus:
Ja, das wird wohl irgendwie mit der Software zusammenhängen. Die ist in 
Turbo Pascal geschrieben und kalibriert sich noch nichtmal den Timer für 
die Wartezeiten... Und den fremden Code zu verbessern währe wohl etwas 
viel Aufwand...
Leider funktionieren PonyProg etc. nicht mit der Schaltung und ich hatte 
noch keine Lust und Zeit, mir das mal genauer anzusehen...

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.