SPI_MasterRecive:
sbis SPSR, SPIF
rjmp SPI_MasterRecive
in status, SPDR
ret
;*************************************************
;* written by: Abbruzzo Giovanni
;* date: 1/05/2013
;* version: 1.0
;* file saved as: ProvaNRF24L01.asm
;* for AVR: m8535
;* clock frequency: 8MHz
;* items: setup SPI and using NRF24L01+ device
;* Legend:
;* PB1=CE (to nRF24L01 side)
;*
;* PB3=CSN
;* PB4=SS
;* PB5=MOSI
;* PB6=MISO
;* PB7=SCK
;*
;* PD3=INT1 (IRQ to nRF24L01 side)
;*
;* W_REGISTER=001AAAAA
;* R_REGISTER=000AAAAA
;*
;*
;*************************************************
.nolist
.include "m8535def.inc"
.include "E:\AVRFiles\Library\nrf24l01registers.inc"
.list
.def temp=r16
.def data=r17
.def counter=r18
.def counter2=r19
.def regcounter=r20
.def target=r21
.def status=r22
;Look-up-table
rjmp Init; Reset Handler
reti ; IRQ0 Handler (PD2)
rjmp IRQ1 ; IRQ1 Handler (PD3)
reti ; Timer2 Compare Handler
reti ; Timer2 Overflow Handler
reti ; Timer1 Capture Handler
reti ; Timer1 Compare A Handler
reti ; Timer1 Compare B Handler
reti ; Timer1 Overflow Handler
reti ; Timer0 Overflow Handler
reti ; SPI Transfer Complete Handler
reti ; USART RX Complete Handler
reti ; UDR Empty Handler
reti ; USART TX Complete Handler
reti ; ADC Conversion Complete Handler
reti ; EEPROM Ready Handler
reti ; Analog Comparator Handler
reti ; Two-wire Serial Interface Handle
reti ; IRQ2 Handler (PB2)
reti ; Timer0 Compare Handler
reti ; Store Program Memory Ready Handler
One_sec:
in temp, TCNT0 ;read T/C0
cp temp, target ;is temp = target?
breq PC + 2 ;yes, so skip 2 steps
rjmp One_sec ;no, so loops back to One_sec
ldi temp, 63
add target, temp ;add n1 to target
inc regcounter ;increment regcounter
cpi regcounter, 62 ;is regcounter = n2?
breq PC+2 ;yes, so skip 2 steps
rjmp One_sec ;no, so loops back to One_sec
clr regcounter ;restart to count with 0
ret
;Wait 28 mS about
Wait:
dec counter
breq PC+2
rjmp Wait
ldi counter, 240
dec counter2
breq PC+2
rjmp Wait
ldi counter2,240
ret
;Start transmission throuth SPI
Start_Transmission:
sbi PORTB, 1 ;Alza CE per iniziare la trasmissione
rcall Wait
rcall Wait
cbi PORTB, 1 ;Abbassa CE
SPI_MasterRecive:
sbis SPSR, SPIF
rjmp SPI_MasterRecive
in status, SPDR
ret
SPI_MasterTransmit:
; Start transmission of data (r17)
out SPDR,data
Wait_Transmit:
; Wait for transmission complete
sbis SPSR,SPIF
rjmp Wait_Transmit
ret
Init: ldi temp, LOW(RAMEND) ;Initialize Stack Pointer
out SPL, temp
ldi temp, HIGH(RAMEND)
out SPH, temp
;Initialize Ports
clr temp
out DDRD, temp ;Set PORTD as input
ser temp
out PORTD, temp ;Pull ups on PortD off
out DDRC, temp ;Set PORTC as output
out PORTC, temp ;Start with lights off
;Variables
ldi counter, 240
ldi counter2, 240
;Timer counter
ldi temp, 0b00000101
out TCCR0, temp ;T/C0 counts at CK/1024
clr temp
out TCNT0, temp ;init T/C0 to zero
ldi target, 63
clr regcounter ;start to count with 0
;SPI_MasterInit
;Set MOSI, SCK,CE,CSN SS output , all others input
ldi temp,(1<<DDB7)|(1<<DDB5)|(1<<DDB4)|(1<<DDB1)|(1<<DDB3)
out DDRB,temp
;Enable SPI, Master, set clock rate fck/8
ldi temp, (1<<SPI2X)
out SPSR, temp ;Double speed
ldi temp,(1<<SPE)|(1<<MSTR)|(1<<SPR0)|(0<<SPR1)|(0<<DORD)|(0<<CPHA)|(0<<CPOL)
out SPCR,temp
ldi temp, (1<<PB3);Start CSN high
out PORTB, temp
;Eneble interupts
ldi temp, (0<<ISC11)|(0<<ISC10)
out MCUCR, temp ;INT1 generates an interrupt request on low level
ldi temp, (1<<INT1)
out GICR, temp ;Enables ext INT1 interrupts
sei
Init_NRF24L01:
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, W_REGISTER ;Accedo al W_REGISTER al quale gli passo l'indirizzo di CONFIG register
subi data, -REG_CONFIG
rcall SPI_MasterTransmit
ldi data, 0b01001110 ;PWR_UP and TXmode (in CONFIG register) set TX_DS and MAX_DS interrupt active low and CRC0 (2 bytes)
rcall SPI_MasterTransmit
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, W_REGISTER;Accedo al W_REGISTER al quale gli passo l'indirizzo di EN_AA register
subi data,-REG_EN_AA
rcall SPI_MasterTransmit
ldi data, 0b00000001 ;Abilito ENAA_P0
rcall SPI_MasterTransmit
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, W_REGISTER ;Abilta l'indirizzo addr0 in ricezione
subi data,-REG_EN_RXADDR
rcall SPI_MasterTransmit
ldi data, 0b00000001
rcall SPI_MasterTransmit
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, W_REGISTER
subi data, -REG_RF_CH
rcall SPI_MasterTransmit
ldi data, 0b00101000 ;Set 2,44 GHz frequency
rcall SPI_MasterTransmit
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, W_REGISTER
subi data, -REG_RF_SETUP
rcall SPI_MasterTransmit
ldi data, 0b00001110 ;Set air data rate 2Mbps, set output power 0dBm
rcall SPI_MasterTransmit
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, W_REGISTER ;Addressing TX5
subi data, -REG_TX_ADDR
rcall SPI_MasterTransmit
ldi data,0x34 ;Sending address 0xB3B4B5B605
rcall SPI_MasterTransmit
ldi data,0x43
rcall SPI_MasterTransmit
ldi data,0x10
rcall SPI_MasterTransmit
ldi data,0x10
rcall SPI_MasterTransmit
ldi data,0x01
rcall SPI_MasterTransmit
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, W_REGISTER ;Addressing RX0
subi data, -REG_RX_ADDR_P0
rcall SPI_MasterTransmit
ldi data,0x34 ;Sending address 0xB3B4B5B605
rcall SPI_MasterTransmit
ldi data,0x43
rcall SPI_MasterTransmit
ldi data,0x10
rcall SPI_MasterTransmit
ldi data,0x10
rcall SPI_MasterTransmit
ldi data,0x01
rcall SPI_MasterTransmit
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
Start:
ldi temp, 0b11111110
out PORTC, temp
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ser data ;NOP write nop for receiving status register
rcall SPI_MasterTransmit
rcall SPI_MasterRecive
sbi PORTB, 3
out PORTC, status
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, W_TX_PAYLOAD
rcall SPI_MasterTransmit
ldi data, 0b01010101
rcall SPI_MasterTransmit
sbi PORTB, 1 ;Alza CE per iniziare la trasmissione
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
ldi temp, 0b11011111
out PORTC, temp
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ser data ;NOP write nop for receiving status register
rcall SPI_MasterTransmit
rcall SPI_MasterRecive
sbi PORTB, 3
out PORTC, status
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
sbic PINC, 0
rcall Flush_TXFIFO
nop
rjmp Start
Flush_TXFIFO:
ldi temp, 0b01111111
out PORTC, temp
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, FLUSH_TX
rcall SPI_MasterTransmit
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
;Leggi STATUS
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ser data ;NOP write nop for receiving status register
rcall SPI_MasterTransmit
rcall SPI_MasterRecive
sbi PORTB, 3
out PORTC, status
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
ret
Flush_Max_Rt:
ldi temp, 0b10111111
out PORTC, temp
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, W_REGISTER ;Abilta l'indirizzo addr0 in ricezione
subi data,-REG_STATUS
rcall SPI_MasterTransmit
ldi data, 0b00010000 ;Reset MAX_RT
rcall SPI_MasterTransmit
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
;Leggi STATUS
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ser data ;NOP write nop for receiving status register
rcall SPI_MasterTransmit
rcall SPI_MasterRecive
sbi PORTB, 3
out PORTC, status
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
ret
IRQ1:
ldi temp, 0b10111111
out PORTC, temp
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
;Leggi STATUS
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ser data ;NOP write nop for receiving status register
rcall SPI_MasterTransmit
rcall SPI_MasterRecive
sbi PORTB, 3 ;Alza CSN per abilitare la comunicazione SPI
out PORTC, status
sbic PINC, 4
rcall Flush_Max_Rt
;Leggi STATUS
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ser data ;NOP write nop for receiving status register
rcall SPI_MasterTransmit
rcall SPI_MasterRecive
sbi PORTB, 3 ;Alza CSN per abilitare la comunicazione SPI
out PORTC, status
sbic PINC, 5
rjmp End
reti
End:
ldi temp, 0b11101111
rjmp End
;*************************************************
;* written by: Abbruzzo Giovanni
;* date: 2/05/2013
;* version: 1.0
;* file saved as: Project2dot6ricevitore.asm
;* for AVR: m8515
;* clock frequency: 8MHz
;* items: setup SPI and using NRF24L01+ device
;* Legend:
;* PB1=CE (to nRF24L01 side)
;*
;* PB3=CSN (to nRF24L01 side)
;* PB4=SS (non utilizzato)
;* PB5=MOSI
;* PB6=MISO
;* PB7=SCK
;* PD3=INT1 (to nRF24L01 side)
;*
;* W_REGISTER=001AAAAA
;* R_REGISTER=000AAAAA
;*
;*
;*************************************************
.nolist
.include "m8515def.inc"
.include "E:\AVRFiles\Library\nrf24l01registers.inc"
.list
.def temp=r16
.def data=r17
.def counter=r18
.def counter2=r19
.def regcounter=r20
.def target=r21
.def status=r22
;Look-up-table
rjmp Init; Reset Handler
reti ; IRQ0 Handler (PD2)
rjmp Start; IRQ1 Handler (PD3)
reti ; Timer2 Compare Handler
reti ; Timer2 Overflow Handler
reti ; Timer1 Capture Handler
reti ; Timer1 Compare A Handler
reti ; Timer1 Compare B Handler
reti ; Timer1 Overflow Handler
reti ; Timer0 Overflow Handler
reti ; SPI Transfer Complete Handler
reti ; USART RX Complete Handler
reti ; UDR Empty Handler
reti ; USART TX Complete Handler
reti ; ADC Conversion Complete Handler
reti ; EEPROM Ready Handler
reti ; Analog Comparator Handler
reti ; Two-wire Serial Interface Handle
reti ; IRQ2 Handler
reti ; Timer0 Compare Handler
reti ; Store Program Memory Ready Handler
;Wait 30 mS about
Wait:
dec counter
breq PC+2
rjmp Wait
ldi counter, 240
dec counter2
breq PC+2
rjmp Wait
ldi counter2,240
ret
One_sec:
in temp, TCNT0 ;read T/C0
cp temp, target ;is temp = target?
breq PC + 2 ;yes, so skip 2 steps
rjmp One_sec ;no, so loops back to One_sec
ldi temp, 63
add target, temp ;add n1 to target
inc regcounter ;increment regcounter
cpi regcounter, 62 ;is regcounter = n2?
breq PC+2 ;yes, so skip 2 steps
rjmp One_sec ;no, so loops back to One_sec
clr regcounter ;restart to count with 0
ret
;Start transmission throuth SPI
SPI_MasterRecive:
sbis SPSR, SPIF
rjmp SPI_MasterRecive
in status, SPDR
ret
SPI_MasterTransmit:
; Start transmission of data (r17)
out SPDR,data
Wait_Transmit:
; Wait for transmission complete
sbis SPSR,SPIF
rjmp Wait_Transmit
ret
Init: ldi temp, LOW(RAMEND) ;Initialize Stack Pointer
out SPL, temp
ldi temp, HIGH(RAMEND)
out SPH, temp
;Initialize Ports
ser temp
out DDRC, temp ;Set PORTC as output
out PORTC, temp ;Start with LEDs off
;Variables
ldi counter, 240
ldi counter2, 240
;SPI_MasterInit
;Set MOSI, SCK,CE,CSN SS output , all others input
ldi temp,(1<<DDB7)|(1<<DDB5)|(1<<DDB4)|(1<<DDB1)|(1<<DDB3)
out DDRB,temp
;Enable SPI, Master, set clock rate fck/8
ldi temp, (1<<SPI2X)
out SPSR, temp ;Double speed
ldi temp,(1<<SPE)|(1<<MSTR)|(1<<SPR0) ;
out SPCR,temp
ldi temp, (1<<PB3);Start CSN high
out PORTB, temp
;Timer counter
ldi temp, 0b00000101
out TCCR0, temp ;T/C0 counts at CK/1024
clr temp
out TCNT0, temp ;init T/C0 to zero
ldi target, 63
clr regcounter ;start to count with 0
;Eneble interupts
ldi temp, (0<<ISC11)|(0<<ISC10)
out MCUCR, temp ;INT1 generates an interrupt request on low level
ldi temp, (1<<INT1)
out GICR, temp ;Enables extINT1 interrupt
Init_NRF24L01:
;Remember CSN start high
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, W_REGISTER ;Accedo al W_REGISTER al quale gli passo l'indirizzo di CONFIG register
subi data, -REG_CONFIG
rcall SPI_MasterTransmit
ldi data, 0b00111111 ;PWR_UP and RXmode (in CONFIG register) set RX_DS interrupt active low and CRC0 (2 bytes)
rcall SPI_MasterTransmit
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, W_REGISTER;Accedo al W_REGISTER al quale gli passo l'indirizzo di EN_AA register
subi data,-REG_EN_AA
rcall SPI_MasterTransmit
ldi data, 0b00000001 ;Abilito ENAA_P0
rcall SPI_MasterTransmit
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, W_REGISTER ;Abilta l'indirizzo addr0 in ricezione
subi data,-REG_EN_RXADDR
rcall SPI_MasterTransmit
ldi data, 0b00000001
rcall SPI_MasterTransmit
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, W_REGISTER
subi data, -REG_RF_CH
rcall SPI_MasterTransmit
ldi data, 0b00101000 ;Set 2,44 GHz frequency
rcall SPI_MasterTransmit
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, W_REGISTER
subi data, -REG_RF_SETUP
rcall SPI_MasterTransmit
ldi data, 0b00001110 ;Set air data rate 2Mbps, set output power 0dBm and eneble LNA
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, W_REGISTER ;Addressing RX0
subi data, -REG_RX_ADDR_P0
rcall SPI_MasterTransmit
ldi data,0x34 ;Sending address 0xB3B4B5B605
rcall SPI_MasterTransmit
ldi data,0x43
rcall SPI_MasterTransmit
ldi data,0x10
rcall SPI_MasterTransmit
ldi data,0x10
rcall SPI_MasterTransmit
ldi data,0x01
rcall SPI_MasterTransmit
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, W_REGISTER ;Addressing RX0
subi data, -REG_RX_PW_P0
rcall SPI_MasterTransmit
ldi data, 0b00000001 ;1 byte
rcall SPI_MasterTransmit
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
Loop:
cbi PORTC, 0
sei
sbi PORTB, 1 ;Alza CE per iniziare la ricezione
nop
nop
nop
nop
rjmp Loop
Start:
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, R_REGISTER
subi data, -REG_CONFIG ;Leggi config
rcall SPI_MasterTransmit
ldi data, 0b00001111 ;Questo byte serve solo per riceveere status
rcall SPI_MasterTransmit
rcall SPI_MasterRecive ;Ricevi status
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
out PORTC, status
rcall One_sec
rcall One_sec ;Aspetta 3 secondo
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, R_REGISTER
subi data, -REG_EN_AA ;Leggi en_aa
rcall SPI_MasterTransmit
ldi data, 0b00001111 ;Questo byte serve solo per ricevere status
rcall SPI_MasterTransmit
rcall SPI_MasterRecive ;Ricevi status
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
out PORTC, status
rcall One_sec
rcall One_sec ;Aspetta 3 secondo
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, R_REGISTER
subi data, -REG_EN_RXADDR ;Leggi rx_addr
rcall SPI_MasterTransmit
ldi data, 0b00001111 ;Questo byte serve solo per riceveere status
rcall SPI_MasterTransmit
rcall SPI_MasterRecive ;Ricevi status
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
out PORTC, status
rcall One_sec
rcall One_sec ;Aspetta 3 secondo
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, R_REGISTER
subi data, -REG_RF_CH;Leggi rf_ch
rcall SPI_MasterTransmit
ldi data, 0b00001111 ;Questo byte serve solo per riceveere status
rcall SPI_MasterTransmit
rcall SPI_MasterRecive ;Ricevi status
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
out PORTC, status
rcall One_sec
rcall One_sec ;Aspetta 3 secondo
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, R_REGISTER
subi data, -REG_RF_SETUP ;Leggi rf_setup
rcall SPI_MasterTransmit
ldi data, 0b00001111 ;Questo byte serve solo per riceveere status
rcall SPI_MasterTransmit
rcall SPI_MasterRecive ;Ricevi status
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
out PORTC, status
rcall One_sec
rcall One_sec ;Aspetta 3 secondo
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, R_REGISTER
subi data, -REG_RX_PW_P0 ;Leggi config
rcall SPI_MasterTransmit
ldi data, 0b00001111 ;Questo byte serve solo per riceveere status
rcall SPI_MasterTransmit
rcall SPI_MasterRecive ;Ricevi status
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
out PORTC, status
rcall One_sec
rcall One_sec ;Aspetta 3 secondi
rcall One_sec
rcall One_sec
rcall One_sec
rcall One_sec
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, R_RX_PAYLOAD
rcall SPI_MasterTransmit
ser data ;Questo byte serve solo per riceveere payload
rcall SPI_MasterTransmit
rcall SPI_MasterRecive ;Ricevi status
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
out PORTC, status
cbi PORTB, 3 ;Abbassa CSN per abilitare la comunicazione SPI
ldi data, W_REGISTER
subi data,-REG_STATUS
rcall SPI_MasterTransmit
ldi data, 0b01000000 ;Reset RX_DR
rcall SPI_MasterTransmit
sbi PORTB, 3 ;Alza CSN per chiudere la comunicazione SPI
Loop1:
nop
nop
rjmp Loop1
/* Memory Map */
.equ REG_CONFIG = 0x00
.equ REG_EN_AA = 0x01
.equ REG_EN_RXADDR = 0x02
.equ REG_SETUP_AW = 0x03
.equ REG_SETUP_RETR =0x04
.equ REG_RF_CH =0x05
.equ REG_RF_SETUP =0x06
.equ REG_STATUS =0x07
.equ REG_OBSERVE_TX = 0x08
.equ REG_CD =0x09
.equ REG_RX_ADDR_P0= 0x0A
.equ REG_RX_ADDR_P1= 0x0B
.equ REG_RX_ADDR_P2 = 0x0C
.equ REG_RX_ADDR_P3 = 0x0D
.equ REG_RX_ADDR_P4 = 0x0E
.equ REG_RX_ADDR_P5 = 0x0F
.equ REG_TX_ADDR = 0x10
.equ REG_RX_PW_P0 = 0x11
.equ REG_RX_PW_P1 = 0x12
.equ REG_RX_PW_P2 = 0x13
.equ REG_RX_PW_P3 = 0x14
.equ REG_RX_PW_P4 = 0x15
.equ REG_RX_PW_P5 = 0x16
.equ REG_FIFO_STATUS =0x17
.equ REG_FEATURE =0x1D
.equ REG_DYNPD= 0x1C
/* Bit Mnemonics */
.equ REG_MASK_RX_DR= 6
.equ REG_MASK_TX_DS = 5
.equ REG_MASK_MAX_RT =4
.equ REG_EN_CRC =3
.equ REG_CRCO =2
.equ REG_PWR_UP = 1
.equ REG_PRIM_RX = 0
.equ REG_ENAA_P5 = 5
.equ REG_ENAA_P4 = 4
.equ REG_ENAA_P3 = 3
.equ REG_ENAA_P2 = 2
.equ REG_ENAA_P1 = 1
.equ REG_ENAA_P0 = 0
.equ REG_ERX_P5 = 5
.equ REG_ERX_P4 = 4
.equ REG_ERX_P3 = 3
.equ REG_ERX_P2 = 2
.equ REG_ERX_P1 = 1
.equ REG_ERX_P0 = 0
.equ REG_AW = 0
.equ REG_ARD = 4
.equ REG_ARC = 0
.equ REG_PLL_LOCK = 4
.equ REG_RF_DR = 3
.equ REG_RF_PWR = 1
.equ REG_LNA_HCURR = 0
.equ REG_RX_DR = 6
.equ REG_TX_DS =5
.equ REG_MAX_RT =4
.equ REG_RX_P_NO =1
.equ REG_TX_FULL =0
.equ REG_PLOS_CNT =4
.equ REG_ARC_CNT =0
.equ REG_TX_REUSE =6
.equ REG_FIFO_FULL =5
.equ REG_TX_EMPTY =4
.equ REG_RX_FULL =1
.equ REG_RX_EMPTY =0
.equ REG_RPD =0x09
.equ REG_RF_DR_LOW =5
.equ REG_RF_DR_HIGH =3
.equ REG_RF_PWR_LOW =1
.equ REG_RF_PWR_HIGH =2
/* Instruction Mnemonics */
.equ R_REGISTER =0x00
.equ W_REGISTER =0x20
.equ REGISTER_MASK =0x1F
.equ R_RX_PAYLOAD =0x61
.equ W_TX_PAYLOAD =0xA0
.equ FLUSH_TX =0xE1
.equ FLUSH_RX =0xE2
.equ REUSE_TX_PL =0xE3
.equ FAI_NIENTE =0xFF
.equ ACTIVATE =0xA0
.equ DATADATA =0x73
Return to Microcontrollori e microprocessori
Users browsing this forum: No registered users and 6 guests