Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

SPI "freezes"

Status
Not open for further replies.

thebignoob

New Member
Hello,
I have an issue with spi that freezes. I'm using atmega88 with nrf24l01 but when i try to test spi communication i get stuck.
I initialize spi based on atmel specifications:

Code:
DDRB |= (1<<DDB5) | (1<<DDB3) | (1<<DDB2) |(1<<DDB1);
SPCR |= (1<<SPE)|(1<<MSTR);

And when I try to test out writing to spi (and print out to terminal ) i get stuck looping... ( i have usart initialized and used without any problems)

Code:
char spi_rw(unsigned char x)
{
    SPDR = x;   
    //get stuck in this while loop
    while(!(SPSR & (1<<SPIF)));
    //printing to terminal after get's out of loop but never go out   
    return SPDR;
}

I'm trying to read STATUS register:

Code:
uint8_t get_reg(uint8_t reg)
{   

    _delay_us(10);
    CLEARBIT(PORTB, 2);    //CSN low so nrf start listen for command
    _delay_us(10);
    spi_rw(R_REGISTER + reg);   
    _delay_us(10);
    reg = spi_rw(NOP);
    _delay_us(10);
    SETBIT(PORTB, 2);    //CSN IR_High nrf do nothing now
    return reg;   
}


I try calling get_reg(STATUS) and passing it to usart to print out resultand I get nowhere since code stuck in while loop.

P.S. i use this simple functions to set and clear bits

Code:
#define BIT(x) (1<<(x))
#define SETBITS(x,y) ((x)|=(y)))
#define CLEARBITS(x,y) ((x) &=(~(y)))
#define SETBIT(x,y) SETBITS((x), (BIT((y))))
#define CLEARBIT(x,y) CLEARBITS((x), (BIT((Y))))


Thanks in advance, any help would be greatly appreciated. :(
 
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top