1

I am trying to verify sck output on my arduino uno. I don't have oscilloscope so I loopbacked miso to sck and tried Executing int rx0=SPI.transfer(5) while printing this using Serial.printrx0) it is giving 255.Whether this is expected output?

asked Nov 28, 2021 at 5:36
3
  • I'd expect you'll get all bit with the same value. You can try other SPI_MODES and you probably get 0x00 for two of them.. However you could use loopback between MOSI a MISO (you can expect 1B delay) Commented Nov 28, 2021 at 6:47
  • Hi KIIV, THANKS for responding.. I tried all the SPI mode and I got 255 as output, means all the bit as 1 in the byte. Whether it is right result?whether I can say my sck output is normal? Thanks Commented Nov 28, 2021 at 7:13
  • 1
    You could instead send SCK to T1 (pin 5), configure Timer 1 as a counter, and use it to count the clock pulses. Commented Nov 28, 2021 at 9:04

1 Answer 1

3

As suggested by KIIV and myself, you can test the SPI port by:

  • connecting MOSI to MISO and checking if you receive what you send
  • connecting SCK to the timer input T1 and counting the clock pulses.

Below is a sketch that performs both tests:

/*
 * Test the SPI port.
 *
 * Connect:
 * MOSI (11) to MISO (12)
 * SCK (13) to T1 (5)
 */
void setup() {
 Serial.begin(9600);
 // Configure SPI port.
 DDRB |= _BV(PB2) // SS (digital 10) as output
 | _BV(PB3) // MOSI (digital 11) as output
 | _BV(PB5); // SCK (digital 13) as output
 SPCR = _BV(SPE) // enable port
 | _BV(MSTR); // master mode
 // Configure Timer 1.
 TCCR1A = 0; // normal mode
 TCCR1B = _BV(CS10) // count rising edges of T1 = digital 3
 | _BV(CS11) // ditto
 | _BV(CS12); // ditto
}
void loop() {
 TCNT1 = 0; // clear timer
 uint8_t data = random(256);
 Serial.print(data);
 Serial.print(" -> ");
 SPDR = data; // send
 delay(1);
 if (bit_is_set(SPSR, SPIF)) { // transfer complete?
 Serial.println(SPDR);
 } else {
 Serial.println("nothing received");
 }
 Serial.print(" clock pulses: ");
 Serial.println(TCNT1);
 delay(1000);
}

It should print:

167 -> 167
 clock pulses: 8
241 -> 241
 clock pulses: 8
217 -> 217
 clock pulses: 8
[...]
answered Nov 28, 2021 at 9:53
0

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.