
A Anhang
39 trx_ bit_wr i te ( SR_CHANNEL , CHANNEL );
40 trx _ reg_wr i te ( RG_TRX_STATE , CMD_RX_ON );
41 trx _ reg_wr i te ( RG_IRQ_MASK , TRX_IRQ _RX_EN D );
42
43 /* enable global interrupts */
44 sei ();
45
46 /* wait 500 ms and indicate ready state */
47 WAIT500MS ();
48 LED _ SET_VA L UE (1);
49
50 /* loop and wait for frame receiving */
51 while (1);
52 }
53
54
55 /* isr forced when receivi n g of frame is completed */
56 ISR ( TRX 2 4_RX _END_ vect )
57 {
58 /* var i a b l e storing frame length */
59 uint8_t flen ;
60 /* pointer to received frame */
61 uint8_t * pfrm ;
62 /* var i a b l e storing result of checksum com p a rison */
63 uint16_t crc ;
64
65 /* upload frame and check for crc validity */
66 pfrm = rxfrm ;
67 flen = trx_frame _ read ( pfrm , sizeof ( rxfrm ), NULL );
68 crc = 0;
69 do
70 {
71 crc = _ crc_ c citt _upda te (crc , * pfrm ++);
72 }
73 while (flen - -);
74
75 /* toggle red led if crc is c orrect */
76 if ( crc == 0)
77 {
78 LE D _ TOGGLE (2);
79 }
80
81 /* wait 500 ms and indicate ready state */
82 WAIT500MS ();
83 LED_TOGG L E (1);
84 LED_TOGG L E (0);
85 }
Listing A.1: Datenempfang mit Hilfe des µracoli-Pakets
41
Kommentare zu diesen Handbüchern