Forum: Mikrocontroller und Digitale Elektronik Programmübertragung dauert lange


von Heino M. (heinom)


Lesenswert?

Hallo zusammen,

ich habe mir heute ein kleines Programm für den Atmega8 geschrieben und 
auch erfolgreich übertragen. Positiv: keine Fehler und es funktioniert 
;o) Negativ: das beschreiben und verifizieren zum Atmega dauert lange 
etwa 10 Minuten insgesamt bei 500 oder 600Bytes. Bei einem Bekannten ist 
das ganze in unter 15 Sekunden erledigt. Woran kann das liegen? Ich 
verwende PonyProg zur Übertragung. vielen Dank

von c-hater (Gast)


Lesenswert?

Heino M. schrieb:
> Woran kann das liegen?

> Ich
> verwende PonyProg zur Übertragung.

Genau daran. Und daran, daß du höchstwahrscheinlich keine echte serielle 
Schnittstelle hast, sondern nur einen USB-RS232-Adapter. Stimmt's?

von Heino M. (heinom)


Lesenswert?

Ja richtig aber das muss doch auch funktionieren...?

von holger (Gast)


Lesenswert?

>Ja richtig aber das muss doch auch funktionieren...?

Das tut es doch;)

Besorg die entweder eine echte serielle Schnittstelle
oder einen USB ISP Progger. Was anderes hilft da nicht.

von Hans J. (step_up_mosfet)


Lesenswert?

Heino M. schrieb:
> Ja richtig aber das muss doch auch funktionieren...?

Also mit meinem STK200 Clone konnte ich meinen ATmega8 schneller flashen 
als mit meinem jetzigen USBasp.

Ich mach dir einen Vorschlag.
Bau dir einen USBasp, dann kannst du deinen AVR in unter einer Sekunde 
flashen wenn du willst.
Wenn dein Programmierkabel aber etwas lang ist kannst du auch den 
"slow"-Jumper überbrücken und es dauert 15 Sekunden bei einem 5kByte 
großen Programm.

http://www.fischl.de/usbasp/

Diese USBasp-Programmer funktionieren bei mir ohne Probleme, ich kann 
damit sogar meinen Xmega128A4U flashen.

Anleitung zum XMega-Patch:
http://hackaday.com/2012/08/19/programming-the-xmega-with-an-isp/

Die USBasp bekommt man aber auch in China (eBay) für etwas über 2 Euro.

: Bearbeitet durch User
von Thomas D. (thomasderbastler)


Lesenswert?

holger schrieb:
> Besorg die entweder eine echte serielle Schnittstelle
> oder einen USB ISP Progger. Was anderes hilft da nicht.

Jops..stimmt 100%
Benutze auch Ponyprog mit einer echten serielle Schnittstelle. 
Übertragung inkl. Verifizierung nur ein paar Sec bei 90% vollen Flash ( 
Programmgröße) bei einem Atmega8

von Heino M. (heinom)


Lesenswert?

naja ich hab hier noch einen Rechner mit XP drauf, der hat auch ne echte 
serielle RS232. Damit sollte es dann wohl besser klappen. Brauche ich 
für den ein 9 poliges Kabel oder reicht ein 3 poliges? und muß das 
irgendwie gekreuzt sein?

von Peter R. (pnu)


Lesenswert?

Heino M. schrieb:
> naja ich hab hier noch einen Rechner mit XP drauf, der hat auch ne echte
> serielle RS232. Damit sollte es dann wohl besser klappen. Brauche ich
> für den ein 9 poliges Kabel oder reicht ein 3 poliges? und muß das
> irgendwie gekreuzt sein?

Fürs Programmieren wird von ponyprog ISP benutzt. Diese serielle 
Übertragungsform benutzt die Signale: reset, SCK,MISO,MOSI und braucht 
noch (mindestens) Masse dazu. Also: wieviel Leitungen sind da notwendig?
Zusätzlich müssen die Spannungen der RS232-Signale, die 12...15V 
betragen dürfen (und das + und -) noch mit einer Schutzbeschaltung auf 
0V...+5V begrenzt werden.

Auf der pony-Webseite kann  man eine solche Schaltung für RS232 finden 
und die Leitungen nachzählen.

Funktionieren tut das nur, weil außer den Datenleitungen der RS232 
(RTX,TSX)
auch die Handshake-Leitungen (DSR usw.) benutzt werden.

USB-RS232-Adapter müssen aber gewaltige Klimmzüge beim Erzeugen der 
ISP-Signale machen, deswegen sind sie dann extrem langsam.

Nur wenige USB-RS232-Adapter bringen das auf schnelle Weise fertig.

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

Heino M. schrieb:
> naja ich hab hier noch einen Rechner mit XP drauf, der hat auch ne
> echte
> serielle RS232. Damit sollte es dann wohl besser klappen.

Ja.

> Brauche ich
> für den ein 9 poliges Kabel oder reicht ein 3 poliges? und muß das
> irgendwie gekreuzt sein?

Welches Kabel du genau brauchst, hängt schlicht davon ab, wie die Buchse 
auf der Platine mit dem µC verbunden ist. Aus den Sachverhalten, daß es 
mit dem USB-Adapter offensichtlich funktioniert hat und du erst jetzt 
auf der Suche nach einem Kabel bist, kann man erstmal den Schluß ziehen, 
daß du eine 1:1 durchverbundene RS232-Verlängerung benötigst.

Und aus der Funktionsweise der ISP-Programmierung über RS232 kann man 
den Schluß ziehen, daß eine Dreidraht-Leitung definitiv komplett 
unbrauchbar ist, weil die Programmierung nämlich überhaupt nicht über 
die seriellen Datenleitungen läuft, sondern mittels Bitbanging über die 
Steuer- und Statusleitungen. Genau das ist übrigens auch der Grund, 
warum die Sache über USB-Adapter so erbärmlich langsam ist.

von Heino M. (heinom)


Lesenswert?

Also es ist so: Ich habe mir das Atmel Evaluationsboard von Pollin.de 
zugelegt

http://www.pollin.de/shop/dt/NTI5OTgxOTk-/Bausaetze_Module/Entwicklerboards/ATMEL_Evaluations_Board_V2_0_1_Fertigmodul.html

Dieses Board finde ich echt praktisch, denn ich kann frei wählen über 
welche Anschlüsse ich programmieren will. Also direkt über ISP also den 
10 poligen Wannenstecker, oder über Sub-D 9polig zu ISP oder direkt über 
RS232 wobei das Board bei der RS232 Variante bereits einen Baustein 
Namens MAX232 dahinter geschaltet hat. Also von der Seite her sollte es 
da keine Probleme geben. Aber wie gesagt ich bin mir nicht sicher was es 
nun noch mit dem Kabel auf sich hat. Ach ist das manchmal 
kompliziert...:o/

von Peter R. (pnu)


Lesenswert?

1. Das MAX232 des Pollin-boards wird nur dann verwendet, wenn ein vom 
Anwender programmierter Kontroller auf dem board RS232-Signale 
ausgibt/einliest. Aber NICHT fürs Programmieren. Beim Programmieren wird 
nämlich der Kontroller per reset stillgelegt und damit auch die UART im 
Kontroller.
2. Fürs Programmieren dient der zweite D9-Stecker, der ist mit einer 
einfachen Schaltung verbunden, die aus den ca. +12V  -12V der 
RS-Schnittstelle 5V-Signale erzeugt, die das Programmierobjekt auf der 
Platine verträgt und als ISP-Signale erkennt.
3. Wenn man Pin1 des PC über Kabel an Pin1 des pollin-Steckers 
schaltet,also pin auf pin, hat man das richtige Kabel. Dann kann 
ponyprog im PC die Signale an RS232 des PC erzeugen und an die 
D9-ISP-buchse der Pollinplatte übertragen.
4. Wenn man USB-RS232 Adapter zwischen PC und Pollin hat, gehts in 
vielen Fällen garnicht. Oft gehts sehr langsam. Manchmal gehts auch 
richtg. Je nach Adapter.
5. Ganz gut gehts mit Programmmieradaptern USB-ISP. Die liefern gleich 
die ISP-Signale und die schließt man dann an den zehnpoligen 
ISP-Stecker-Anschluss an. Dann  geht das Programmieren am schnellsten. 
Vor Allem, dann ist im günstigen Fall der Programmieradapter schon ins 
Bedienmenu von Studio4,5,6 integriert, sodass ein Tastendruck genügt, 
das assemblierte .hex. file in das Target zu übergeben. Den Weg würde 
ich empfehlen, also ohne uralte pony-Schnittstelle arbeiten.

Übrigens vor Jahren bin ich per Pollin in AVR eingestiegen. Nach zwei 
Wochen wechselte ich von pony weg auf einen andren progger, weil mir der 
Weg über pony a. zu langsam und b. zu umständlich war.

: Bearbeitet durch User
von Heino M. (heinom)


Lesenswert?

Hallo Peter,

vielen Dank für Deine umfangreiche Antwort. Jetzt habe ich auf alle 
Fälle erstmal einen eindruck von allem. Ich muß jetzt erstmal überlegen 
wie ich das alles am besten löse. Naja jeder fängt eben mal klein an ;o) 
vielen Dank auch an alle anderen die mir hier hilfreiche Tipps gegeben 
haben!

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.