Hi Matt

I waited some time for an answer (just like you).

Today I looked myself again. I removed the resistor and all kept working.

I was not surprised because ‘byte for byte’ had worked.

I used a micro sd card holder and on the website I saw that between 3V3 and GND a 100nF was placed.

When I used my original program of ‘byte for byte’ and ‘sector buffer’ that gave the problem earlier: problem was solved with the 100nF.

I think this is the explanation for the problem instead of the resistor.

 

 

Regards,

Peter

 

Van: Matthew Schinkel
Verzonden: dinsdag 14 maart 2023 22:03
Aan: jallib
Onderwerp: Re: [jallib] Re: problem with filling a sector buffer

 

Hi, Glad you got it to work. I had suggested the pull up resistor because I know some PICs have some open-drain pins. If you have any more issues add pull ups to sdi/sdo/clk pins as well.

 

I just looked through the 18f4455 manual. It doesn't look like pin_a5 has an open drain.

 

Does anyone know why this worked for him?

 

Matt.

 

 

On Monday, March 13, 2023 at 5:26:50 PM UTC-4 [email protected] wrote:

Hi Matt and Rob

 

It works!

 

Inverting the serial port gave rubbish and 1 stopbit I use standard.

But Matt wrote a mail: ‘I asked Rob ….’ and then a short second mail: try a pull-up resistor of 1K on CS and that was the solution for me.

 

And not so funny: sometimes I got about ten of ‘AAAAA’ and then rubbish.

I thought the ‘A’ is of earlier attemps and I even formatted the SD card!

In the capture of Rob I saw the whole Marilyn and it started with ‘AAAA’.

I thougt the writing did not succeed but now I know the reading crashed.

 

Rob: in the original code the writing and reading per byte of Marilyn was succesfull.

So there could not be a hardware problem.

 

I already changed the writing in writing the hex-code.

 

Thank you both for your help.

 

Regards,

Peter

 

Van: [email protected]
Verzonden: zaterdag 11 maart 2023 15:36
Aan: jallib
Onderwerp: Re: [jallib] Re: problem with filling a sector buffer

 

Hi Peter, Matt,

 

I had a PIC 18F4550 which is from the same family as the 18F4455 and ran the program. I only had to change the serial port to invert the output and use 1 stopbit instead of 2 but that cannot be the issue. I did not make any other changes.

 

It seems to work OK so there must be something wrong with either the PIC, the hardware or the SD card. I ran the PIC at 5 Volt using a level shifter to connect to the SD car which was at 3.3 Volt.

 

I used the Marilyn data that was given in this post. Attached the program and the terminal output.

 

Kind regards,


Rob

 

 

 

Op maandag 27 februari 2023 om 23:16:48 UTC+1 schreef [email protected]:

Hi Matthew

 

I sent you the code of the 18F4455 so you could bettter see what is goning wrong.

In the meantime I rewrote the code for the 16F18877. Also here byte for byte was working but the sample with a sector buffer refused to do what it had to do.

 

Regards,

Peter

 

Van: Matthew Schinkel
Verzonden: woensdag 22 februari 2023 03:14
Aan: jallib
Onderwerp: Re: [jallib] Re: problem with filling a sector buffer

 

Hi, this works from example 3, assuming the array is a constant (you didn't show the array in your example).

 

   const byte MARILYN[504] = {0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
                              0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
                              0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
                              0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
                              0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
                              0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
                              0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
                              0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
                              0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
                              0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
                              0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
                              0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
                              0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
                              0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
                              0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
                              0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
                              0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
                              0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
                              0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
                              0x42,0x42,0x42,0x42}
                             
   -- fill the sector buffer with data
   for 504 using step1 loop
      sd_sector_buffer[step1] = MARILYN[step1]
   end loop
   -- write the sector buffer to sector 20
   sd_write_sector_address(20)

   -- read back the same sectors
   -- read sector 20 into the sector buffer
   sd_read_sector_address(20)
   -- now send it to the serial port
   for 504 using step1 loop                     -- loop till the end of the sector buffer
      serial_write (sd_sector_buffer[step1]) -- send each byte via serial port
   end loop

On Monday, February 20, 2023 at 11:05:35 PM UTC-5 Matthew Schinkel wrote:

Hi, ok so the original sample is working? I'll try what you have but one thing I see is that your loop is 512 but marilyn is only 504. The loop should only be the size of the array.

 

for 504 using teller loop


      sd_sector_buffer[teller] = marilyn[teller]
 end loop

Matt.

On Monday, February 20, 2023 at 6:37:02 PM UTC-5 [email protected] wrote:

Hi Matt

I know that and I tried it before I wanted to write an array to the SD card. 

It works perfect. 

The problem is how to write an array to the SD card. 

 

Regards,

Peter 

 

Op 21 feb. 2023 om 00:21 heeft Matthew Schinkel <[email protected]> het volgende geschreven:

Hi, have you tried another sd card? What PIC are you using?

 

Please try example 3 in the sample

 

;   --------------------------------------------------------------------------------
;   -- EXAMPLE #3 write to 2 sectors using a sector buffer at a address
;   -- user friendly and fastest.
;   --------------------------------------------------------------------------------
;   -- fill the sector buffer with data
;   for 512 using step1 loop                     -- loop till the end of the sector buffer
;      sd_sector_buffer[step1] = "B"             -- set each byte of data
;   end loop
;   -- write the sector buffer to sector 20
;   sd_write_sector_address(20)
;   for 512 using step1 loop                     -- loop till the end of the sector buffer
;      sd_sector_buffer[step1] = "C"             -- set each byte of data
;   end loop
;   -- write the sector buffer to sector 21
;   sd_write_sector_address(21)
;   --
;   -- read back the same sectors
;   -- read sector 20 into the sector buffer
;   sd_read_sector_address(20)
;   -- now send it to the serial port
;   for 512 using step1 loop                     -- loop till the end of the sector buffer
;      serial_write (sd_sector_buffer[step1]) -- send each byte via serial port
;   end loop
;   -- read sector 21 into the sector buffer
;   sd_read_sector_address(21)
;   -- now send it to the serial port
;   for 512 using step1 loop                     -- loop till the end of the sector buffer
;      serial_write (sd_sector_buffer[step1]) -- send each byte via serial port
;   end loop

 

Matt.

On Monday, February 20, 2023 at 12:12:04 PM UTC-5 [email protected] wrote:

Hi Matt
I think this is a question for you. You made a beautiful sample for writing to a sd card.
Every  start of the program I use the part of your lib to control the connection to the sd card.
I can write and read the sd card byte for byte. I use a bitmap image of Marilyn Monroe of 504 bytes.

The half of the next program works perfect:
var byte gegeven
var byte data
var word step1
var word teller

sd_start_write(50)          
   for count(marilyn) using teller loop
      sd_data_byte = marilyn[teller]
   end loop
sd_stop_write
This works perfect.


I also tried to write to the sd card with a 'sector buffer' because most arrays are larger.
But first the array of Marilyn. It can be written in one sector.
Attempt 1:
print_string(serial_data, "Writing to sector 100")
print_crlf(serial_data)

sd_start_write(100)        
--fill the sector buffer
   for 512 using teller loop
      sd_sector_buffer[teller] = marilyn[teller]
   end loop
--    write the sector buffer to sector 100
   sd_write_sector_address(100)
sd_stop _write

I also tried:
Attempt 2:

  sd_start_write(150)
        for 512 using step1 loop
           gegeven = marilyn[step1]
           sd_sector_buffer[step1] = gegeven
       end loop
-- write the sector buffer to the sd card
 sd_write_sector()
 sd_stop _write

Both attempts does not work.
I get rubbish when I read the sectors.
Can you tell me how I get it working.

Regards,
Peter

--
You received this message because you are subscribed to a topic in the Google Groups "jallib" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jallib/I1L0r6P-2xQ/unsubscribe.
To unsubscribe from this group and all its topics, send an email to [email protected].
To view this discussion on the web visit https://groups.google.com/d/msgid/jallib/8415623e-2bbb-424c-9498-cd9b3c3b651cn%40googlegroups.com.

--
You received this message because you are subscribed to a topic in the Google Groups "jallib" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jallib/I1L0r6P-2xQ/unsubscribe.
To unsubscribe from this group and all its topics, send an email to [email protected].

--
You received this message because you are subscribed to a topic in the Google Groups "jallib" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jallib/I1L0r6P-2xQ/unsubscribe.
To unsubscribe from this group and all its topics, send an email to [email protected].

--
You received this message because you are subscribed to a topic in the Google Groups "jallib" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jallib/I1L0r6P-2xQ/unsubscribe.
To unsubscribe from this group and all its topics, send an email to [email protected].
To view this discussion on the web visit https://groups.google.com/d/msgid/jallib/fbde66cd-f544-4460-ab3d-280556b45638n%40googlegroups.com.

 

--
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 view this discussion on the web visit https://groups.google.com/d/msgid/jallib/415C44FC-5F1C-4E80-A6C6-D3E557617B1D%40hxcore.ol.

Reply via email to