//
// 74HC595 Sample with bitBangedSPI Library
//
// Connections:
// ATtiny84 pin 5 (DIP pin 8, PA5) to 74HC595 pin 14
(data in)
// ATtiny84 pin 6 (DIP pin 9, PA4) to 74HC595 pin 11
(shift register clock)
// ATtiny84 pin 3 (DIP pin 6, PA7) to 74HC595 pin 12
(storage register clock)
//
// ATtiny85 pin 1 (DIP pin 6, PB1) to 74HC595 pin 14
(data in)
// ATtiny85 pin 2 (DIP pin 7, PB2) to 74HC595 pin 11
(shift register clock)
// ATtiny85 pin 3 (DIP pin 2, PB3) to 74HC595 pin 12
(storage register clock)
//
// ATtiny861 pin 8 (DIP pin 2, PB1) to 74HC595 pin
14 (data in)
// ATtiny861 pin 7 (DIP pin 3, PB2) to 74HC595 pin
11 (shift register clock)
// ATtiny861 pin 3 (DIP pin 9, PB6) to 74HC595 pin
12 (storage register clock)
//
// ATtiny4313 pin 15 (DIP pin 18, PB6) to 74HC595
pin 14 (data in)
// ATtiny4313 pin 16 (DIP pin 19, PB7) to 74HC595
pin 11 (shift register clock)
// ATtiny4313 pin 3 (DIP pin 5, PA0) to
74HC595 pin 12 (storage register clock)
//
#include <bitBangedSPI.h> //
https://github.com/nickgammon/bitBangedSPI
#if defined(__AVR_ATtiny84__)
#define DO_Pin 5 //
PA5
#define USCK_Pin 6 // PA4
#define SS_Pin 3 //
PA7
#define DI_Pin -1 // NC
#elif defined(__AVR_ATtiny85__)
#define DO_Pin 1 //
PB1
#define USCK_Pin 2 // PB2
#define SS_Pin 3 //
PB3
#define DI_Pin -1 // NC
#elif defined(__AVR_ATtiny861__)
#define DO_Pin 8 //
PB1
#define USCK_Pin 7 // PB2
#define SS_Pin 3 //
PB3
#define DI_Pin -1 // NC
#elif defined(__AVR_ATtiny4313__)
#define DO_Pin 15 // PB6
#define USCK_Pin 16 // PB7
#define SS_Pin 3 //
PA0
#define DI_Pin -1 // NC
#endif
bitBangedSPI bbSPI (DO_Pin, DI_Pin, USCK_Pin, 0); //
MOSI, MISO, SCK, Delay
void setup (void) {
bbSPI.begin ();
pinMode (SS_Pin, OUTPUT);
} // end of setup
void loop (void) {
for (int b=0; b<8; b++) {
uint8_t myByte = 1 << b;
// enable Slave Select
digitalWrite(SS_Pin, LOW);
// write the same byte 1000 times
for(int n=0; n<1000; n++) {
bbSPI.transfer (myByte);
}
// disable Slave Select
digitalWrite(SS_Pin, HIGH);
}
} // end of loop
|