Mam pytanie co do programowania pamięci 24C64 przez procka Atmega8 i odczyt.
Program do zapisywania jest nastepujący
$crystal = 1000000
$regfile = "M8def.dat"
Config Sda = Portc.4
Config Scl = Portc.5
Declare Sub Write_eeprom(adres As Byte , Value As Byte)
Dim Adres As Byte , Value As Byte
Dim R As Byte
Restore Dane1
For R = 0 To 255
Read Value
Call Write_eeprom(r , Value)
Next R
End
Sub Write_eeprom(adres As Byte , Value As Byte)
I2cstart
I2cwbyte 160
I2cwbyte Adres
I2cwbyte Value
I2cstop
End Sub
Dane1:
Data 84 , 6,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &HE0 , &H10 , &H10 , &H10 , &HE0 , &H00 , &H00,
Data &H00 , &H10 , &HF0 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &HC0 , &H43 , &H44 , &H44,
Data &H44 , &H43 , &H40 , &H40 , &H44 , &H44 , &H47 , &H44 , &H44 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40,
Data &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40,
Data &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40,
Data &H40 , &H40 , &H40 , &HC0 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &HFF , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &HFF , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H10,
Data &H10 , &H10 , &H10 , &H10 , &HFF , &H10 , &H00 , &H00 , &H10 , &H00 , &H00 , &H10 , &H10 , &H10 , &H10 , &H10,
Data &H10 , &H00 , &H00 , &H10 , &H00 , &H00 , &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H00 , &H00 , &H10,
Data &H00 , &H00 , &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H00 , &H00 , &H10 , &H00 , &H00 , &H10 , &H10,
Data &H10 , &H10 , &H10 , &H10 , &H10 , &H00 , &H00 , &H10 , &H00 , &H00 , &H10 , &HFF , &H10 , &H10 , &H10 , &H10,
Data &H10 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &HFF , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &HFF,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H07 , &H04 , &H04 , &H04,
Data &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04,
Data &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04,
Data &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04,
Data &H04 , &H04 , &H04 , &H07 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00
Wydaje mi się ze jak wpiszę to do procka to on wykona operację i poskasowaniu tego programu z procka w eepromie jest nadal wartość którą wpisał
Teraz wgrywam program który ma czytać z eeprom i wyswietlać na LCD i tutaj się zaczyna problem.
Wcześniej miałem następujący program który wyświetlał mi obrazek na wyswietlaczy LCD
'******************** Driving graph. display NOKIA LPH7779 **********************
'******************************* (Tiny LCD) *************************************
$regfile = "m8def.dat"
$crystal = 1000000
Config Sda = Portc.4
Config Scl = Portc.5
Config Portc = Output
Config Portb = Output 'communication port to LCD
Config Spi = Soft , Din = Portb.0 , Dout = Portc.2 , Ss = None , Clock = Portc.3
Dim A As Byte
Dim Txloc As Byte , Tyloc As Byte , Tsub As Word , Tword As Word
Dim Tstring As String * 84 , Tchr As String * 1
Dim Twidth As Byte , Thigh As Byte , Yy As Byte , Xx As Byte , Tout As Byte
'********************************************************************************
'************************* Subprograms declarations *****************************
Declare Sub Tcls
Declare Sub Tlcdinit
Declare Sub Tinverse
Declare Sub Tgphloc(txglc As Byte , Tyglc As Byte)
Declare Sub Tlocate(byval Txlc As Byte , Byval Tylc As Byte)
Declare Sub Tprintf
Declare Sub Tshowpic
'****************************** MAIN loop **********************************START
Call Tlcdinit
Main_loop:
Tlocate 0 , 0
Restore Dane1
Call Tshowpic
Waitms 500
Goto Main_loop
End 'end program
'********************************************************************************
'********************************* subroutines **********************************
'********************************** Tlcdinit *******************************START
Sub Tlcdinit
Spiinit
Reset Portc.0 'LCD enable
Reset Portb.2 'RESET LCD disp.
Set Portb.2
Reset Portc.1 'command mode
Tout = &H21 'extended command mode
Spiout Tout , 1
Tout = &HC1 'Vop-contrast mode
Spiout Tout , 1
Tout = &H06 'temperature compensation
Spiout Tout , 1
Tout = &H13 'bias 1:48
Spiout Tout , 1
Tout = &H20 'normal command mode
Spiout Tout , 1
Tout = &H0C 'normal-horizontal LCD mode
Spiout Tout , 1
Call Tcls
End Sub
'************************************ Tcls *********************************START
Sub Tcls
Reset Portc.1 'command mode
Tout = 12 'normal video mode
Spiout Tout , 1
Tout = 128 'RAM addr to '0000000'
Spiout Tout , 1
Set Portc.1 'data mode
Tout = 0
For Tword = 0 To 700 '84x6 sends 0 to clear LCD
Spiout Tout , 1
Next
End Sub
'*********************************** Tinverse ******************************START
Sub Tinverse
Reset Portc.1 'command mode
Tout = 13 'normal video mode
Spiout Tout , 1
Set Portc.1 'data mode
End Sub
'***************************** Tgphloc(Txglc , Tyglc) ***********************START
Sub Tgphloc(txglc As Byte , Tyglc As Byte)
Reset Portc.1 'command mode
Tout = Tyglc + &H40 'sets 0-5 Y-addr of RAM
Spiout Tout , 1
Tout = Txglc * &H06 'sets 0-13 X-addr of RAM
Tout = Tout + &H80
Spiout Tout , 1
Set Portc.1 'data mode
End Sub
'***************************** Tlocate(Txloc, Tyloc) ***********************START
Sub Tlocate(byval Txlc As Byte , Byval Tylc As Byte)
Txloc = Txlc
Tyloc = Tylc
Tgphloc Txloc , Tyloc
End Sub
'************************************ Tshowpic *****************************START
Sub Tshowpic
Read Twidth
Read Thigh
For Yy = 1 To Thigh
For Xx = 1 To Twidth
Read Tout : Spiout Tout , 1
Next
Incr Tyloc
Tgphloc Txloc , Tyloc
Next
End Sub
'***********************************************(DAne)*****************
Dane1:
Data 84 , 6,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &HE0 , &H10 , &H10 , &H10 , &HE0 , &H00 , &H00,
Data &H00 , &H10 , &HF0 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &HC0 , &H43 , &H44 , &H44,
Data &H44 , &H43 , &H40 , &H40 , &H44 , &H44 , &H47 , &H44 , &H44 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40,
Data &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40,
Data &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40,
Data &H40 , &H40 , &H40 , &HC0 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &HFF , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &HFF , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H10,
Data &H10 , &H10 , &H10 , &H10 , &HFF , &H10 , &H00 , &H00 , &H10 , &H00 , &H00 , &H10 , &H10 , &H10 , &H10 , &H10,
Data &H10 , &H00 , &H00 , &H10 , &H00 , &H00 , &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H00 , &H00 , &H10,
Data &H00 , &H00 , &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H00 , &H00 , &H10 , &H00 , &H00 , &H10 , &H10,
Data &H10 , &H10 , &H10 , &H10 , &H10 , &H00 , &H00 , &H10 , &H00 , &H00 , &H10 , &HFF , &H10 , &H10 , &H10 , &H10,
Data &H10 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &HFF , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &HFF,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H07 , &H04 , &H04 , &H04,
Data &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04,
Data &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04,
Data &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04,
Data &H04 , &H04 , &H04 , &H07 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Ale teraz chcę tak przerobić program zeby on czytał ten obrazek z pamieci eeprom a z programu go chcę wykasować.
NIe wiem jak mam to napisać?
Proszę o pomoc
Pamięć mam podłączoną tak jak było napisane w poscie powyżej
Vcc do zasilania SCL do SCL mikroprocesora SDA do SDA uP a reszta do masy.