Forum: Mikrocontroller und Digitale Elektronik Automatische ISP Frequenz Fuses:125 khz; Flash:1Mhz möglich?


von Günther (Gast)


Lesenswert?

Software: Atmelstudio; Programmer: Atmel MK2 oder kompatible

Ich hoffe auf eine Lösung, denn ich bin sicher nicht der einzige der 
dieses Problem hat. Was mich schon seit Jahren nervt ist folgendes:

Um bei einem frischen Atmel die Fuses (z.B. zum Umstellen auf externen 
Quarz) zu programmieren, muss die ISP Frequenz bei 125 khz stehen 
(manchmal sind auch 250 khz OK, aber das ist zu unsicher).

Einen Mega2561 Flash danach voll zu beschreiben, dauert bei 125 khz 
jedoch ewig. Kann man bei einem Stück verschmerzen, aber wenn man 50 
Stück hat, dann bekommt man die Krise. Also stellt man die ISP Frequenz 
vorher auf 1 Mhz um, dann dauert es nur Sekunden.

ABER: stecke ich nun das nächste Modul mit einem frischen µC an, dann 
kann ich die Fuses nicht ändern, da die ISP Frequenz noch auf 1 Mhz 
steht und erst wieder auf 125 khz gestellt werden muss.
Somit muss ich immer manuell 4 Tasks durchführen:
Frequenz 125 khz; Fuses schreiben, Frequenz 1 Mhz, Flash schreiben

Daher die Frage: gibt es eine Möglichkeit (oder andere Software), dass 
die Programmiersoftware die Fuses generell bei 125 khz schreibt und dann 
denn Flashinhalt automatisch mit 1 Mhz?

Danke
Günther

von Thomas V. (Gast)


Lesenswert?

Günter, genau das gleiche nervt mich in der Serie bisweilen auch.

Ich gehe daher so vor:

zunächst bei allen Boards die Fuses mit 245kHz flashen und dann auf was 
schnelleres umstellen und bei allen das Memory flashen.

Spart das hin- und herschalten und ist weniger fehlerträchtig.

Wenn es da eine praktikablere Lösung gibt, wäre ich sehr dankbar

Gruß
Thomas

von Rene K. (xdraconix)


Lesenswert?

Thomas V. schrieb:
> Spart das hin- und herschalten und ist weniger fehlerträchtig.

Ja aber doppelt den ISP Stecker an und abziehen spart aber auch keine 
Zeit und Nerven wirklich.

Da sind dann Pogo-Pins cool.

Zum Thema: da kann man doch bestimmt nen Target-Script machen oder?!

von Peter D. (peda)


Lesenswert?

Man könnte sich ne Batch schreiben mit 2 Aufrufen von STK500.EXE bzw. 
ATPROGRAM.EXE

von Günther (Gast)


Lesenswert?

Peter D. schrieb:
> Man könnte sich ne Batch schreiben mit 2 Aufrufen von STK500.EXE bzw.
> ATPROGRAM.EXE
Mmmhh - darüber habe ich ja noch nie nachgedacht. Super Idee!!
Das schaue ich mir doch direkt mal an. Hoffentlich funktioniert es so 
wie von Atmel beschrieben. Hier ein Link: 
http://www.atmel.com/webdoc/atmelstudio/atmelstudio.ChapterCommnadLineUtility.html

Danke!

von Stefan F. (Gast)


Lesenswert?

Der Programmieradapter ICprog-AVR2.0 passt sich automatisch an die 
Taktfrequenz des µC an. Auf mein Bitten hin hatten sie sogar Support für 
µC mit weit weniger als 1Mhz Taktfrequenz hinzugefügt.

Leider ist der nur für 5V vorgesehen. Durch Einschleifen von 180 Ohm 
Widerständen kann man ihn jedoch auch mit 3,3V Targets verwenden.

https://shop.in-circuit.de/product_info.php?cPath=40&products_id=114

von Günther (Gast)


Lesenswert?

Günther schrieb:
> Peter D. schrieb:
>> Man könnte sich ne Batch schreiben mit 2 Aufrufen von STK500.EXE bzw.
>> ATPROGRAM.EXE
> Mmmhh - darüber habe ich ja noch nie nachgedacht. Super Idee!!
> Das schaue ich mir doch direkt mal an. Hoffentlich funktioniert es so
> wie von Atmel beschrieben. Hier ein Link:
> 
http://www.atmel.com/webdoc/atmelstudio/atmelstudio.ChapterCommnadLineUtility.html
>
> Danke!

Also ich kann rückmelden: klappt 1A. So macht das Spass.
Danke Peter!

Ich habe es gerade ausprobiert. Resultat: Batchdatei mit
1) erst Fuses mit 125 khz schreiben, dann
2) direkt den Flash mit 1 Mhz
dauert alles zusammen inkl. der 200 KByte Flash nur ca. 15 Sekunden. 
Perfekt.



@Stefan: Der nützt leider gar nix.
a) Wird er wohl nicht automatisch Fuses mit 125 Khz und den Rest dann 
schneller schreiben
b) Mag sein, dass ein Atmel das mit den 180 Ohm Widerständen verträgt. 
Aber was, wenn da noch andere Hardware mit an diesen Leitungen hängt die 
vielleicht nicht so tolerant ist und dann beschädigt wird? Sorry - sowas 
ist Bastelkram und nicht ernstzunehmen. Dann lieber direkt einen Diamex 
AllAVR kaufen, der kann das alles, liefert sogar die notwendige Spannung 
für das Board (3,3 oder 5V) über den ISP Port mit und ist auch 
sauschnell. Und kann daneben auch noch PDI (wichtig für die Xmegas).

von Thomas V. (Gast)


Lesenswert?

Günter, könntest Du mal so eine Batch Datei zeigen?

danke!!

von Günther (Gast)


Lesenswert?

atprogram help
zeigt alle Optionen an.

Habe die folgenden Zeilen nur einzeln aufgerufen, sollte aber so in der 
Batchdatei klappen:

d:
cd \anwendungen\entwicklungstools\atmel studio 
6.2\extensions\application
atprogram -t avrispmk2 -i ISP -cl 125khz -d atmega2561 program -fs -f 
fuses.hex
atprogram -t avrispmk2 -i ISP -cl 1mhz -d atmega2561 program -fl -f 
flash.hex

Anmerkung: Die gewünschten Fuses habe ich vorher in eine Datei 
ausgelesen, da ich sonst keine Option zum direkten Setzen finden konnte.

von Falk B. (falk)


Lesenswert?

Das geht auch mit AVRDUDE. Massenprogrammierung macht man so oder so 
besser mit einer Batchdatei.

von Thomas V. (Gast)


Lesenswert?

danke die Herren :-)
Das probiere ich aus!

von chris (Gast)


Lesenswert?

Hi,

Fuses und Lockbits können auch direkt angegeben werden.
So sieht meine Batchdatei für die Massenprogrammierung aus:
1
"C:\Program Files (x86)\Atmel\Atmel Studio 6.0\avrdbg\atprogram" -t avrispmk2 -i isp -d atmega88pa -cl 125khz chiperase
2
3
"C:\Program Files (x86)\Atmel\Atmel Studio 6.0\avrdbg\atprogram" -t avrispmk2 -i isp -d atmega88pa -cl 125khz write -fs --values F7D5FC -v
4
@echo.
5
6
"C:\Program Files (x86)\Atmel\Atmel Studio 6.0\avrdbg\atprogram" -t avrispmk2 -i isp -d atmega88pa -cl 1mhz program -c -fl --verify -f merged.hex
7
@echo.
8
"C:\Program Files (x86)\Atmel\Atmel Studio 6.0\avrdbg\atprogram" -t avrispmk2 -i isp -d atmega88pa -cl 1mhz write -lb --values FC -v
9
10
pause

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.