Source file: /~heha/mb-iwp/FlyStick/Firmware.zip/AccessPoint/rf12if.h

/********************************************************
 * RFM12-Kommunikation, hardwareabhängige Routinen	*
 * ATmega8-Version für fe (AccessPoint)			*
 * Wird von rf12.c eingebunden, von sonst nichts	*
 ********************************************************/

// MISO direkt abfragen
#define rf12_data() (PINB&0x10)

#include <avr/wdt.h>
extern void usbPoll();

#define PERBYTE_HOOK usbPoll();wdt_reset()

// Daten-WORD „austauschen“. Blockiert 2,6 µs
WORD rf12_xfer(WORD data) {
 PORTB&=~0x04;
 asm volatile("out %0,%B1" :: "I" (_SFR_IO_ADDR(SPDR)), "r" (data));
 while (!(SPSR&1<<SPIF));	// warten bis High-Byte fertig
 asm volatile("in %B0,%2" : "=r" (data): "0"(data), "I" (_SFR_IO_ADDR(SPDR)));
 asm volatile("out %0,%A1" :: "I" (_SFR_IO_ADDR(SPDR)), "r" (data));
 while (!(SPSR&1<<SPIF));	// warten bis Low-Byte fertig
 asm volatile("in %A0,%2" : "=r" (data): "0"(data), "I" (_SFR_IO_ADDR(SPDR)));
 PORTB|=0x04;		// !SEL deaktivieren
 asm volatile("nop");
 PORTB&=~0x04;		// !SEL reaktivieren: RGIT oder FFIT "guckt raus"
 return data;
}
Detected encoding: UTF-80