
3 Genutzte Hardware innerhalb des Praxisprojektes
4 T R X_STAT E _CMD = RX_ON ;
5
6 /* enable RX_END interrupt */
7 IRQ_MASK |= (1 << RX_END_EN );
8
9 [...]
10
11
12 /* isr forced when receivi n g of frame is completed */
13 ISR ( TRX 2 4_RX _END_ vect )
14 {
15 [...]
16
17 memcpy (* data , ( void *) & TRXFBST , T ST_F R AME_ L ENGT H );
18 }
Listing 3.2: Datenempfang über das Transceiver-Modul des ATmega128RFA1
3.3.2.3 Versenden von Daten
Sollen Daten über das Transceiver-Modul versendet werden, ist es zunächst erforderlich,
dieses in den Status PLL_ON oder TX_ARET_ON zu versetzen. Hierauf werden die
zu versendenden Daten in den Frame-Buffer geschrieben und die Übermittlung durch
Nutzung des Konfigurationsbits SLPTR oder das Setzen des Bits TX_START innerhalb
TRX_STATE-Registers gestartet. Durch Abfrage des TX_END-Interrupts wird überprüft, ob
der komplette Frame aus dem Frame-Buffer übertragen wurde und, zum Beispiel für einen
erneuten Datenversand, wieder auf den Frame-Buffer zugegriffen werden kann. Zusätzlich
existiert für die Implementierung von zeitkritischen Anwendungen die Möglichkeit, die
Übertragung bereits zu starten, bevor der zu versendende Frame in den Frame-Buffer
geschrieben wurde. Hierbei ist darauf zu achten, dass die Zeitspanne zwischen dem Starten
der Übertragung und dem Füllen des Frame-Buffers maximal 176
µ
s beträgt. Dies ist
die Zeitspanne die vor der eigentlichen Datenübertragung benötigt wird, um den PLL
5
einzustellen und den durch den Transceiver automatisch generierten Synchronisations-
Header (SHR) zu versenden. Zudem ist auf eine schnelle Füllung des Frame-Buffers zu
achten, da es ansonsten zu einem “Buffer-Underrun” kommen kann.
Eine mögliche Implementierung des Datenversands ist in Listing 3.3 dargestellt.
1 [...]
2
3 /* take transceiv e r to state PLL_ON */
4 T R X_STAT E _CMD = PLL_ON ;
5
6 /* enable TX_END interrupt */
5
Phase-Locked Loop
20
Kommentare zu diesen Handbüchern