Problems when attempt to write in real time a data to 25L080 SPI memory but not in si

Status
Not open for further replies.

johnnystrong

Newbie level 4
Joined
Jul 28, 2013
Messages
7
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Visit site
Activity points
61
I use PIC16F84A to write to 25L080 memory it successfully wok in simulation time but not at a time
After sending, data when I read 25L080 status register it give B’0000 0010’ which mean that, write allowed but not write in progress. What can be the problem?
Please I needed your help

- - - Updated - - -

here is diagram circuit

- - - Updated - - -

here is diagram circuit
 

Attachments

  • 25L080.pdf
    146.5 KB · Views: 70
Last edited:

Hello there,

How do you reading it back.

Try these..

1.SEND read command
2.send dummy byte
3.read SPIBUF

Best regards,
 


Code ASM - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
;***************************************************************************
; write into one page
; 
;***************************************************************************
PAGE_WRITE1                     
 
                                CALL                    WRITE_ENABLE1      ;send write enable
                                BCF             CS1                     ;enable eeprom
                                MOVLW           0X02                    ;send write opcode
                                CALL            SHOUT1                          
                                MOVF            ADRH1,W
                                CALL            SHOUT1                  ;send MSB adress byte
                                MOVF            ADRH0,W
                                CALL            SHOUT1                  ;send LSB adress byte
                                                                
 
        
                                MOVLW           0X55                    ;0X55 is data to be transmit
                                CALL            SHOUT1
                                BSF                     CS1             ; disable eeprom
                                CALL            TEMPOB                  ;wait for signal CS1 stability
                                
                                CALL            READ_STATREG1           ;read state reg
                                MOVWF           SCREEN                  ; print at portb
                                
                                MOVLW           0X18         ; wait for write complete and for me to read portB
                                CALL            TEMPO
                                CALL            READ_STATREG1
                                MOVWF           SCREEN          ; read status reg after write complete
                                RETURN
 
;***********************************************************************
 
that is part of code which write data to eeprom memory and test if write is in process.
 i send dmmy byte when i call SHIN function. 
i did all these functions by myself because i use PIC16F84A
 
 
 
;***************************************************************************
; read eeprom status reg 
;***************************************************************************
READ_STATREG1
                                BCF                     CS1             ; enable eeprom 
                                MOVLW           0X05                    ; send read state reg opcode 
                                CALL            SHOUT1
                                CALL            SHIN1                  ; i send dummy byte here
                                BSF                     CS1
                        
                                RETURN
 
[COLOR="silver"][SIZE=1]- - - Updated - - -[/SIZE][/COLOR]
 
;***************************************************************************
; write into one page
; 
;***************************************************************************
PAGE_WRITE1                     
 
                                CALL                    WRITE_ENABLE1      ;send write enable
                                BCF             CS1                     ;enable eeprom
                                MOVLW           0X02                    ;send write opcode
                                CALL            SHOUT1                          
                                MOVF            ADRH1,W
                                CALL            SHOUT1                  ;send MSB adress byte
                                MOVF            ADRH0,W
                                CALL            SHOUT1                  ;send LSB adress byte
                                                                
 
        
                                MOVLW           0X55                    ;0X55 is data to be transmit
                                CALL            SHOUT1
                                BSF                     CS1             ; disable eeprom
                                CALL            TEMPOB                  ;wait for signal CS1 stability
                                
                                CALL            READ_STATREG1           ;read state reg
                                MOVWF           SCREEN                  ; print at portb
                                
                                MOVLW           0X18         ; wait for write complete and for me to read portB
                                CALL            TEMPO
                                CALL            READ_STATREG1
                                MOVWF           SCREEN          ; read status reg after write complete
                                RETURN
 
;***********************************************************************
 
that is part of code which write data to eeprom memory and test if write is in process.
 i send dmmy byte when i call SHIN function. 
i did all these functions by myself because i use PIC16F84A
 
 
 
;***************************************************************************
; read eeprom status reg 
;***************************************************************************
READ_STATREG1
                                BCF                     CS1             ; enable eeprom 
                                MOVLW           0X05                    ; send read state reg opcode 
                                CALL            SHOUT1
                                CALL            SHIN1                  ; i send dummy byte here
                                BSF                     CS1
                        
                                RETURN

 
Last edited by a moderator:

is anyone have a suggestion for me about my problem? is the fact that PIC16F84a is TTL output and input may cause this effect? because 25L080 is cmos technology.
 

Status
Not open for further replies.

Similar threads

Cookies are required to use this site. You must accept them to continue using the site. Learn more…