Der Nachfolger des WDR-Computerclub mit Wolfgang Back und Wolfgang Rudolph - ...und immer ein Bit übrigbehalten!


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 M-Unit , primären Speicher "Off-Board" legen Kategorie: Hardware (von das |_ Team - 4.09.2014 2:27)
das |_ Team nutzt:  CC1-Unit V1.1, CC1-M-Unit V1.1, CC1-Station V1.1, Advanced CC1-Unit, Open-Micro, Open-Mini, Open-Midi, Open-Macro, Open-Maxi, Open-Mini M-Unit, Open-Mini Station
Programme in einen extern angeschlossenen I2C-Speicher laden und ausführen (Hardwarelösung)


Dieser Beitrag beschreibt wie der primäre On-Board Speicher auf der Platine eines M-Unit Steckmoduls deaktiviert und dessen Funktion durch einen von aussen via Pfostenleiste angeschlossenen "Off-Board" I2C Speicher ersetzt wird.

Sinnvoll ist die Deaktivierung des 24LC65 On-Board Speichers hauptsächlich wenn dieser keine neuen Programme mehr annimmt - z.B. nachdem die permanente Schreibschutzfunktion des 24LC65 versehentlich ausgelöst wurde.

An sich wäre dann der komplette Neutausch des schreibgeschützten 24LC65 EEPROM vorzuziehen. Dies ist aber aufwändig denn die notwendigen Lötarbeiten erfordern Sub-Millimeter Präzision und  entsprechendes Werkzeug.

Daher kann die nachfolgend beschriebene Methode von Vorteil sein. Sie ist auch anwendbar wenn als Ersatzteil nur ein EEPROM im PDIP-8 Gehäuse vorhanden ist, für das auf dem M-Unit Steckmodul nicht genügend freie Fläche bleibt. Zur Montage des neuen primären "Off-Board" Speicher sollte eine Steckfassung vorgesehen werden. Dadurch können zukünftige Erweiterungen, die über den I2C  Steckplatz erfolgen, unkompliziert nachgerüstet werden.



Bild 1: Beispiel eines primären "Off-Board" Programmspeicher mit M-Unit I 1.1



Es werden 4 Leitungen benötigt um den primären "Off-Board" Speicher mit den Pfostensteckern des M-Unit Steckmoduls zu verbinden. Die Leitungen sollten möglichst kurz sein um Ein- bzw. Auskopplung von Störsignalen zu vermeiden.

Bild 2: primärer "Off-Board" Programmspeicher - Ansicht 2

 


Folgende Spannungen und Signale werden benötigt:



  +5V = Leitung zur (+) Seite der Versorgungsspannung = 5,0 Volt
  GND = Leitung zur (-) Seite der Versorgungsspannung =   0 Volt
  SCL = Taktleitung für Synchronisation der Busteilnehmer
  SDA = Datenleitung für Übertragung von und zu den Busteilnehmern.

Der Anschluss des neuen primären Speicher-IC ist simpel:

Pin 8 wird mit der +5V Versorgungsspannung verbunden
Pin 7 kann frei bleiben
Pin 6 wird mit SCL verbunden
Pin 5 wird mit SDA verbunden
Pin 4 wird mit (-) Seite (GND) der Versorungsspannung verbunden
'
Pin 3 ist ein Adresspin und mit GND verbunden  \
Pin 2 ist ein Adresspin und mit GND verbunden   -> ergibt benötigte
Pin 1 ist ein Adresspin und mit GND verbunden  /   Primäradresse 160





   +---------------------------------- zur Pfostenleiste M-Unit (GND) ---->
   |
   |
   |   Dies ist der neue "Off-Board" Speicher, z.B. ein 24C512 mit 64 KiB
   |     _____    _____
   |    |     \__/     |
   +--1[  A0       Vcc  ]8 --+------- zur Pfostenleiste M-Unit (5,0 Volt) -->
   |    |    24C512    |     /<-|
   +--2[  A1        WP  ]7 --+  VCC=Schreibschutz-EIN, GND(oder NC)=AUS
   |    |    64 KiB    |
   +--3[  A2       SCL  ]6 -------- zur Pfostenleiste M-Unit (SCL) -->
   |    |              |
   +--4[  Vss      SDA  ]5 -------- zur Pfostenleiste M-Unit (SDA) -->
        |______________|





Bild 3: primärer "Off-Board" Programmspeicher - Ansicht 3

 


Bild 4: primärer "Off-Board" Programmspeicher - Ansicht 4

 
 
 


Können andere EEPROM Typen als der 24LC65 verwendet werden?



Folgende EEPROM-Typen hat  das |_ Team  bisher erfolgreich getestet:

 Bezeichnung   Speicherkapazität
 ===============================

      24C64     8 KiB (auf einer Teilmenge serienmäßiger C-Control bestückt)
      24C128   16 KiB
      24C256   32 KiB (mit Aufdruck ATML U950, oder auch als Chipkarte)
      24C512   64 KiB (oder auch als Chipkarte)
ATMEL 24C1024 128 KiB (64 KiB für Programme und Daten + 64 KiB nur für Daten)




Leider nicht erfolgreich waren unsere Tests mit je einem Exemplar des 24LC1025 sowie 24AA1025 (je 128 KiB, im PDIP-8 Gehäuse, vom Hersteller Microchip).  Diese Typen und vermutlich auch deren Ausführungen im SMD Gehäuse scheinen als neuer primärer Programmspeicher für C-Control I 1.1 nicht geeignet zu sein. Es kam stets zum "Aufhängen" des Systems kurz nach dem Starten der jeweiligen Testprogramme.

Für die 24C1026 und 24AA1026 (128 KiB, ebenfalls von Microchip) liegen uns noch keine Erfahrungen vor.



Nicht vergessen: Die Deaktivierung des alten On-Board Speichers


Bevor der neue primäre "Off-Board" Speicher endlich in Betrieb gehen kann muss der alte On-Board Speicherchip entweder umadressiert oder ganz deaktiviert werden, damit es nicht zur Adresskollision kommt. Leider nützt es nichts die Adresse des neuen und gut zugänglichen "Off-Board" Speicher zu verändern, denn das C-Control I 1.1 Betriebssystem setzt für den Programmspeicher stets die Basisadresse 160 voraus. In diesem Beitrag bezieht sich der Zusatz 'primär' daher auf genau einen von ggf. mehreren gleichzeitig am I2C Bus betriebsbereiten I2C Speicherchips: Nämlich denjenigen mit der Basisadresse 160.

Unter [1] haben wir eine mögliche Variante beschrieben einen versehentlich schreibgeschützten 24LC65 mit alternativer Adresse zu versehen. Dies hat zwar den Vorteil dass mithilfe eines in den Primärspeicher zu ladenen Programms noch lesend auf den 24LC65 zugegriffen werden kann - allerdings sind die erforderlichen Vorarbeiten dafür fast so aufwendig, wie der komplette Neutausch des 24LC65 es wäre.

Daher stellt sich in diesen Fällen wohl die Frage ob nicht grundsätzlich ein neuer Speicher-Chip eingelötet werden sollte wenn entsprechendes Werkzeug und die Zeit zur Verfügung steht.



Einfache und vollständige Deaktivierung des On-Board Programmspeichers


Wir haben uns überlegt was eigentlich geschieht wenn man einfach dem alten On-Board EEPROM "den Saft abdreht" ohne die restlichen Anschlüsse zu kappen. Dazu müsste lediglich  ein Pin mit leicht beschaffbarem Werkzeug aufgetrennt werden.

Aber geht das überhaupt so einfach? Muss dieser Speicherchip nicht ständig mit der Versorgungsspannung +5V an VCC verbunden bleiben, solange auch SCL und SDA mit dem I2C Pegeln beaufschlagt werden - und wie verhalten sich eigentlich die internen Schaltungen des EEPROM falls nur VCC nicht verbunden ist?


Ehrlich gesagt, wir wussten nicht ob es funktioniert. Auch im Datenblatt zum 24LC65 haben wir keine Antwort auf diese spezielle Frage gefunden. Deshalb haben wir es ausprobiert:



Bild 5: On-Board Speicher 24LC65, im Kreismittelpunkt aufgetrennte Verbindung zwischen Pin nr.8 und VCC.

 


Es wird lediglich VCC an Pin Nr.8 unterbrochen. Dazu kann eine spitze Nagelschere verwendet werden, wenn kein Spezialwerkzeug vorhanden ist. Besser ist natürlich eine sehr feine Elektronikzange geeignet.

<b>
==============================
Achtung - Schutzbrille tragen!
==============================
</b>


Beim Trennen der relativ spröden Anschlusspins nebst Lötmaterial können Metallsplitter mit hoher Geschwindigkeit davon geschleudert werden. Auch könnte die Nagelschere beim Schneiden des Metalls Schaden nehmen.

Weiter ist zu bedenken dass mit einer Schere, wie der Name aussagt, starke Scherkräfte an der Trennstelle erzeugt werden. In unserem Anwendungsfall können diese leicht auf das darunter befindliche Landpad übertragen werden, wodurch dieses im ungüstigen Fall komplett abreissen kann.

Tipp:

Um Abreissen der Landpads zu verhindern kann ein Schraubendreher mit gerader Klinge auf den unteren Teil des zu trennenden Pins, nahe der Platine, gedrückt werden um diesen gegen die auftretenden Kräfte zu stabilisieren.


Bild 6: In Mitleidenschaft geratenes Landpad aus einem anderen Projekt






Sofort nach dem Trennen des VCC Pin entfernen wir die Überreste des Pins und evt. abgeplatztes Lötmaterial bevor sich diese zwischen die umliegenden Anschlusspins oder unter den 52-poligen Prozessorchip verkrümeln. Letzteres wäre sehr unangenehm und wenn demnächst bei Schaltaufgaben immer 2 Ports gemeinsame Sache machen kann man sich schon mal überlegen wie man sie da wieder heraus bekommt.

Anschliessend wird der neue primäre "Off-Board" Speicher und der  M-Unit Programmieradapter angeschlossen. Nun kann erstmalig nach dem Umbau oder Schreibschutz-Malheur des 24LC65 wieder ein neues Programm zum Mikrokontroller hochgeladen werden.

Wir haben uns für "|_-E2TEST" entschieden, unser EEPROM-Testprogramm für C-Control I 1.1, das wir in einem früheren Beitrag schon kurz erwähnt haben [2].

Um den Testzyklus zu beschleunigen haben wir ausserdem die C-Control CPU mit 10 MHz Takt laufen lassen, also einen 20 MHz Quarz angeschlossen. Dadurch erhöht sich auch der I2C Bustakt, wodurch evt. Probleme die durch das mittels VCC-Unterbrechung deaktivierte On-Board 24LC65 eventuell bestehen würden sich eher bemerkbar machen. Ausserdem ergibt sich für die Kommunikation mit der Seriellen Schnittstelle die ungewöhnliche Baudrate von (9615 * 5 =) 48075 baud.

Deshalb ist ein geeignetes USB-nach Seriell Adapterkaebel erforderlich um die Ausgaben des |_-E2TEST Programms im Terminal zu betrachten. Nicht alle Adapterkabel sind geeignet. Wir haben ein FTDI-basiertes Kabel mit seinem Treiberpaket für Windows-XP verwendet.

Das Ergebnis zur Fragestellung

Kurz gesagt, es reicht das On-Board 24LC65 EEPROM durch alleinige Unterbrechung dessen VCC Leitung logisch vollständig vom I2C-Bus zu trennen, wobei die verbleibenden Anschlusspins weiterhin elektrisch mit der Schaltung verbunden bleiben. Die jetzt freie Primäradresse 160 und damit das vom C-Control abzuarbeitende Userprogramm kann anschliessend dem neuen primären "Off-Board" Speicher übertragen werden.



Bild 7: Listenausgabe von |_-E2TEST  


   

Wie man sieht arbeitet der primäre "Off-Board" Speicher noch bei 5-facher Taktfrequenz des C-Control I 1.1 fehlerfrei. (Die Zeilen "64 Bytes Page-Write-Bereich..." sind keine Fehlermeldungen.) Die Listenausgabe gehört zu einem 24C256 mit 32 KiB. Am selben I2C-Bus befindet sich der mittels VCC deaktivierte 24LC65. Es wurden keinerlei Schreib- oder Lesefehler gemeldet.


Wir hoffen dieser Beitrag ist hilfreich und freuen uns über Feedback.


das |_ Team





[1]  http://ccintern.dharlos.de/forum/lesen.php?eintrag=16217
[2]  http://ccintern.dharlos.de/forum/lesen.php?eintrag=16181

     Projekte von  das |_ Team:

     http://visit.ghn-sensorik.de/L-Team/





Für Aufmerksame: Einige Bilder entstanden nachträglich und zeigen das M-Unit Steckmodul bereits bestückt mit einem neuen Speichertyp in F-RAM-Technologie. Dieser Umbau soll Thema eines zukünftigen Beitrags werden. Es ist also nicht immer der dem Text zugrunde liegende 24LC65 auf den Bildern zu sehen

 Antwort schreiben

Bisherige Antworten: