-         

Ergebnis 1 bis 4 von 4

Thema: Mehrere ATMEL parallel programmieren

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    12.08.2008
    Ort
    Hamburg
    Beiträge
    6

    Mehrere ATMEL parallel programmieren

    Anzeige

    Meine bisherige Recherche zum Thema brachte widersprüchliche Aussagen zu Tage. Aber vielleicht hat von Euch einer *reale* Erfahrung damit?

    Ich möchte auf einer Platine 14 identische Controller, vorzugsweise ATmega44 einsetzen.
    Alle sollen ein 100% identisches Programm erhalten.

    Wäre toll, alle gleichzeitig, am liebsten per SPI, zu flashen!
    Dachte mir, das müsste doch wohl gehen, wenn ich:

    - Alle MOSI-Pins zusammenschalte
    - Alle SCK-Pins zusammenschalte
    - Aber nur von einem Controller den MISO zum Programmiergerät führe.

    Weiß einer, ob das geht?

    Habe mal von einem ATMEL per Logic-Analyzer das SPI Protokoll angeschaut. Im Grunde verstehe ich nicht, warum das bidirektional ist.

    Sieht aus, als würde _meistens_ aus dem MISO nach 8 Takten das selbe herauspurzeln, was vorher per MOSI hineingeschrieben wurde.
    Aber oft eben auch nicht, da erscheint was anderes am MISO!?! Warum?
    Muss zugeben, dass ich bisher aus den Datenblättern nicht recht schlau wurde in dieser Beziehung.

    Hat von Euch schon mal jemand wirklich real mehrere identische Controller in der Schaltung gleichzeitig programmiert?

    Beste Grüße
    Realisator

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.07.2004
    Ort
    Südhessen
    Beiträge
    1.312
    MISO ist nicht bidirektional.
    Ich habe einen Umsetzer geschrieben, der die 5V-ISP-Signale auf eine 3V3-Zielplatform "übersetzt". Und ich habe bei den Hinleitungen (also MOSI, SCK, RESET) einfach einen Spannungsteiler gemacht und bei der Rückleitung (MISO) eine total billige Transistor-Verstärkerschaltung.
    Ergebnis ist logischerweise, dass MISO nur noch in eine Richtung geht.
    Und was soll ich sagen? Es geht einwandfrei - ohne jede Einschränkung.

    Aber ich denke nicht, dass es bei Dir so einfach ist. Denn wenn ein Atmel ein Problem hat, kriegt das der Master nichmal mit.

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Also wenn man die AVRs nacheinender anklemmt, dann geht es gut mit PonyProg und der einegbauten Scriptingfunktion.
    Da reichts dann den Nächsten anzuklemmen und STRG-I zu drücken.
    Die Fuses und soweiter kann man direkt auch mit stellen.

    Für dein Problem könnte ich mir verschiedene Lösungsansätze vorstellen:
    - VCC zum Proggen per Jumperleiste deaktivieren und mit nem Mehrstufenschalter halt immer weiterschalten.
    - Zusätzlichen AVR als Prog-Master umfunktionieren um den Schalter zu ersetzen - der AVR bekommt das HEX eingepflanzt und proggt alle nacheinander.
    - Einen Bootloader so modifizieren, dass alle gleichzeitig per UART geflash werden. Weiß aber nicht, ob man das so gut umsetzen kann - auch wegen der elektrischen Eigenschaften der UART. Ggfs. auch hier alle nacheinander flashen, das geht per UART ja rasend schnell im Gegensatz zu PonyProg.

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Kandel
    Alter
    29
    Beiträge
    1.220
    SPI verwendet per Definition keine einzige Leitung bidirektional.
    Und wenn du dir mal in dem Datasheet eines AVR deiner Wahl nachsiehst, wirst du feststellen, dass die Daten die da zurückkommen nicht immer die versendeten sind - und dass diese Informationen für gewisse Zwecke benötigt werden.

    Theoretisch könntest du das so anschließen wie du es erwähnt hast, allerdings können dir auch noch Hässlichkeiten wie Leitungsreflektionen etc. dabei die Suppe versalzen - dieses Feld überlasse ich aber lieber versierteren Forumsmitgliedern.
    Außerdem hat der Ausgangstreiber deines Programmers auch eine Leistungsgrenze, ob du an die stößt, weiß ich aber nicht.

    Auf jeden Fall verlierst du damit aber eine gewisse Schutzfunktionalität, die das Protokoll nicht umsonst vorsieht.

    mfG
    Markus

    PS: Eine weitere Quelle zu diesem Thema: Die AN910
    PPS: Die Idee mit dem Bootloader finde ich ganz nett, ich würde sogar so weit gehen, die AVRs ringförmig zusammenzuschließen und dann mittels einem eigene Protokoll die Daten von AVR zu AVR weiterleiten - sollte ein Fehler auftreten, müssen halt alle unterbrechen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •