aboutsummaryrefslogtreecommitdiff
path: root/amforth-6.5/common/lib/hardware/mmc-test.frt
blob: b69fd909ce39d9c73aff9d820f54b0614112800a (plain)
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
\ MMC+SD card - Lubos Pekny, www.forth.cz
\ Library for amforth 3.0, mFC modification
\ Max. 4GB no SDHC, access thru buffer 512B or short block or direct

\ V.1.0, 16.07.2009, tested on atmega32, amforth30mFC12.zip
\ - used SPI (MOSI, MISO, SCK, SS)
\ mmc_init, mmc_CID, mmc_CSD, mmc_read, mmc_mread, mmc_write,
\ mmc_blk@, mmc_blk!, mmc_c@, mmc_c!, mmc_end?, mmc_end!

hex

\ ----- Test -----

mmc_init .             \ init card
mmc_CID . 10 0 mmc.    \ view 16B of mmc_buf
mmc_CSD . 10 0 mmc.


\ read
200 1234 0 mmc_read .  \ read 512B from sect. 0:1234
200 0 mmc.             \ view buf    


\ open+read, short block
100 1234 0 mmc_read .      \ open sector 0:1234, read 256B
mmc_buf 100 + 100 mmc_blk@ \ read 256B, buf+offset 256B
200 0 mmc.                 \ view buf


\ open, short block
0 1234 0 mmc_read .        \ open sector 0:1234
mmc_buf 100 + 100 mmc_blk@ \ read 256B, buf+offset 256B
mmc_buf       100 mmc_blk@ \ read 256B, switched 256B
200 0 mmc.                 \ view buf


\ open, direct byte access
0 1234 0 mmc_read .    \ open sector 0:1234
+mmc
mmc_c@ . mmc_c@ .      \ read 2 bytes from sector
1FE mmc_dummy          \ read other 510 bytes
1FE mmc_#buf +!        \ update counter
mmc_end? .             \ if end of sector then crc dummy
-mmc


\ multiread
200 1234 0 mmc_mread . \ open,read 512B from sect. 1234
200 0 mmc.             \ view buf
+mmc
200 0 mmc_(read) .     \ read 512B from sect. 1235
200 0 mmc.             \ view buf
200 0 mmc_(read) .     \ read 512B from sect. 1236
200 0 mmc.             \ view buf
mmc_rstop .            \ stop and -mmc         


\ write
200 1234 0 mmc_read .
200 0 mmc.
ABBA mmc_buf !         \ change 2 bytes in buf
200 1234 0 mmc_write . \ write 512B to addr. 1234
200 1234 0 mmc_read .
200 0 mmc.


\ open+write, short block
ACCA mmc_buf !         \ change 2 bytes in buf
ADDA mmc_buf 100 + !   \ change 2 bytes in buf
100 1234 0 mmc_write . \ open sector 1234, write 256B
mmc_buf 100 + 100 mmc_blk! . \ write 256B, buf+offset 256B
200 1234 0 mmc_read .
200 0 mmc.


\ open, direct byte access
0 1234 0 mmc_write .
+mmc 
AE mmc_c! EA mmc_c!    \ write 2 bytes to sector
1FE mmc_dummy          \ write FF, 510x
1FE mmc_#buf +!        \ update counter
mmc_end! .             \ if end then wait while busy
-mmc
200 1234 0 mmc_read .
200 0 mmc.


\ multiwrite
ABCD mmc_buf !
200 1234 0 mmc_mwrite . \ open,write 512B to sect. 1234
+mmc
200 0 mmc_(mwrite) .    \ write 512B to sect. 1235
200 0 mmc_(mwrite) .    \ write 512B to sect. 1236
mmc_wstop .             \ stop and -mmc 

\ end of file