1 | '### Config EEPROM-Variablen
|
2 | Const Eeprom_w = &HA0 'slave write address
|
3 | Const Eeprom_r = &HA1 'slave read address
|
4 | Dim Eeprom_count As Byte ' Zähler
|
5 | Dim Eeprom_anz As Byte
|
6 | Dim Eeprom_adr As Word ' Die Adresse als Word-Variable
|
7 | Dim Eeprom_high_adr As Byte At Eeprom_adr + 1 Overlay ' Zeiger auf das High-Byte
|
8 | Dim Eeprom_low_adr As Byte At Eeprom_adr Overlay ' Zeiger auf das Low-Byte
|
9 | Dim Eeprom_data As String * 20 ' Daten als String
|
10 | Dim Eeprom_data_array(20) As Byte At Eeprom_data Overlay ' Daten als Array
|
11 |
|
12 | Eeprom_data = "Dies ist ein Test"
|
13 | Eeprom_anz = 18 ' 18 Zeichen
|
14 | Eeprom_adr=&H0000 ' ab Adresse 0 schreiben
|
15 | Gosub Write_eeprom
|
16 |
|
17 | Wait 1
|
18 |
|
19 | Eeprom_anz = 7 ' 7 Zeichen einlesen
|
20 | Eeprom_adr=&H0005 ' Ab Adresse 5
|
21 | Gosub Read_eeprom ' Nur "ist ein" einlesen
|
22 | Print Eeprom_data
|
23 |
|
24 | End
|
25 |
|
26 | '#########################################################################
|
27 | '# Allgemeine Routine zum Lesen aus EEPROM
|
28 | Read_eeprom:
|
29 | For Eeprom_count = 1 To 19 'Daten löschen
|
30 | Eeprom_data_array(eeprom_count) = 0
|
31 | Next Eeprom_count
|
32 |
|
33 | I2cstart ' Generate start code
|
34 | I2cwbyte Eeprom_w ' send address
|
35 | I2cwbyte Eeprom_high_adr
|
36 | I2cwbyte Eeprom_low_adr
|
37 |
|
38 | I2cstart ' Generate start code
|
39 | I2cwbyte Eeprom_r ' send address
|
40 | For Eeprom_count = 1 To Eeprom_anz
|
41 | If Eeprom_count = Eeprom_anz Then
|
42 | I2crbyte Eeprom_data_array(eeprom_count) , Nack
|
43 | Else
|
44 | I2crbyte Eeprom_data_array(eeprom_count) , Ack
|
45 | End If
|
46 | Next Eeprom_count
|
47 | I2cstop
|
48 | Return
|
49 |
|
50 |
|
51 | '#########################################################################
|
52 | '# Allgemeine Routine zum Schreiben in EEPROM
|
53 | Write_eeprom:
|
54 | ' Reset Eeprom_wp ' Schreibschutz aufheben
|
55 | ' Waitms 1
|
56 | I2cstart ' Generate start code
|
57 | I2cwbyte Eeprom_w ' send address
|
58 | I2cwbyte Eeprom_high_adr
|
59 | I2cwbyte Eeprom_low_adr
|
60 | For Eeprom_count = 1 To Eeprom_anz
|
61 | I2cwbyte Eeprom_data_array(eeprom_count)
|
62 | Next Eeprom_count
|
63 | I2cstop
|
64 | Waitms 1
|
65 | Set Eeprom_wp ' Schreibdschutz wieder setzen
|
66 | Return
|