Forum: Mikrocontroller und Digitale Elektronik viele ATmegas im Nutzen programmieren?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von N. K. (bennjo)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Allerseits,

ich plane derzeit die Produktion eines Produktes, auf dem ein ATmega 
eingesetzt werden wird. Ziel sind 10.000er Stückzahlen. Die einzelnen 
Boards sind recht klein (32x25mm). Wir haben damit grob 150-200 Boards 
je Nutzen.

Allerdings muss jeder µC einzeln angesprochen werden können, a) um eine 
eindeutige ID vergeben und b) einen selfcheck für jedes Board 
durchführen zu können. Es bietet sich an, die Mikrocontroller nach dem 
Reflow direkt im Nutzen zu programmieren und den selfcheck zu machen.

Derzeit stelle ich mir folgendes vor: Testpins/Stecker am Rand des 
Panels platzieren um je Zeile JTAG TDI/TDO/TMS an die Boards parallel, 
und TCK je Board einzeln heran zu führen. Der Nutzen wird nicht geritzt, 
sondern mit Steg für die Leiter gefräst. Die Leiter zu den Boards werden 
beim Trennen des Nutzen abgebrochen.

Gibt es hier jemanden, der mit so etwas Erfahrung hat? Was muss man 
beachten? Welche Programmer könnt ihr dafür empfehlen? Gibt es bessere 
Verfahren?

Gruß,
Nikias

: Bearbeitet durch User
von Nickname (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi,

meinst Du so etwas ?

http://www.conitec.net/german/galep5p.php

MfG,
Nickname

von N. K. (bennjo)


Bewertung
0 lesenswert
nicht lesenswert
Hi Nickname,

nun ja - allerdings ist das natürlich eher die "herkömmliche" Methode.

Wie gesagt, würde ich gerne das Panel selbst als "Programmieradapter" 
missbrauchen. Es geht hier um Panels mit bis zu 10x20 = 200 Boards!

Eine Liste mit verschiedenen Programmern habe ich: 
http://www.atmel.com/Images/Atmel-42215-Production-Programming-of-Atmel-Microcontroller_AP-Note_AT06015.pdf

Geht mir eher um Praxiserfahrung, falls hier jemand schon mal was 
ähnliches gemacht hat.

Gruß,
Nikias

von D. V. (mazze69)


Bewertung
0 lesenswert
nicht lesenswert
Du kannst die µC auch bei Atmel vor der Auslieferung programmieren 
lassen.

von mknoelke (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Fertig programmierte Steine zum Bestücker geben.
Das kann man als Dienstleitung kaufen.

Frag Deinen Atmel Händler oder z.B. MSC Gleichmann
http://www.msc-ge.de/de/service/program/2063-www.html

Ich hab das ein paar mal mit Microchip Direkt gemacht.
War spuckenbillig und hat super funktioniert.

Oder:
Wenn die Nutzen später auf einen In Circuit Tester gehen kann der das 
wahrscheinlich auch mitmachen.
(Testadapter + Programm ist nicht ganz billig)
Die Kontaktierung wird da über einen Unterdrucktisch mit Federbelasteten 
Nadelkontakten direkt auf der PCB gemacht.
Das ist etwas das Du mit Deinem Bestücker / bzw Testhaus klären musst.

von N. K. (bennjo)


Bewertung
0 lesenswert
nicht lesenswert
Hi D.V. & mknoelke ,

ja - macht unser Distributor auch für uns - aber dann habe ich keinen 
Selfcheck im eingebauten Board und das Problem mit der Serialisierung.

Gruß,
Nikias

BTW: Kann hier jemand was zum Thema Ausbeute und Datenverlust durch 
Reflow sagen?

: Bearbeitet durch User
von D. V. (mazze69)


Bewertung
0 lesenswert
nicht lesenswert
N. K. schrieb:
> Selfcheck im eingebauten Board

Erledigst du das nur via programming?
Serialisierung im Flash oder EEPROM?
Reflow beeinflußt i.d.R. den Flashinhalt nicht, denn der von wem auch 
immer bereits programmierte, aber noch nicht eingelötete Chip überlebt 
das ja auch.

von mknoelke (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Serialisierung ist kein Thema, das machen die auch.

Datenverlust durch reflow war bis dato 0.00%.

Selfcheck + Funktionstest des kompletten Gerätes ist m.e. eine andere 
Baustelle, das wird man nicht alles in einem großen Abwasch erledigen 
können außer man geht den Weg über in circuit tester.

Die häufigsten PCB Fehler sind die grausamen Lötverbindungen der ROHS 
Beglückung, fehl und falschbestückung, Tombstoning etc.pp.
Das wird auch der Selftest nicht greifen können.

von FertigerKenner (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Frag deinen Fertiger nach einem Angebot.
Schreibe eine Spec was er machen muss und er kann dann entscheiden wie 
er es macht. Hier kannst du ihm ja einen Multiplexer vorschlagen um die 
Boards im Nutzen programmierne zu können. Im Nuten kannst du ja z.B. die 
JTAG Clock-Leitung an ale Bausteine anschließen (sofern der FAN-OUT das 
hergibt)
Ich nehme nicht an das läuft bei dir in der Firma so wie du frägst.

Der Ingenieur denkt in der Regel zu technisch (bezigen nur auf sein 
eigenes Produkt) und hat den Betriebsablauf des Fertigers nicht im 
Blick.

Ein paralleles Programmieren von 200 Boards gleichzeitig kostet dich 
vermutlich mehr als das serielle Programmierenvon 1 board nach dem 
anderen.

Der Fertiger muss dazu irgendwie 200 Programmiervorgänge gleicheitig 
überwachen. Wenn z.B. ein PC 4 Programmer ansprechen kann braucht er 50 
PCs statt 1 PC in der Linie. Das ist ein Aufpreis alleine von 49k€ nur 
für die PCs in der Linie. Dazu kommt noch die Verkabelung, Umrüstung der 
Linie auf dein Produkt,...

10.000-de ist eine "kleine" Stückzahl und rechtfertigt nicht den Aufbau 
einer komplexen Fertigungslinie mit massiver Parallelprogrammierung.

Wir machen Consumerware mit Mio. Stück. und so was rentiert sich nicht 
mal bei uns.

Spezifikation schreiben. Der Fertiger macht es basierend auf seinem 
gewählten technsichen Wege. Der billigste bekommt das Angebot. Mach dir 
das Leben leicht! wenn es ein guter Fertiger ist wird er sich selbst 
optimieren denn dann hat er ja was davon. Ihr bezahlt hoffentlich einen 
Festpreis.

von Reinhard Kern (Gast)


Bewertung
0 lesenswert
nicht lesenswert
N. K. schrieb:
> Welche Programmer könnt ihr dafür empfehlen? Gibt es bessere
> Verfahren?

Auf die einfache Art gewinnst du nicht viel, da die Chips nicht 
parallel, sondern nacheinander programmiert werden. Google mal nach 
Atmega Gang Programmer, das kostet zwar mehr, parallelisiert die Arbeit 
aber teilweise - 4 St parallel = 4 x so schnell.

Gruss Reinhard

von Max D. (max_d)


Bewertung
0 lesenswert
nicht lesenswert
Wenn in deinem Flash noch gut PLatz ist, dann lass dir einen Bootloader 
vorprogrammieren. Zum Selbsttest lädst du einfach ein Proggi, dass den 
Test fährt (die Loader kann man ja auch besser parallelisieren, wenn man 
genug Zeit lässt damit jeder seine Page geschrieben hat bevor man die 
nächste schickt). Wenn der Test (hoffentlich erfolgreich) durch ist 
lädst du deine Applikation und trennst die Boards heraus, der Pin der 
den Loader startet bleibt dann einfach "in der Luft hängen" und wird 
beim Start mittels internem Pullup als "nicht loaden" erkannt. Wenn man 
die Loader als Kette (Tx von chip1 an Rx von chip2) anlegt, dann kann 
man die so auch serialisieren indem die einfach einen Befehl die Kette 
durchschicken und hoch-/runterzählen. Der Loader hat den Vorteil, dass 
man bei Bedarf sogar ein Upgrade der fertigen Boards machen kann (indem 
man einen unbestückten Upgrade-Header vorsieht).

von Michael_ (Gast)


Bewertung
0 lesenswert
nicht lesenswert
FertigerKenner schrieb:
> 10.000-de ist eine "kleine" Stückzahl und rechtfertigt nicht den Aufbau
> einer komplexen Fertigungslinie mit massiver Parallelprogrammierung.

Für dich nicht. Aber bei einer Anfrage eines Zulieferers rennen die dir 
die Bude ein mit goldenen Kugelschreibern.
Die bieten aber auch Programmierservice an. Für deren Preis kann man es 
nicht selbst machen.
Den Fertiger würde ich das nicht machen lassen.

von Markus W. (Firma: guloshop.de) (m-w)


Bewertung
0 lesenswert
nicht lesenswert
Mal eine (vielleicht dumme) Frage:

Kann man nicht das Layout so gestalten, dass bei allen µC die Pins MOSI, 
SCK, RESET, VCC und GND untereinander verbunden sind, solang die 
einzelnen Platinen noch gemeinsam im Nutzen hängen?

Dann müsste man mit einem einzigen Programmer (und einem anständigen 
Bustreiber) alle µC gemeinsam programmieren können. Ganz langsam 
natürlich, weil man ohne MISO kein Feedback hat.

von user (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Da du JTAG verwendest  kannst du die boards Verbinden, TDI -> TDO, TCK 
und TMS an alle boards. Jetzt sollten alle JTAG Teilnehmen in der JTAG 
Kette auftauchen und auch beschreibbar sein.

von Max D. (max_d)


Bewertung
0 lesenswert
nicht lesenswert
JTAG wird das Prob haben, dass sein Progger keine 200 Devices 
gleichzeitig programmieren wird (u.a. weil er ja 200 TCKs rel. schnell 
treiben müsste). Mit einem Bootloader wo die Daten durch die Chain 
laufen hat er das Prob nicht, weil jedes Device sich selbst 
programmiert. Ausserdem muss der Progger so nur ein Device (das am 
Anfang) mit den rel. hochfrequenten Daten beschicken. Der Enable-Pin 
darf ja ein paar zig ms reaktionszeit haben ohne das die Welt untergeht. 
Ausserdem braucht der Loader so nur 3 Datenleitungen pro Board statt der 
4 von JTAG. Und ne UART hat jeder 0815 µC ja onboard. Er muss halt nur 
die ein/zwei kb space vom loader erübrigen können (sollte aber bei den 
10.000den noch kein so großer Preisunterschied sein)....

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.