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?
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.
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.
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.