Forum: Mikrocontroller und Digitale Elektronik Bascom Atmel I2C Problem


von Hadi68 (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen!

Wollte meinen Eeprom beschreiben.
Klappt aber nicht.
Welche Pinbelegung muß ich da einstellen?
Hier der Code:
$regfile = "8515def.dat"                                    ' specify 
the used micro
$crystal = 4000000                                          ' used 
crystal frequency

$baud = 19200                                               ' use baud 
rate

$hwstack = 32                                               ' default 
use 32 for the hardware stack

$swstack = 10                                               ' default 
use 10 for the SW stack

$framesize = 40                                             ' default 
use 40 for the frame space



Config Scl = Portb.1

Config Sda = Portb.2



Declare Sub Write_eeprom(byval Adres As Byte , Byval Value As Byte)

Declare Sub Read_eeprom(byval Adres As Byte , Value As Byte)



Const Addressw = 174                                        'slave write 
address

Const Addressr = 175                                        'slave read 
address



Dim B1 As Byte , Adres As Byte , Value As Byte              'dim byte



Call Write_eeprom(1 , 3)                                    'write value 
of three to address 1 of EEPROM





Call Read_eeprom(1 , Value)                                 'read it 
back

Call Read_eeprom(5 , Value)                                 'again for 
address 5





'-------- now write to a PCF8474 I/O expander -------

I2csend &H40 , 255                                          'all outputs 
high

I2creceive &H40 , B1                                        'retrieve 
input

                                'print it

End



Rem Note That The Slaveaddress Is Adjusted Automaticly With I2csend & 
I2creceive

Rem This Means You Can Specify The Baseaddress Of The Chip.









'sample of writing a byte to EEPROM AT2404

Sub Write_eeprom(byval Adres As Byte , Byval Value As Byte)

  I2cstart                                                  'start 
condition

  I2cwbyte Addressw                                         'slave 
address

  I2cwbyte Adres                                            'asdress of 
EEPROM

  I2cwbyte Value                                            'value to 
write

  I2cstop                                                   'stop 
condition

  Waitms 10                                                 'wait for 10 
milliseconds

End Sub





'sample of reading a byte from EEPROM AT2404

Sub Read_eeprom(byval Adres As Byte , Value As Byte)

  I2cstart                                                  'generate 
start

  I2cwbyte Addressw                                         'slave 
adsress

  I2cwbyte Adres                                            'address of 
EEPROM

  I2cstart                                                  'repeated 
start

  I2cwbyte Addressr                                         'slave 
address (read)

  I2crbyte Value , Nack                                     'read byte

  I2cstop                                                   'generate 
stop

End Sub

Ich möchte lediglich meinen Eeprom lesen und schreiben können.

Danke an die Profis von euch!

von YappaDappaDuh (Gast)


Lesenswert?

Hallo,

wenn Du den 24LC64 an den 8515 wie in der Skizze angeschlossen hast, 
dann:

Config Scl = Portb.1

Config Sda = Portb.0

Viel Erfolg!

von Weingut P. (weinbauer)


Lesenswert?

Und Pullups an den SCL & SDA? Im Plan sind keine.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.