Source file: /~heha/mb-iwp/Kleinkram/Sandkasten.zip/fe/rf12if.h

/********************************************************
 * RFM12-Kommunikation, hardwareabhängige Routinen	*
 * ATtiny45-Version für fs-d (Sandkiste)		*
 * Wird von rf12.h eingebunden, im »namespace "rf12"«	*
 ********************************************************/

// Empfangsdaten (für rf_poll) vorhanden?
inline bool data() {return !!(PINB&0x01);}
// !SS schalten
inline void ss_lo() {PORTB&=~0x20;}
inline void ss_hi() {PORTB|= 0x20;}

#ifdef RF12_CPP		// Aufrufer == rf12.cpp?
static void spi_clock() {
  USISR = 0x40;		// Flankenzähler auf 0, Interrupt löschen
  do{
    _delay_us(1);
    USICR=0x1B;		// Dreidrahtmodus = SPI
  }while(!(USISR&0x40));	// 16 Flanken generieren
}
// Daten-WORD „austauschen“
word xfer(word data) {
  PORTB &=~0x04;	// Falls ein, rote LED aus
  ss_lo();		// !SEL aktivieren (falls nicht bereits aktiv)
  USIDR = data>>8;
  spi_clock();
  byte h = USIDR;	// Gelesenes Datenbyte einfangen
  USIDR = data;		// Nächstes Datenbyte ausgeben
  spi_clock();
  ss_hi();		// !SEL deaktivieren
  ss_lo();		// !SEL aktivieren: RGIT oder FFIT "guckt raus"
  return h<<8|USIDR;
}
#include <avr/wdt.h>
#define PERBYTE_HOOK wdt_reset()
#endif
Detected encoding: UTF-80