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 

 Re: EPROM-Speichermodul optimiertes Beispiel? Kategorie: C-Control I V1.2/2.0 (von Carsten - 17.09.2004 15:43)
 Als Antwort auf EPROM-Speichermodul optimiertes Beispiel? von Carsten - 15.09.2004 14:52
Also - da keiner Beispiele hatte - hab ich hab mich jetzt doch selbst an die Optimierung gemacht. Erstmal habe ich einen Schreck gekriegt, weil ich dachte, auf der Platine ist der Schaltkreis drauf, der im Schaltplan zum Modul steht (24AA256P; der hätte nur 32KB) - glücklicherweise ist aber ein "richtigerer" 24LC512 drauf.

Die Ergebnisse falls es jemanden interessiert:

Den im Beispiel IIC_DATENSPEICHER_1.bas verwendeten Programmteil #WAITREADY / #CHECK_ERROR kann man komplett ersetzen gegen eine "zeitvertreibende" Schleife:

for i=1 to 40
next

(ab einem Schleifenendwert von 36 hat es bei mir sicher funktioniert, 10% drauf aus Vorsicht) - diese veränderte EPROM-Schreibroutine ist schon wesentlich schneller. Die im Beispiel dargestellte Verfahrensweise ist die "ordentlichere", weil sie genau wie vom Chiphersteller beschrieben arbeitet, hat aber den (Zeit)-Nachteil, daß sie immer zwischen Config- und IIC-Modul umschalten muß.

Wer es noch schneller haben will, kann den EPROM im sogenannten "PAGE WRITE" beschreiben START -> Adresse anlegen -> PUT, PUT, PUT, ... STOP). Man muß aber beachten, daß dies nur max. 128 Byte-weise geht und außerdem nur ab Adressen, die ein Vielfaches von 128 sind. Es gibt auch einen sequenziellen READ-Modus. Ganz genau steht alles im Datenblatt vom MicroChip, z.B. im Internet, Datei 21754E.pdf

Gruß Carsten


> Hallo allerseits,
>
> Für das EPROM-Speichermodul gibt es ein funktionierendes Beispiel (IIC_DATENSPEICHER_1.bas). Darin ist vermerkt, daß man das auch optimieren kann, nur leider nicht WIE :-)
>
> Dazu brauchte man wohl eine Beschreibung vom IIC-Protokoll, aber evtl. hat auch jemand ein optimiertes Beispiel, um etwa (ohne daß das Programm zwischendurch etwas Anderes macht) 1000 Byte zu lesen bzw. zu scheiben? Müssen alle im Beispiel angegebenen STOP/START-Kombinationen sein? Und - kann man sich das "check_error" - Unterprogramm durch ein paar "zeitvertreibende" dummy-Befehle nach dem Schreiben sparen? (ist ja kein Microsoft-System - da weiß man vor lauter Events nie genau wann es soweit ist :-)
>
> Danke für jeden Tip..
>
> Carsten

 Antwort schreiben

Bisherige Antworten: