/********************************************************
* RFM12-Kommunikation, hardwareabhängige Routinen *
* ATtiny44-Version für fs-c (Flystick Variante C: Funk)*
* Wird von rf12.c eingebunden, von sonst nichts *
********************************************************/
// Empfangsdaten (für rf_poll) vorhanden?
#define rf12_data() (PINA&0x20)
// Daten-WORD „austauschen“
// Aufgrund eines Schaltungsfehlers (DI und DO vertauscht)
// kann USI nicht verwendet werden.
WORD rf12_xfer(WORD data) {
PORTA&=~0x80; // !SEL aktivieren
BYTE i=16;
do{
if (data&0x8000) PORTA|=0x40; else PORTA&=~0x40;
PORTA|=0x10; // normalerweise sollte 1 µs reichen
data<<=1;
if (rf12_data()) data|=1;
PORTA&=~0x10;
}while(--i);
PORTA|=0x80; // !SEL deaktivieren
PORTA&=~0x80; // !SEL aktivieren: RGIT oder FFIT "guckt raus"
return data;
}
Detected encoding: UTF-8 | 0
|