Hallo Forum,
es gibt schon viele Beispiele und Hinweise diese mit Byte zu beschreiben und lesen.
Ist ja auch kein Problem aber ich finde keine vernünftige Lösung für Single –Variablen.
Dieses Thema ist nach meiner persönlichen Meinung schon sehr unübersichtlich geworden. Somit ein Neustart.
Nun bitte ich um Hilfe.
Vielen Dank vorab
Mit freundlichen Grüßen
fredred
Zum Verständnis mein Terminal- Ausdruck für Byte-Variablen.
Funktioniert prima. Aber wie mit Single-Variablen ????
-------------------------------------
'---------------------------------------------------------Code:I2C Scan start
gefunden h A0 b 10100000
EEPROM beschreiben...
Adresse >1< wurde mit >0 beschrieben!
Adresse >2< wurde mit >110 beschrieben!
Adresse >3< wurde mit >120 beschrieben!
Adresse >4< wurde mit >130 beschrieben!
Adresse >5< wurde mit >140 beschrieben!
Adresse >6< wurde mit >150 beschrieben!
EEPROM auslesen...
Adresse >1< wurde mit >0 gelesen!
Adresse >2< wurde mit >110 gelesen!
Adresse >3< wurde mit >120 gelesen!
Adresse >4< wurde mit >130 gelesen!
Adresse >5< wurde mit >140 gelesen!
Adresse >6< wurde mit >150 gelesen!
Hier mein letzter Code
'****************** Test-Platine *************************
'* ist ein Testmodul für Data extern EEprom als Speicher *
'* am I²C Bus ein 24c64 angeschlossen zum speichern *
'* und lesen der Variablen *
'* *
'* alle Auswertungen für Test nur über Terminal anzeigen *
'* *
'*************! fredred@arcor.de !************************
$regfile "m32def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 32
$framesize = 40
$baud = 19200
'gibt den Erstellungszeitpunkt im europäischen Format DD-MM-YY hh:nn:ss
'und die Code-Version aus.
Print " "
Print "erstallt am : " ; Version(1)
Print "Version Code : " ; Version(3)
Print " "
Waitms 100
$lib "i2c_TWI.lib" 'Hardware I²C einbinden
Config Twi = 100000 ' Takt 100kHz
Const 24c64w = &B10100000
Const 24c64r = &B10100001
Dim Adresse As Word 'ist Adresszähler für Eeprom
Dim Adresse_l As Byte At Adresse Overlay
Dim Adresse_h As Byte At Adresse + 1 Overlay
Dim Wert(6) As Word 'ist Schreibwerte Array
Dim Wertalt As Word 'ist Lesewert
Dim Aktionen As Byte 'ist Status für Aktionen
'war nur ein erfolgloser Versuch
'Dim Wert As Single
'Dim Werts As Byte At Wert(4) Overlay
'Dim Wertalt As Single
'Dim Wertl(4) As Byte At Wertalt Overlay
'!!!!! ist nur für Test mit Taster also anpassen !!!!
Config Pinc.3 = Input 'Taster für EEprom schreiben
Portc.3 = 1 'Port auf H schalten
Taster_s Alias Pinc.3 'Taster ein Namen geben
Config Pinc.2 = Input 'Taster für EEprom lesen
Portc.2 = 1 'Port auf H schalten
Taster_l Alias Pinc.2 'Taster ein Namen geben
'Config Portc.4 = Output
'Eepvoll Alias Portc.4 'LED-Warnung für EEprom voll
'+++ zu Test ob I²C Hardware OK ist +++
Gosub I2c_test
'++++++++++++++++++++++++++++++++++++++
'------- nach Reset lesen -------------
Gosub Lesen
'--------------------------------------
Do
'!!! Testwerte !!!
Wert(1) = Aktionen
Wert(2) = 110
Wert(3) = 120
Wert(4) = 130
Wert(5) = 140
Wert(6) = 150
'!!!!!!!!!!!!!!!!!!
'--- hier zum Daten schrieben --------
If Taster_s = 0 Then 'wenn Taste gedrückt schreiben
Waitms 100 'nur für Test
Incr Aktionen 'nur für Test
Gosub Schreiben
End If
'--- hier zum Daten lesen ------------
If Taster_l = 0 Then 'wenn Taste gedrückt lesen
Waitms 100 'nur für Test
Gosub Lesen
End If
Loop
End
'###################################################################
Lesen:
Print ""
Print "EEPROM auslesen..."
For Adresse = 1 To 6
I2cstart
I2cwbyte 24c64w
I2cwbyte Adresse_h
I2cwbyte Adresse_l
I2cstart
I2cwbyte 24c64r
I2crbyte Wertalt , Nack
I2cstop
Print "Adresse >" ; Adresse ; "< wurde mit >" ; Wertalt ; " gelesen!"
Next
Return
'#############################################################################
Schreiben:
Print ""
Print "EEPROM beschreiben..."
For Adresse = 1 To 6
I2cstart
Adresse_h = High(adresse)
Adresse_l = Low(adresse)
I2cwbyte 24c64w
I2cwbyte Adresse_h
I2cwbyte Adresse_l
I2cwbyte Wert(adresse)
I2cstop
Print "Adresse >" ; Adresse ; "< wurde mit >" ; Wert(adresse) ; " beschrieben!"
Next
Return
'#############################################################################
I2c_test:
Dim Busaddress As Byte
Dim Busaddress_read As Byte
Dim Chipaddress As Byte
Print "I2C Scan start"
'I²C Porterweiterung testen
'Alle Adresen suche und Anzeigen
'Step 2 soll nur IC Adresse aufrufen für lesen
For Chipaddress = 0 To 254 Step 2 ' IC's am I²C-Bus erkennen
I2cstart 'send start
I2cwbyte Chipaddress 'sende Addresse auf Bus
If Err = 0 Then 'Chip gefunden
If Chipaddress = 24c64w Then
Print "gefunden " ; "h " ; Hex(chipaddress) ; " b " ; Bin(chipaddress)
End If
End If
Next
Waitms 200
I2cstop
Return
So sieht das mit Code-Fenster aus - Manf