Generic RF Receiver


Closed Thread
Results 1 to 1 of 1
  1. #1
    Join Date
    Dec 2005
    Posts
    1,073

    Default Generic RF Receiver

    This receives 12-48 bits of PDM (Pulse Distance Modulation) or PWM (Pulse Width Modulation) codes with bit periods from 1.7-2.5mS and with start pulses of 1.9-9.6mS.

    To use with IR, change all While GPIO.1 to While !GPIO.1 and vice versa.

    It uses Timer1 to measure start pulses and bit periods and Timer0 to timeout if a bit period exceeds 2.5mS.
    Code:
    '=======================| RF RECEIVER |=========================
    
    'PIC12F629 @ 4MHz          455 words		uses MPASM
    
    'Pin 1 - Vdd
    'Pin 2 - GPIO.5
    'Pin 3 - GPIO.4
    'Pin 4 - GPIO.3
    'Pin 5 - GPIO.2 RS232 output @ 9600bps
    'Pin 6 - GPIO.1 Receives up to 48 bits of PDM/PWM RF with lead-in of 2-9mS
    'Pin 7 - GPIO.0
    'Pin 8 - Vss
    '===============================================================
    
    @ __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF 
    
    DEFINE OSCCAL_1K 1 
    DEFINE OSC 4					
    DEFINE DEBUG_REG GPIO
    DEFINE DEBUG_BIT 2 				
    DEFINE DEBUG_MODE 1 				
    DEFINE DEBUG_BAUD 9600
    	
    @Timer1 = TMR1L
    Timer1  VAR  	WORD EXT
    T0IF   	VAR 	INTCON.2               	'TMR0 overflow flag 
    TMR1ON 	VAR	T1CON.0  		'Timer1 ON/OFF control bit
    RF      VAR 	byte[6]
    ID	VAR	byte
    period	VAR 	word
    i       VAR 	byte   
    bits	VAR	byte
    bytes	VAR	byte           	
    sof  	VAR 	word 				
    cnt	VAR	byte
    	       
            CMCON     	=%00000111      'disable comparators        
            INTCON		=%00000000	'disable interrupts
            T1CON		=%00000000	'TMR1 no prescaler	
            OPTION_REG	=%10000001	'TMR0 1:4 prescaler, no PU	
                    
            DEBUG "RF Receiver",13,10
            
    init:	RF[0]=0:RF[1]=0:RF[2]=0:RF[3]=0:RF[4]=0:RF[5]=0
            While !GPIO.1:Wend		'wait rising edge	
            TMR1ON=0:Timer1=0:TMR1ON=1	'stop, clear, start TMR1	
            While GPIO.1:Wend               'wait falling edge
            TMR1ON=0:sof=Timer1		'stop, read TMR1
            If (sof<1900) Then init
            If (sof>9600) Then init
            While !GPIO.1:Wend		'wait rising edge
            TMR1ON=0:Timer1=0:TMR1ON=1	'stop, clear, start TMR1
            TMR0=49:T0IF=0:cnt=0		'reset TMR0, cnt	        	
            i=0
            Repeat
              While GPIO.1                  'wait falling edge
    	    If T0IF Then 
                  GoSub cycles 			          
                EndIf  
              Wend				'falling edge
              While !GPIO.1                 'wait rising edge
    	    If T0IF Then
                  GoSub cycles
                EndIf  
              Wend				'rising edge
              TMR1ON=0:period=Timer1        'stop, read TMR1
    	  Timer1=0:TMR1ON=1 		'clear, start TMR1           
              TMR0=49:T0IF=0:cnt=0		'reset TMR0, cnt
              If (period<850) Then init		
              If (period>1300) Then			
                RF.0(i)=1				
              EndIf
              i=i+1
            Until (i>47)
    break:  If (i<12) Then init
            bytes=i/8
            If i//8 Then
    	  bytes=bytes+1
            EndIf
            Debug ihex2 i        
            For i = 0 to bytes-1
      	  Debug ihex2 RF[i]
            Next    
            DEBUG 32,dec sof,13,10
            GoTo init
    
    cycles: TMR0=49:T0IF=0:cnt=cnt+1
    	If (cnt>2) Then break          'timeout @2.5mS
    	Return
    		
            End
    Last edited by dhouston; - 8th September 2009 at 14:39.

Similar Threads

  1. 433 Mhz Data Receiver
    By Pesticida in forum mel PIC BASIC Pro
    Replies: 14
    Last Post: - 29th November 2010, 02:26
  2. Linx RXM-900-HP3 Rf Modules
    By Steve_88 in forum Off Topic
    Replies: 1
    Last Post: - 3rd June 2008, 15:58
  3. RF Interferance
    By Toley00 in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 8th January 2007, 13:33
  4. Help with CC1100 RF Modules.
    By charudatt in forum mel PIC BASIC Pro
    Replies: 13
    Last Post: - 27th November 2006, 20:58
  5. problem with RF receiver
    By nanami7702002 in forum mel PIC BASIC Pro
    Replies: 13
    Last Post: - 31st January 2005, 21:55

Members who have read this thread : 1

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts