Hi! Ist I2C Speicher eigentlich HotSwap fähig? Ich suche eine Möglichkeit einen Speicher (Möglichst billig und klein, deswegen I2C eeprom) im Betrieb an einen uC zu hängen und wieder zu entfernen. ciao hmann
Jo, ist er, solange eben nicht während einer Transmission der Chip entfernt oder eingebunden wird, bzw. genauer gesagt der I2C Bus inaktiv ist. Ich selber habe dies schon beim Entwickeln gemacht. gruß Hagen
Hi, aber kann das in einem ganz dummen Fall nicht passieren, daß zufällig eine Startbedingung gesendet wird und somit alles durcheinander ist? Und wenn's erst beim 100. mal einstecken passiert? Sebastian
Jo natürlich, deshalb meinte ich ja das man sicherstellen muß das der I2C Bus beim Umstecken keine Aktivitäten hat. Solange nichts auf dem I2C Bus abläuft kann man am Bus selber Geräte anschließen und abtrennen, elektisch ist also der Bus dazu ohne Probleme in der Lage. Gruß Hagen
@Hmann ****** Ist I2C Speicher eigentlich HotSwap fähig? ***** Wie die anderen schon sagten eigentlich nicht. Wenn du dafür sorgen kannst das beim Wechsel die Busaktivitäten Eingestellt werden ist das aber ohne Probleme zu machen (Is auch schon gesagt worden). Eine Möglichkeit wäre es Softwaremäßig einzurichten und anzuzeigen (display,LED oder sonstwie) das gewechselt werden kann. Elektrisch hab ich das schon öfters gemacht und "anscheinend" (Gebe keine Garantie das es nicht doch mal Ärger gibt) vertragen es die EEProms ganz gut. Nach dem Wechseln eben zur Sicherheit eine Definierte Stopp und Startsequenz extra dann kann Busmässig nix passieren. Die Daten und Taktleitung würde ich aber dabei vorsichtshalber Entkoppeln damit sich nicht eventuell die Pegel wiedeersprechen (Nen gut Dimensionierter Widerstand sollte reichen.Probieren) (My 2 Cent als lose Gedanken)
Wenn man SDA und SCL gegen Masse zieht würde man ja den Bus abblocken, richtig ? Eventuell wäre ja ein Taster von SDA nach Masse die Lösung. Beim wechseln müsste man diesen Taster gedrückt halten. Vom Bus her müsste dies ja gehen. Ich bin mir da aber nicht so sicher. I2C EPROMS kann man damit auf alle Fälle nicht zerstören, da erst wenn die Bytes beim Schreiben komplett übertragen wurden diese auch in den Speicher geschrieben werden. Gruß Hagen
******** Wenn man SDA und SCL gegen Masse zieht würde man ja den Bus abblocken, richtig ? ******* Leider nicht Richtig denn wenn SDA vor SCL auf 0 geht hat man eine Starbedingung gegeben. Es wäre aber sehr gut wenn man die Stoppbedingung vorgibt (SDA nach SCL auf 1) um den Bustransfer für das EEProm abzuschließen (Egal wann das passiert wird die letzte begonnene Aktion dann verworfen) Ich hab mal die I2C Spezifikation von Phillips in den anhang gelegt. Istr zwar nicht gerade ein Duden und auch nicht gerade didaktisch in dieser Sache aber es wird alles angesprochen was mit der Zeit so braucht. Gruß Ratber
Nachtrag (Wann kommt endlich das neue Forum so das man Editieren kann ?) grrr :) Die Idee mit dem Taster ist natürlich nicht schlecht und mit einem simplen Monoflop oder meinentwegen auch ner Verzögerung per R/C kann man dann diesen Zustand (SDA nach SCL auf 1) dann auch erzwingen aber man hat dann keine Kontrolle mehr "was" man eventuell gerade unterbricht. Eine Softwaremäßige einbindung fände ich da sauberer und den Taster kann man ja an den Controller legen so das der Zwangsstop dennoch gegeben ist (Ok ,is käse geschrieben aber ich denke mal man versteht was ich meine) Ich habe das mal für ne Billiglichtshow (Lichtprogramm im Eeprom) so gemacht damit der Nutzer es ohne Theater und Abschalten wechseln kann. Nicht Perfekt aber geht (Solange der Komiker die Beinchen nicht knickt ggg)
Danke für die vielen Antworten. Ich denke ich werde einen Schalter an den uC hängen um den Bus beim Anschliessen des Speichers zu deaktivieren. Ist in meiner Anwendung zwar sowieso unwarscheinlich das dabei sonst noch Aktivitäten auf dem Bus stattfinden, aber man kann ja nie wissen. ciao
Hi, der EEPROM im Atmel selber reagiert doch ziemlich empfindlich auf zu wenig Spannung, Spannungsspitzzen usw, oder? Kann der Inhalt des I2C-EEPROM an sich nicht durch einen Mini-Stromschlag beim Einstecken oder so verändert werden? Das ein oder zwei Bit plötzlich spinnen und sich verstellen? Sebastian
Hi, @all Also ich hab bei mir mit Bascom mal ein kleines Programm geschrieben, welches mir 16 byte ausliest und diese auf dem Display anzeigt (auf tastendruck). Dabei hab ich das Eeprom auch schon einige Male ausgewechselt, als Spannung drauf war. Bis jetzt hat isch der Inhalt dabei noch nie verändert. Nik p.s. Ich verwende die I²C Eeproms von Microchip
Der Inhalt sollte sich nicht verändern. Damit Bytes in den EEPROM gespeichert werden muß vorher ein langwieriges Protokoll abgelaufen sein. Denn I2C EEPROM's speichern die zu schreibenden Bytes, bis zu 16 in einem Rutsch, erstmal zwischen. Erst nachdem eine gültige Stopbedingung eintraf wird der I2C EEPROM die zwischengespeicherten Daten tatsächlich in den EEPROM programmieren. Man muß ja auch bedenken das ein Schreibzyklus in einem EEPROM immer auch aus einem vorherigen Lösch-Zyklus bestehen muß. D.h. bevor man überhaupt Bytes reinschreiben kann müssen die Speicherbereiche mit 0xFF gefüllt werden. Sogesehen ist es ziemlich unwahrscheinlich das man die Daten zerstört. Gruß Hagen
@ Sebastian Das EEPROM im Atmel selbst hat kein Problem mit zu wenig Spannung. Nur kann man mit zu wenig Spannung nicht anständig schreiben. Das Problem mit zu niedriger Spannung am µC ist folgendes : Entweder man versucht mit zu wenig Spannung zu schreiben und kann sich nicht sicher sein, ob die Information richtig gespeichter ist, oder der Prozessor hat auf Grund zu kleiner Spannung Probleme mit seinem flüchtigen Speicher und interpretiert Befehle falsch, was ebenfalls zu nichtgültigen Opersationen führen kann. Wenn man ein EEPROM mit zu hoher Spannung beaufschlagt, führt dies i.A. (außer natürlich echte Hämmer, die alles zerlegen) nicht zu Problemen, es sei denn, man ist gerade beim Beschreiben, dann kann es passieren, das fälschlicherweise Informationen geschrieben werden. MfG, Khani
Hi, danke für die Infos Hagen und Khani! :-) Ich denke auch nicht, das zufällig genau die 20 Störimpulse mit dazugehörigem Taktsignal gesendet werden, um ein Bit umzuprogrammieren! ;-) Ich meinte viel mehr, ob nicht ein kleiner EM-Schock nicht direkt auf den "Kern" des EEPROMs, also direkt auf eine Bit-Speicherzelle Einfluß haben kann?!? Sebastian
Hm, das weis nur der Hersteller genau und man müsste das schon praktisch austesten. In den Datenblättern von MicroChip habe ich nichts dazu gefunden. Wie gesagt, zwei Leute her im Forum haben selber schon im laufenden Betrieb die Chips gewechselt. Ich persönlich hatte bisher keinerlei Probleme feststellen können (solange man eben nur austauscht wenn der I2C Bus inaktiv ist). Zu Testzwecken habe ich bei meinem Projekt auch mal den Chip rausgezogen wenn der I2C Bus aktiv war. Auch da gab es nach dem erneuten Lesen keine fehlerhaft geschriebenen Bytes. Natürlich waren die Bytes die er schreiben sollte nicht gespeichert wurden und der ehemalige Inhalt, der eigentlich überschrieben werden sollte, noch erhalten. Allerdings ist es schon ziemlich schwierig den exakten Zeitpunkt dieser Störmaßnahme zu bestimmen, so daß es auch zu gravierenden Fehler kommen muß. Gruß Hagen
Yo,eine Störung ist natürlich unter Umständen möglich aber wenn man mal zu starke Strahlung (Welche auch immer) und Überspannung ausschließt dann bleibt nur noch der Zufall das die Fehlerhafeten Impulse einen Schreibvorgang liefern und diese Zufall ist extreem unwarscheinlich. Wie ich oben schon sagte hab ich da ja mal den kleinen Lichterzirkus gebastelt und bis heute hab ich keine Rückmeldung über verlorene Daten erhalten. Das einzige was ich ändern mußte war die Kontaktierung da der Komiker regelmäßig die Kontakte verbogen hat. Jetzt hat er alles auf umgebauten Chipkarten die er dann auch gleich passend beschrifften kann ;) gg
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.