mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik gesucht wird eine einfache Art einer ID-Programmierung


Autor: Nicky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

Ich sitze gerade an der theorie eines projektes, bei dem ich gleich 
einmal auf ein problem stosse.

ich möchte ein system aufbauen, dass mehrere komponenten über einen bus 
(ich denke es wird nen RS485 / 422) miteinander koppelt. in jedem gerät 
befindet sich ein µC (Atmel) der nachrichten von anderen teilnehmer 
empfangen und ggf. auch antworten kann.

nunm uss ich hierfür jeden gerät (µC) eine ID verpassen. bis dahin erst 
einmal kein problem.

nun stellt sich mir die frage, wie ich diese ID in jeden µC hinein 
bekomme. bisher habe ich solch eine ID mit in den FLASH geschrieben oder 
den EEPROM bemüht.
beim FLASH habe ich aber durch die logisch immer andere ID das problem, 
dass ich bei jedem µC im Code den wert der ID ändern und dann neu 
compilieren muss. beim EEPROM sieht es da nicht anders aus, EEPROM-Datei 
nehmen, Wert der ID ändern, Intel-HEX Prüfsumme berechnen, speichern und 
dann ab in den µC damit.

genau diese prozeduren sind mir zu lästig, sind zwar bei 5 oder 10 Stk 
noch nicht wirklich zeitraubend, aber man sucht ja immer nach wegen es 
besser zu machen.

gegenwärtig programmiere ich überwiegend in assembler und verwende das 
AVR-Studio. hierüber programmiere ich dann auch die controller.

nun die frage an die experten unter euch:

gibt es eine einfachere variante, als die oben beschriebene, um die 
controller zu programmieren und gleichzeitig eine ID mit zu verpassen, 
oder muss ich auch weiterhin o.g. umständliche prozedur verwenden?

ich denke dabei an arbeiten mit comandozeile (die ich noch nie verwendet 
habe und somit auch keinen plan zu parametern habe) oder gibts was 
effektiveres?

für das stressen der hirnzellen ;-), danke ich euch schonmal im voraus.

viele grüße

nicky

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Nicky (Gast)

>bekomme. bisher habe ich solch eine ID mit in den FLASH geschrieben oder
>den EEPROM bemüht.

>nehmen, Wert der ID ändern, Intel-HEX Prüfsumme berechnen, speichern und
>dann ab in den µC damit.

AFAIK konnte das alte AVRISP eben genau das automatisch. Man musste nur 
eine Adresse angeben wo die ID reinsoll und es wurde nach jedem 
Programmierzyklus der Zähler eins hochgezählt. Gibts die Funktion noch 
im neuen AVR-Studio? (Kann ich nicht testen, ich hab nur 4 Widerstände 
am Parallelport und SP12 ;-)

MFG
Falk

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mäuseklavier an freie Port-Pins? Per Software & USART einstellbare ID? 
Ins Makefile übernehmen (s. 
Beitrag "build-Nummer beim kompilieren erzeugen (WinAVR)")?

Autor: Tubie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Nicky,

evtl. könnte man als Basis (Auslieferungszustand) die ID:0 annehmen und 
bei inbetriebnahme alle Geräte nacheinander anklemmen und dann über den 
Bus ein Commando zum wechseln der ID vergeben. Diese wird dann im EEProm 
gespeichert. Ein kleiner Taster oder Jumper auf der Schaltung könnte 
diese ID dann im Fehlerfall wieder auf 0 zurücksetzen, sodass eine neue 
ID vergabe möglich ist. Kann ja mal falsch eingegeben sein ;)

Gruß,
Tubie

Autor: Nicky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@micha

Mäuseklavier an freie Port-Pins? Per Software & USART einstellbare ID?
Ins Makefile übernehmen (s.
Beitrag "build-Nummer beim kompilieren erzeugen (WinAVR)")?


hmm,
also per mäuseklavier, find ich nicht wirklich schick, denn das ding 
nimmt nur platz weg, genau wie jumper.

per usart und software, sowas habe ich auch schon gemacht, aber dann 
muss ich jedes gerät wieder selber programmieren, denn wenn ich das mit 
mehreren gleichzeitig mache, übernehmen ja alle diese ID.

ins makefile????? guck ich gleich mal, ob ich schlau draus werde, danke

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.xs4all.nl/~sbolt/e-spider_prog.html#programmer

SP12 kann einzelne Adressen schreiben und lesen, alles per 
Kommandozeile.

MFG
Falk

Autor: Tubie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... oder noch einfacher,

einen Taster, der, wenn er gedrückt ist eine ID änderung zulässt. Diese 
Änderung wird auf den Bus geworfen und das Gerät, dessen Taste gedrückt 
ist fängt die Meldung ab und ändert seine ID...

gruß,
Tubie

Autor: Nicky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Tubie,

genau da hab ich ja wieder das, was ich nicht möchte, dass ich später 
egal wie, an jeden gerät irgend etwas machen muss. diese variante habe 
ich schon per software und usart gemacht.

wie gesagt, der controller soll einsatzbereit sein, wenn ich die 
programmiereung des FLASH abgeschlossen habe, und das ohne nachträglich 
programmierung, konfiguration oder wie auch immer.

aber trotzdem danke

Autor: Hagen Re (hagen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann muß schon vor der Programmierung eine ID vorhanden sein. Zb. eine 
Hardware ID mit einem Serialnumber Chip von Dallas Maxim.

Gruß Hagen

Autor: Chrisi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du eine hierarchische Busstruktur >hättest< könnten sich die 
Busteilnehmer automatisch selber durchnummerieren, aber so... ich finde 
das Patchen der finalen hex-datei mit jedem Programmiervorgang cool. Ist 
auch nicht sooo aufwendig.

Autor: nicky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

vielen Dank für eure Tip und Ideen!

@Hagen
hast du schon mal etwas mit diesen serialnumber chips gemacht?

viele grüße

nicky

Autor: Hagen Re (hagen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nö, ich würde es in Software machen und damit leben müssen das das 
Flashen des Programmes eben serialisiert werden muß.

Falls ich also jemals eine Großserie bauen müsste dann gäbe es ein 
spezielles Brenngerät das das erledigt. Dieses Gerät würde auch einen 
Funktionstest der Produkte beinhalten.

Aber deine Forderung besagt eben das du nichts an der Software 
serialisieren möchtest also bleibt nur noch die Hardware übrig, logisch 
oder.
Dallas bietet diese Teile mit ganz unterschiedlichem Interface an, 
meistens 1-Wire. Also nimmst du einen der vielen 1-Wire-Master Sources, 
baust so einen Seriennummern Chip mit auf's Board und liest ihn aus. So 
kompliziert ist das nicht.

Es gibt aber auch viele MCU zb. ARM7/9 Reihe verschiedener Hersteller 
die ebenfalls ihre Chips in der Produktion serialisieren. Viele der 
großen ARMs enthalten sogar Crypto-IP-Cores, die benötigen meistens 
immer eine Serialnummer bzw. vorgefertigte Passwörter. Eventuell also 
die MCU wechseln.

Gruß Hagen

Autor: nicky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo hagen,

vielen dank für deine ausführungen. wie gesagt, es geht hier nicht um 
die riesen serie (dann würd ich mir eh was anderes ausdenken, oder das 
an eine firma weitergeben, die eh schon die hardware haben und die 
software vor dem bestücken komplett drauf spielen), sondern wirklich nur 
darum was neues zu erkunden. es hätte ja sein können, dass es hierfür 
schon funktionen oder einfache tools gibt, mit denen man sich dann eben 
halt mal beschäftigt.

fazit: solange es eben nur mal um 20 controllerprogrammierungen geht, 
werde ich wohl neu compilieren und flashen müssen. die variante, jedes 
gerät im nach hinein einzeln zu konfigurieren, hab ich schon durch und 
ist dann doch mehr arbeit als im code mal schnell die ID zu ändern und 3 
buttons zu klicken ;-)

nochmals vielen dank und schönes we

PS: die seriennummer chips hatte ich schon einmal im visier, aber wegen 
nicht verwendung glatt wieder aus dem sinn verloren.

Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum nich per Jumper / DIP-Schalter oder direkt durch 
Beschaltung/Nichtbeschaltung von Ports? (Wenn du den notwendigen Platz 
und freie Ports hast)

Autor: pripri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht nen Analogeingang nehmen, mußt dann nur beim Bestücken einen 
Widestand ändern. Nimmt kaum Platz weg.

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.