Jump to content

need help with simple avr program

I need to create peer to peer communication between two terminals using SPI. I managed to get data from terminal connected to master into slave's terminal but I have no idea how to send data from slave to master.

I am complete noob so the code is really f**ked up especially after trying to get communication from slave to master working an there are probably some stupid mistakes.

Master



void main() {
char send;
char receive;
DDRB |= 1<<0;
PORTB &= ~(1<<0);
SPI1_Init_Advanced(_SPI_MASTER, _SPI_FCY_DIV4, _SPI_CLK_LO_LEADING);


  UART1_Init(9600);
  
  
  
  SPCR |=(1<<SPE) | (1<<SPR1) ;
  SPCR &=~(1<< DORD)& ~(1<<SPIE);
  SPCR &= ~(1<<CPOL) & ~(1<<CPHA);

  
  

while(1)
{
 if (UART1_Data_Ready() == 1) {
 receive = UART1_Read();
 }
 SPDR = receive;
  while(!(SPSR & (1<<SPIF) ));
     UART1_Write(SPDR);
      delay_ms(1000);

 
}
}

Slave

char receive;
void main() {

char q;
   SPI1_Init_Advanced(_SPI_SLAVE, _SPI_FCY_DIV4, _SPI_CLK_LO_LEADING);

        UART1_Init(9600);



       SPCR |=(1<<SPE);
       SPCR &=~(1<< DORD)& ~(1<<SPIE);
  SPCR &= ~(1<<CPOL) & ~(1<<CPHA);



   while(1)
   {

 if (UART1_Data_Ready() == 1) {
 receive = UART1_Read();
 }

      UART1_Write(SPDR);
      SPDR = receive;
while(!(SPSR & (1<<SPIF) ));




   }
 }

siczHq7.png

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×