Problem z komunikacją z EEPROM

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
Jasam
Użytkownik
Posty: 422
Rejestracja: 27 mar 2007, 21:09

Post autor: Jasam » 18 cze 2008, 7:03

Tak, podciągnąłem. Tylko zapomniałem ich na schemacie narysować. Już mi wszystko śmiga. Mój kod jest taki:

Kod: Zaznacz cały

$regfile = "m8def.dat"
$crystal = 8000000
Config I2cdelay = 1
Declare Function Czytaj(byval Adres As Word) As Byte
Declare Sub Zapisz(byval Adres As Word , Byval Dane As Byte)
Dim Zawartosc As Byte
Dim Ktorakomorka As Word

Ktorakomorka = 0

Call Zapisz(ktorakomorka , 63)            'przyklad zapisu
Zawartosc = Czytaj(ktorakomorka)          'przyklad odczytu

Do
lcd zawartosc                             'zeby mozna bylo zobaczyc
waitms 300
Loop
End



Function Czytaj(byval Adres As Word) As Byte
Local Msb As Byte
Local Lsb As Byte
Local Dane As Byte

Lsb = Adres And 255
Shift Adres , Right , 8
Msb = Adres And 255

I2cstart
I2cwbyte 160
I2cwbyte Msb
I2cwbyte Lsb
I2cstart

I2cwbyte 161
I2crbyte Dane , Nack
I2cstop
Czytaj = Dane
End Function

Sub Zapisz(byval Adres As Word , Byval Dane As Byte)
Local Msb As Byte
Local Lsb As Byte

Lsb = Adres And 255
Shift Adres , Right , 8
Msb = Adres And 255

I2cstart
I2cwbyte 160
I2cwbyte Msb
I2cwbyte Lsb
I2cwbyte Dane
I2cstop
Waitms 5
End Sub
Końcówki magistrali i2c zostaly skonfigurowane w kompilatorze wiec nie ma tego w programie.
Działa aż miło. Dzięki wszystkim, którzy pomogli.

ODPOWIEDZ