www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit ext. EEPROM


Autor: Steffen Graap (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich versuche mit einem MEGA128 zwei EEPROM's M24512 und eine Uhr PCF8563 
über den Hardware-I²C-Bus anzusprechen. Die Uhr läßt sich lesen und 
beschreiben. Der EEProm läßt sich nur auslesen, jegliche Schreibversuche 
scheitern. Die Daten werden richtig zum EEPROM hin übertragen und auch 
vom EEPROM bestätigt. Wenn ich ihn aber danach auslese steht wieder nur 
0xFF drinn. Der WC-Pin liegt auf GND. Kann mir bitte jemand ein paar 
Tips geben, was ich oder der EEPROM falsch mache.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du mußt erst die 2 Adreßbytes schreiben, erst das 3. und folgende sind 
dann die Datenbytes.

Schreiben erfolgt aber erst, wenn Du ein Stop gesendet hast.

D.h. wenn Du schon die Daten übertragen hast und es Dir doch anders 
überlegst, brauchst Du nur statt des Stop ein neues Start zu senden und 
es erfolgt nichts.

Daß das Schreiben erfolgt merkst Du auch daran, daß nach dem Stop der 
EEPROM für etwa 5..10ms nicht ansprechbar ist, d.h. auf seine Adresse 
kriegst Du kein ACK zurück.


Peter

P.S.:
Als Single-Master ist Software-I2C aber einfacher als Hardware-I2C.

Autor: Steffen Graap (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hatte alles richtig, bis auf das Stop. Das wurde nicht übertragen, und 
somit wurde auch nichts gespeichert.

zum Thema Software- HardwreI2C
ich hatte früher schon die Sowftware-I2C von Pavel (CodeVision)benutzt, 
funktionierte zwar, war aber viel zu langsam. Das Programm wartete immer 
auf die I2C.
Mit meiner jetzigen Hardware-I2C frage ich bei jedem 
Hauptschleifendurchlauf den Zustand der I2C ab und kann dann darauf 
reagieren. Somit kein warten auf EEProms, die noch mit schreiben 
beschäftigt sind.

Autor: Bernhard T (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steffen,
das sehe ich ganauso seit dem ich das hauptsächlich mit Switch TWSR¦0xF8 
und ner case Reihe abarbeiten lasse, finde ich die TWI echt einfach 
praktisch einfach.
Gruß Bernhard

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Steffen,

"Das Programm wartete immer auf die I2C"

Das hat aber nichts mit Hard- oder Soft-I2C zu tun, sondern mit dem 
Programmierstil.

Du kannst genau so gut die 10ms mit der Hardware-I2C vergeuden.

Bzw. Du kannst die Soft-I2C-Schreibroutine nach dem Stop sofort 
verlassen und was anderes tun. Und dann erst nach 10ms wieder 
vorbeischauen, oder ab und zu auf das ACK pollen.


Das ist ja der Trick bei den MCs:

Sie arbeiteten alles in der Hauptschleife ab und trotzdem erscheint es, 
als machen sie vieles gleichzeitig, also Multitasking.

Einzige Bedingung:
Jede Task hört sofort auf, wenn sie mal länger auf etwas warten muß, 
merkt sich, wo sie das nächste Mal weitermachen muß und geht zur 
Hauptschleife zurück.

Nur kurze Verzögerungen, wie z.B. die 60µs beim 1-Wire muß man 
verwarten, aber 60µs sind ja für den Menschen betrachtet keine merkbare 
Zeit.


Wenn man das nicht beachtet, dann hilft auch die beste Hardware nichts 
und Dein Programm wird unweigerlich schnarchlahm.


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.