1 | // 2 byte Payload bei Adresse aus den Speicher des RF230 lesen ================
|
2 | static uint16_t spi_read_SRAMframe (uint8_t addr)
|
3 | {
|
4 | PORTB &= ~(1<<PB0); // SEL low
|
5 | uint16_t two_bytes_read=0;
|
6 | SPDR = 0x00; // SPI read SRAMframe
|
7 | // do 17 clock-cycles nothing
|
8 | __asm__ __volatile__ (" nop \n nop \n nop \n nop \n nop \n nop \n nop \n"
|
9 | "nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n":: );
|
10 | SPDR = addr; // Startadresse fürs lesen der bytes
|
11 | // do 17 clock-cycles nothing
|
12 | __asm__ __volatile__ (" nop \n nop \n nop \n nop \n nop \n nop \n nop \n"
|
13 | "nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n":: );
|
14 | SPDR = 0x00; // SPI create SCK
|
15 | // do 17 clock-cycles nothing
|
16 | __asm__ __volatile__ (" nop \n nop \n nop \n nop \n nop \n nop \n nop \n"
|
17 | "nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n":: );
|
18 | two_bytes_read |= (SPDR << 8); // lies & schieb 'first_byte' um 8 Stellen nach links
|
19 | SPDR = 0x00; // SPI create SCK
|
20 | // do 17 clock-cycles nothing
|
21 | __asm__ __volatile__ (" nop \n nop \n nop \n nop \n nop \n nop \n nop \n"
|
22 | "nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n":: );
|
23 | two_bytes_read |= SPDR; // lies 'second_byte'
|
24 | PORTB |= (1<<PB0); // SEL high
|
25 | return (two_bytes_read); // give back 2 bytes
|
26 | } // ======================================================================= */
|
27 |
|
28 |
|
29 | // 1 Frame mit 2 byte Payload aus den Speicher des RF230 lesen ================
|
30 | static uint16_t spi_read_2ndframe (void)
|
31 | {
|
32 | PORTB &= ~(1<<PB0); // SEL low
|
33 | uint16_t two_bytes_read=0;
|
34 | SPDR = 0x20; // SPI read Frame
|
35 | // do 17 clock-cycles nothing
|
36 | __asm__ __volatile__ (" nop \n nop \n nop \n nop \n nop \n nop \n nop \n"
|
37 | "nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n":: );
|
38 | SPDR = 0x00; // SPI create SCK, skip PHR
|
39 | // do 17 clock-cycles nothing
|
40 | __asm__ __volatile__ (" nop \n nop \n nop \n nop \n nop \n nop \n nop \n"
|
41 | "nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n":: );
|
42 | SPDR = 0x00; // SPI create SCK, skip 1st byte
|
43 | // do 17 clock-cycles nothing
|
44 | __asm__ __volatile__ (" nop \n nop \n nop \n nop \n nop \n nop \n nop \n"
|
45 | "nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n":: );
|
46 | SPDR = 0x00; // SPI create SCK, skip 2nd byte
|
47 | // do 17 clock-cycles nothing
|
48 | __asm__ __volatile__ (" nop \n nop \n nop \n nop \n nop \n nop \n nop \n"
|
49 | "nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n":: );
|
50 | SPDR = 0x00; // SPI create SCK
|
51 | // do 17 clock-cycles nothing
|
52 | __asm__ __volatile__ (" nop \n nop \n nop \n nop \n nop \n nop \n nop \n"
|
53 | "nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n":: );
|
54 | two_bytes_read |= (SPDR << 8); // lies & schieb 'first_byte' um 8 Stellen nach links
|
55 | SPDR = 0x00; // SPI create SCK
|
56 | // do 17 clock-cycles nothing
|
57 | __asm__ __volatile__ (" nop \n nop \n nop \n nop \n nop \n nop \n nop \n"
|
58 | "nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop \n":: );
|
59 | two_bytes_read |= SPDR; // lies 'second_byte'
|
60 | PORTB |= (1<<PB0); // SEL high
|
61 | return (two_bytes_read); // give back 2 bytes
|
62 | } // ======================================================================= */
|