Subversion Repositories pentevo

Rev

Rev 291 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
261 ddp 1
;
2
;--------------------------------------
3
;in;    TEMP - n
4
SD_RD_DUMMY:
5
        SER     DATA
6
        RCALL   SD_EXCHANGE
7
        DEC     TEMP
8
        BRNE    SD_RD_DUMMY
9
        RET
10
;
11
;--------------------------------------
277 ddp 12
;in:    DATA
13
SD_WR_CMD:
14
        PUSH    DATA
15
        LDI     TEMP,2
16
        RCALL   SD_RD_DUMMY
17
        POP     DATA
18
        RCALL   SD_EXCHANGE
19
        CLR     DATA
20
        RCALL   SD_EXCHANGE
21
SD_WR_CMX4:
22
        CLR     DATA
23
        RCALL   SD_EXCHANGE
24
        CLR     DATA
25
        RCALL   SD_EXCHANGE
26
        CLR     DATA
27
        RCALL   SD_EXCHANGE
28
        SER     DATA
29
        RCALL   SD_EXCHANGE
30
        RJMP    SD_WAIT_NOTFF
31
;
32
;--------------------------------------
261 ddp 33
;in:    Z
34
SD_WR_PGM_6:
35
        LDI     TEMP,2
36
        RCALL   SD_RD_DUMMY
37
        LDI     TEMP,6
38
SD_WR_PGX:
39
SDWRP61:LPM     DATA,Z+
40
        RCALL   SD_EXCHANGE
41
        DEC     TEMP
42
        BRNE    SDWRP61
43
; - - - - - - - - - - - - - - - - - - -
44
;out:   DATA
45
SD_WAIT_NOTFF:
551 ddp 46
        LDI     TEMP,255
261 ddp 47
SDWNFF2:SER     DATA
48
        RCALL   SD_EXCHANGE
49
        CPI     DATA,$FF
50
        BRNE    SDWNFF1
51
        DEC     TEMP
52
        BRNE    SDWNFF2
53
SDWNFF1:RET
54
;
55
;--------------------------------------
56
;in:    Z - куда
57
;       X,W - №сектора
58
;out:   sreg.Z - SET==error
59
SD_READ_SECTOR:
277 ddp 60
        LDS     DATA,SD_CARDTYPE
61
        SBRC    DATA,2
261 ddp 62
        RJMP    SDRDSE1
63
        LSL     WL
64
        ROL     WH
65
        ROL     XL
66
        MOV     XH,XL
67
        MOV     XL,WH
68
        MOV     WH,WL
69
        CLR     WL
70
SDRDSE1:
277 ddp 71
        SER     DATA
261 ddp 72
        RCALL   SD_EXCHANGE
277 ddp 73
        LDI     DATA,$40|17 ;CMD17 (read_single_block)
74
        RCALL   SD_EXCHANGE
261 ddp 75
        MOV     DATA,XH
76
        RCALL   SD_EXCHANGE
77
        MOV     DATA,XL
78
        RCALL   SD_EXCHANGE
79
        MOV     DATA,WH
80
        RCALL   SD_EXCHANGE
81
        MOV     DATA,WL
82
        RCALL   SD_EXCHANGE
83
        SER     DATA
84
        RCALL   SD_EXCHANGE
85
 
86
        SER     WL
87
SDRDSE2:RCALL   SD_WAIT_NOTFF
88
        DEC     WL
89
        BREQ    SDRDSE8
90
        CPI     DATA,$FE
91
        BRNE    SDRDSE2
92
 
277 ddp 93
        PUSH    FLAGS1
94
        SBRS    FLAGS1,3
95
        RJMP    SDRDSE5
96
        CBR     FLAGS1,0B00001101
97
        SBR     FLAGS1,0B00000010
98
        PUSHZ
99
        LDIZ    MSG_TSD_SKIP*2
100
        CALL    PRINTSTRZ
101
        POPZ
102
SDRDSE5:LDIW    512
261 ddp 103
SDRDSE3:RCALL   SD_RECEIVE
104
        ST      Z+,DATA
105
        SBIW    WL,1
106
        BRNE    SDRDSE3
277 ddp 107
        POP     FLAGS1
261 ddp 108
 
277 ddp 109
        LDI     TEMP,2+1
261 ddp 110
        RCALL   SD_RD_DUMMY
111
        CLZ
112
        RET
113
;ошибка при чтении сектора
114
SDRDSE8:RET
115
;
116
;--------------------------------------
277 ddp 117
;out:   DATA
118
SD_RECEIVE:
119
        SER     DATA
120
; - - - - - - - - - - - - - - - - - - -
121
;in:    DATA
122
;out:   DATA
123
SD_EXCHANGE:
124
        SBRS    FLAGS1,3
125
        RJMP    FPGA_SAME_REG
126
;То же, что и FPGA_SAME_REG, но с логом в RS-232
127
;in:    DATA == данные
128
;out:   DATA == данные
129
        PUSH    FLAGS1
130
        CBR     FLAGS1,0B00000101
131
        SBR     FLAGS1,0B00000010
132
        PUSHZ
133
        PUSH    DATA
134
        LDIZ    MSG_TSD_OUT*2
135
        RCALL   PRINTSTRZ
136
        POP     DATA
137
        PUSH    DATA
138
        RCALL   HEXBYTE
139
        POP     DATA
140
        SPICS_CLR
141
        OUT     SPDR,DATA
142
;ожидание окончания обмена с FPGA по SPI
143
;и чтение пришедших данных
144
;out:   DATA == данные
145
SD_RDY_RD:
146
;        SBIC    SPSR,WCOL
147
;        JMP     CHAOS00
148
        SBIS    SPSR,SPIF
149
        RJMP    SD_RDY_RD
150
        IN      DATA,SPDR
151
        SPICS_SET
152
        PUSH    DATA
153
        LDIZ    MSG_TSD_IN*2
154
        RCALL   PRINTSTRZ
155
        POP     DATA
156
        PUSH    DATA
157
        RCALL   HEXBYTE
158
        POP     DATA
159
        POPZ
160
        POP     FLAGS1
161
        RET
261 ddp 162
;
277 ddp 163
;--------------------------------------
164
;