mirror of
https://github.com/arduino/Arduino.git
synced 2025-03-15 12:29:26 +01:00
Ensure minimum spi pulse width.
This commit is contained in:
parent
5a04ab2a32
commit
50f9e539d8
@ -114,6 +114,10 @@ class BitBangedSPI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void begin() {
|
void begin() {
|
||||||
|
// slow enough for an attiny85 @ 1MHz
|
||||||
|
// (pulseWidth should be > 2 cpu cycles, so take 3 cycles:)
|
||||||
|
pulseWidth = 3;
|
||||||
|
|
||||||
pinMode(MISO, INPUT);
|
pinMode(MISO, INPUT);
|
||||||
pinMode(RESET, OUTPUT);
|
pinMode(RESET, OUTPUT);
|
||||||
pinMode(SCK, OUTPUT);
|
pinMode(SCK, OUTPUT);
|
||||||
@ -126,11 +130,16 @@ class BitBangedSPI {
|
|||||||
for (unsigned int i = 0; i < 8; ++i) {
|
for (unsigned int i = 0; i < 8; ++i) {
|
||||||
digitalWrite(MOSI, b & 0x80);
|
digitalWrite(MOSI, b & 0x80);
|
||||||
digitalWrite(SCK, HIGH);
|
digitalWrite(SCK, HIGH);
|
||||||
|
delayMicroseconds(pulseWidth);
|
||||||
b = (b << 1) | digitalRead(MISO);
|
b = (b << 1) | digitalRead(MISO);
|
||||||
digitalWrite(SCK, LOW); // slow pulse
|
digitalWrite(SCK, LOW); // slow pulse
|
||||||
|
delayMicroseconds(pulseWidth);
|
||||||
}
|
}
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
unsigned long pulseWidth; // in microseconds
|
||||||
};
|
};
|
||||||
|
|
||||||
static BitBangedSPI SPI;
|
static BitBangedSPI SPI;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user