Hi Alun, Try adding this just before your sd_card include: const SD_DELAY_AFTER_WRITE = TRUE
It sounds better to fix spi_master_sw_set_speed then to create a new variable. Matt. On Monday, August 21, 2017 at 10:50:28 AM UTC-4, Alun Jones wrote: > > I've recently tried to use the software SPI library for writing data to an > SD card. I had weird problems with this, whereby a new card worked fine, > but an older one didn't. After a bit (well, a lot!) of messing around, I > finally realised that, at the speed I was clocking my PIC, the software SPI > was pushing data out faster than the older SD cards could cope with. > Dotting a few _usec_delay() calls around the code allowed my older cards to > work. > > The software SPI library has a "spi_master_sw_set_speed" procedure, which > doesn't actually do anything and is "just here for compatibility". > > I didn't use that in my modified version of the library - the values > usually used when calling spi_master_hw*_set_speed normally get stored > straight into SSP*CON1_SSPM, so they're not straightforward delay values. > Using spi_master_sw_set_speed, but taking "real" delay values doesn't seem > like a good option (it'd be "incompatible" with the _hw_ variants, and the > name wouldn't be sensible (set_speed with a higher delay would result in a > lower speed!). > > Writing a "real" compatible version of spi_master_sw_set_speed, emulating > the various hardware options, seems quite a lot of work. > > So, instead, I left the spi_master_sw_set_speed function untouched and > added lines of the form: > > if defined(spi_master_sw_usec_delay) == true then > _usec_delay(spi_master_sw_usec_delay) > end if > > including spi_master_sw after defining the spi_master_sw_usec_delay > constant allows SPI to be slowed down where needed. > > What do people think about this? I'm happy enough to push my changes if > people feel it's a reasonable compromise. > -- You received this message because you are subscribed to the Google Groups "jallib" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/jallib. For more options, visit https://groups.google.com/d/optout.
