Das Open-Control-Projekt - Die Alternative zur C-Control-I


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: Beispielprogramm IIC_Datenspeicher Kategorie: Programmierung Basic (von Carsten - 5.10.2005 18:58)
 Als Antwort auf Beispielprogramm IIC_Datenspeicher von Benny - 5.10.2005 18:14
Carsten nutzt:  CC1-M-Unit V1.2/2.0
Hallo,

#Check_error dient dazu, zu warten bis der EEprom fertig mit Schreiben ist. Alternativ kann man auch 5 ms warten, dann ist er sicher fertig. Wenn man das nicht tut, dann werden nicht alle Werte geschrieben, und die nicht geschriebenen liest man dann als 255 oder dem Wert, der vorher in der Zelle stand.

Das mit der Kommentierung sehe ich nicht so - Entweder man ist Anfänger und benutzt den Code wie er ist - und es funktioniert so wie bei Dir. Oder man interessiert sich intensiver (z.B. um herauszufinden wie man im Page Mode wesentlich schneller auf den EEprom schreiben kann) - dann kommt man aber nicht umhin die Schaltung vom Application Board mal zu untersuchen, ein Datenblatt vom Eprom zu lesen, nachzuschauen wie das CONFIG-Register arbeitet usw. - Das alles in diesem Quelltext zu kommentieren wäre für mich nicht sinnvoll.

Gruß Carsten

>
> Hallo,
>
> ich habe eine Frage zum Beispielprogramm IIC Datenspeicher.
> Ich benutze eine meinem Programm angepaßte Version um Meßdaten
> in einem externen EEPROM abzuspeichern.
>
> Wozu dienen die Variablen  CLOCKS, MASK und COUNTER ?
> Wenn ich sie weglasse geht das Programm trotzdem.
> Wozu dient das Unterprogramm #CHECK_ERROR ?
> Wenn ich es lösche kommt zwischen meinen Meßwerten öfters eine 255.
>
> Noch eine Anmerkung an "die Hard"
> Wieso machen Sie sich die Mühe Beispielprogramme zu schreiben und
> kommentieren die dann so schlecht, daß Anfänger keinen Nutzen davon haben.
> Aber gleichzeitig beschimpft "die Hard" dann Fragesteller im Forum deren Programm
> sei nicht gut genug kommentiert.(Auch wenn dies oft zutrifft)
>
>
> '------ I/O PORTS ---------
> '--------------------------
> define SDA   port[9]
> define SCL   port[10]
> define LIGHT port[16]
> '--------------------------
> '---- SYSTEM MEMORY -------
> '--------------------------
> define ADDRESS    word[1]
> define ADDRHI     byte[1]
> define ADDRLO     byte[2]
> define DEV1       byte[3]
> define DEV2       byte[4]
> define COUNTER    byte[5]
> define CONFIG     byte[6]
> define TEMP       byte[7]
> define DATA       byte[8]
> define ERROR      byte[9]
> define CLOCKS     byte[10]
> define MASK       byte[11]
>
>
> #INIT
> LIGHT=off
> gosub BP1ENABLE
> print"#ON_LCD#";
> print"#INIT#";
> print"EEPROM DATASAVE";:pause 50
> print"#CLR#";:print"#OFF#";
> DEV1=174
> 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
> '--------- 100 BYTES IN EEPROM SCHREIBEN ---------------
> For ADDRESS=0 to 100
> DATA=ADDRESS*2:gosub WRITEBYTE
> next
>
> '-------- 100 BYTES VOM EEPROM LESEN UND ANZEIGEN-------
> for ADDRESS=0 to 100
> gosub READBYTE
> print"#ON_LCD#";:print"#L101#";:print DATA;:print" ";:print"#OFF#";
> pause 30
> next
> 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
> end
>
>
> '-----------------------------------------------------
> '- BYTE (DATA) AUF EEPROM ADRESSE (ADDRESS) SPEICHERN -
> '-----------------------------------------------------
> #WRITEBYTE
> print"#ON_IIC#";:print"#STOP#";:print"#START#";:put DEV1
> put ADDRHI:put ADDRLO:put DATA:print"#STOP#";:print"#OFF#";
> #WAITREADY
> print"#ON_IIC#";:print"#START#";:put DEV1:print"#STOP#";:print"#OFF#";
> gosub CHECK_ERROR
> if ERROR=1 then goto WAITREADY
> return
> '-----------------------------------------------------
> '- BYTE (DATA) VON EEPROM ADRESSE (ADDRESS) LESEN   -
> '-----------------------------------------------------
> #READBYTE
> print"#ON_IIC#";:print"#STOP#";:print"#START#";:put DEV1
> put ADDRHI:put ADDRLO:print"#STOP#";
> print"#START#";:put DEV1+1:get DATA:print"#STOP#";:print"#OFF#";
> return
>
> '-----------------------------------------------------
> '--              IIC-FEHLER ABFRAGEN              ----
> '-----------------------------------------------------
> #CHECK_ERROR
> print"#ON_CONFIG#";        'UMLEITUNG ZUM CONFIG MODULE
> get CONFIG                 'CONFIG REGISTER LESEN
> put (CONFIG and &B10111111)'IIC ERROR FLAG IN CONFIG LÖSCHEN
> print"#OFF#";
> if  (CONFIG and &H40)=0 then ERROR=0 ELSE ERROR=1
> print"#OFF#";
> return
> 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
>
> '-------------------------------------------------
> '--     SUBROUTINE ENABLE PULLUP BYTEPORT 1      -
> '-------------------------------------------------
> #BP1ENABLE
> print"#ON_CONFIG#";             'UMGELEITET
> get TEMP                        'den aktuellen Wert lesen
> put (TEMP or &B0001000)         'Bit setzten und zurück schreiben
> print"#OFF#";                   'Umleitung abschalten
> return
>
>
>

 Antwort schreiben

Bisherige Antworten: