/*
* bitBanged SPI Master for ATtiny
*/
#include <bitBangedSPI.h> //
https://github.com/nickgammon/bitBangedSPI
#if defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
#define MOSI 8 // PA2
#define MISO 9 // PA1
#define SCK 10 // PA0
#define SS 7 // PA3
#if defined(__AVR_ATtiny44__)
#define Model "ATtiny44"
#else
#define Model "ATtiny84"
#endif
#elif defined(__AVR_ATtiny45__) ||
defined(__AVR_ATtiny85__)
#define MOSI 0 // PB0
#define MISO 1 // PB1
#define SCK 2 // PB2
#define SS 3 // PB3
#if defined(__AVR_ATtiny45__)
#define Model "ATtiny45"
#else
#define Model "ATtiny85"
#endif
#elif defined(__AVR_ATtiny461__) ||
defined(__AVR_ATtiny861__)
#define MOSI 12 // PA6
#define MISO 11 // PA5
#define SCK 10 // PA4
#define SS 13 // PA7
#if defined(__AVR_ATtiny461__)
#define Model "ATtiny461"
#else
#define Model "ATtiny861"
#endif
#elif defined(__AVR_ATtiny4313__)
#define MOSI 9 // PB0
#define MISO 10 // PB1
#define SCK 11 // PB2
#define SS 8 // PD6
#define Model "ATtiny4313"
#endif
bitBangedSPI bbSPI (MOSI, MISO, SCK); // MOSI, MISO,
SCK
void setup (void) {
bbSPI.begin ();
pinMode (SS, OUTPUT);
} // end of setup
void loop (void) {
static int num = 0;
char c;
char sbuf[40];
sprintf(sbuf,"bitBangedSPI num=%d
model=%s\n",num,Model);
num++;
// enable Slave Select
digitalWrite(SS, LOW);
// send test string
for (const char * p = sbuf ; c = *p; p++)
bbSPI.transfer (c);
// disable Slave Select
digitalWrite(SS, HIGH);
delay (1000);
} // end of loop
|