من بین آی سی اتمگا 16 بعنوان master و یک اتمگا 128 بعنوان slave میخوام ارتباط برقرار کنم
برنامه هم طبق زیر است(البته تست)
master:
و slave :
ولی فقط شرط g=0 اجرا میشه و مابقی دستورات از سمت master در slave اجرا نمیشه
تصویر شبیه سازی هم در زیر قرار داده شده
ممنون میشم کمک کنین.
برنامه هم طبق زیر است(البته تست)
master:
کد:
#include <mega16.h>
#include <delay.h>
#include <spi.h>
int m=0;
void main(void)
{
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0xB0;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x01;
SPCR=0x53;
SPSR=0X00;
while (1)
{
if(PINC.0==1)m=1;
if(PINC.1==1)m=2;
if(PINC.2==1)m=3;
if(PINC.3==1)m=4;
if(PINC.4==1)m=5;
if(PINC.5==1)m=6;
if(PINC.6==1)m=7;
if(PINC.7==1)m=8;
if(PINA.7==1)m=9;
if(PINA.6==1)m=10;
if(PINA.5==1)m=11;
if(PINA.4==1)m=12;
if(PINA.3==1)m=13;
if(PINA.2==1)m=14;
if(PINA.1==1)m=15;
if(PINA.0==1)m=16;
spi(m);
delay_ms(200);
}
}
کد:
#include <mega128a.h>
#include <delay.h>
#include <spi.h>
void main(void)
{
int get=0;
int g=0;
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x68;
PORTC=0x00;
DDRC=0x03;
PORTD=0x00;
DDRD=0x01;
PORTE=0x00;
DDRE=0x00;
PORTF=0x00;
DDRF=0x00;
PORTG=0x00;
DDRG=0x00;
SPCR=0x43;
SPSR=0X00;
while (1)
{
get=spi(g);
delay_ms(10);
if(get==1)
{
PORTB.5=0;
PORTC.0=1;
PORTD.0=0;
PORTB.6=1;
PORTC.1=0;
}
if(get==0)
{
PORTB.5=1;
PORTC.0=0;
PORTD.0=1;
PORTB.6=1;
PORTC.1=0;
}
if(get==2)
{
PORTB.5=0;
PORTC.0=0;
PORTB.6=0;
PORTC.1=1;
}
}
}
تصویر شبیه سازی هم در زیر قرار داده شده
ممنون میشم کمک کنین.






دیدگاه