Functions

pn9
[RF tests]


PN9 Generator.

Uses PN9 to generate a pseudo-random number sequence. The LFSR uses x^9 + x^5 as the primitive polynom. pn9_get_byte() returns the sequence one byte at the time. The following code shows how to generate 40 bits (5 bytes) of the PN9 sequence

uint8_t idx;
uint8_t sequence[5];

pn9_init();

for (idx = 0; idx < 5; idx++)
{
  sequence[idx] = pn9_get_byte();
}

Functions

void pn9_init (void)
uint8_t pn9_get_byte (void)

Function Documentation

void pn9_init ( void   )

Init CCITT PN9 sequence. This function sets the starting sequence of CCITT PN9 sequence.

Definition at line 32 of file pn9.c.

{
    bits_9_to_2 = 0xFF;
    bit_1 = 1;
}
uint8_t pn9_get_byte ( void   )

Get the next 8 bits of PN9 sequence. Each time this function is called the next 8 bit of the PN9 sequence is calculated and returned.

Definition at line 38 of file pn9.c.

{
    bit feedback;
    uint8_t i, out_value;

    out_value = bits_9_to_2;
    
    for (i = 0; i < 8; i++)
    {
        // Tap the register
        feedback =  
            ((((bits_9_to_2 & pn9_bit9)>>4) ^ (bits_9_to_2 & pn9_bit5)) == 0) ? 0 : 1;
        // Shift
        bits_9_to_2<<=1;
        bits_9_to_2 |= (uint8_t) bit_1;
        // Enter feedback
        bit_1 = feedback;
    } 

    return out_value;
}