aboutsummaryrefslogtreecommitdiff
path: root/amforth-6.5/common/lib/hardware/mmc-test.frt
diff options
context:
space:
mode:
Diffstat (limited to 'amforth-6.5/common/lib/hardware/mmc-test.frt')
-rw-r--r--amforth-6.5/common/lib/hardware/mmc-test.frt96
1 files changed, 96 insertions, 0 deletions
diff --git a/amforth-6.5/common/lib/hardware/mmc-test.frt b/amforth-6.5/common/lib/hardware/mmc-test.frt
new file mode 100644
index 0000000..b69fd90
--- /dev/null
+++ b/amforth-6.5/common/lib/hardware/mmc-test.frt
@@ -0,0 +1,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