Inline Programmierung über ICSP und SPI-FRAM

Hallo!

Mittels UNO habe ich ein Projekt inkl. Hardware entwickelt, was ich auch erfolgreich auf eine eigene Platine portieren konnte. Auf der Platine sitzt ein ATmega328P mit separatem Quarz, den ich über eine ICSP-Schnittstelle auf der Platine und einen USBICSP-Programmer aus der Arduino-Umgebung heraus programmieren kann. Das funktioniert auch einwandfrei. Die Schaltung macht was sie soll. Die ISP-Pins, MOSI, MISO und SCK werden derzeit ausschließlich für die Programmierung verwendet.

Jetzt würde ich noch gerne ein SPI-FRAM 64 kBit implementieren, das ich an anderer Stelle ohne On-board-Programmierung auch schon eingesetzt habe.

Meine Frage:
wenn das FRAM nun über die ISP-Schnittstelle angeschlossen wird, bekomme ich da Probleme mit der On-Board-Programmierung oder müsste ich das FRAM vorher abklemmen? Z. B. Spannung über Programmier-Jumper am FRAM entfernen.
Oder kommen die beiden SPI-Schnittstellen sich dabei in die Quere?

Grüße Thomas

Für solche Sachen ist diese Schnittstelle ja gebaut.
Wenn du unterschiedliche CS-Pins verwendest, sollten keine Probleme auftreten.

Da heißt es SPI. Der Programmeingang ist ISP.

Bitte lasse mich zwecks Unterscheidung etwas pingelig sein:

  • SPI: MOSI, MISO, SCK und CS als Schnittstelle zu externer Hardware wie FRAM.
  • ISP: MOSI, MISO, SCK und RST als Programmierschnittstelle.

Ob es Zufall ist, daß die SPI-Pins auch für ISP genutzt werden, entzieht sich leider meiner Kenntnis.

Solange CS vom FRAM nicht aktiviert wird, sollten die FRAM-Pins hochohmig sein. Leider gibt es Bauteile wie Displays, die sich nicht an die Bus-Vorschriften von SPI halten. Bei denen könnten Probleme auftauchen.

Using the ATmega328P standalone

Arduino Uno als Progarmmierschnittstelle mit diesen informativen Abbildungen:

Würdest Du RST als CS-Pin bezeichnen?

Da war ich wohl etwas voreilig.
Bei ISP braucht es den CS nicht. Somit sehe ich da keine Probleme.
Außer die von dir genannten Fehler, die leider auch bei einigen SD-Readern vorhanden sind.

Kann man (fast) tun, bzw. so sehen.
Hat zumindest die gleiche Funktion.
/Reset macht den AVR zum SPI Slave.

Nein, es braucht nur einen Pullup an /CS damit sich das nicht in die Quere kommt.

Danke für die zahlreichen Antworten.
Ja, ihr habt natürlich recht. SPI-Schnittstelle meinte ich. Hier bin ich mit ICSP (In-Curcuit-Serial-Programming) sprachlich durcheinander geraten. In beiden Fällen wird natürlich die SPI-Schnittstelle genutzt. Bis auf den CS, der nur bei Zugriff auf das FRAM.

Zudem hatte ich den Rest-Pin in meiner Aufzählung vergessen. Den Pullup am Reset-Eingang habe ich natürlich.

Beim Programmieren: MISO, MOSI, SCK, RST
Bei Zugriff auf das FRAM: MISO, MOSI, SCK, CS

Damit sollte das eigentlich klar sein. Pullup sicherheitshalber auch an Ausgang CS (neg. Logik), damit das FRAM nicht bei Programmierung versehentlich aktiv wird.

Irgendwie stand ich mir hier selbst im Weg. Aber gut, daß ihr mir auf die Sprünge geholfen habe.

Danke

Grüße Thomas

Ja, nur ein Buchstabe, aber "Reset-Pin" meinst Du.

Wenn Du eine der Antworten als Lösung markierst, wird das Thema in der Übersicht als gelöst angezeigt. Wäre nett :slightly_smiling_face:

Hallo,

was heißt hier "auch"? Du brauchst nur einen Einzigen Pullup am CS Eingang am FRAM. Die CS Leitung am FRAM gibt es genau einmal.

"Auch" bezog sich auf Pullup am Reset-Eingang und dann auch am CS-Eingang.

Und Reset natürlich mit e zwischen s und t. Aber das sind alles Kleinigkeiten. Was ich wissen wollte weiß ich nun.

Jetzt versuche ich noch das ganze als gelöst zu markieren.

Danke nochmal.

Grüße Thomas

Danke, Du warst erfolgreich :slightly_smiling_face: