سلام دوستان
من یک تراشه برنامه پذیر دارم که قرار است به عنوان slave باشد و از طریق ارتباط spi از یک میکرو فرمان بگیرد اما از آنجایی که پروتکل spi قطعه مورد نظرم 16بیتی است به جای پایه ss خود میکرو avr از پایه portb.4 در atmega128 استفاده کردم وکدم را به صورت زیر نوشتم: وقفه spi فعال است و هر وقت فرستادن یا گرفتن 8 بیت تمام می شود مقدار k در برنامه intrupt یک می شود و datase1 وdatase2 داده های 8 بیتی هستند .
به نظرم تمام مراحل کار درست است اما وقتی شبیه سازی می کنم یک کلاک از دست میدهم.
ممون می شم اگر راهنمااییم کنید و بگید اصلا از پایه کار من درسته ؟ یعنی می شه ارتباط spi یک قطعه با پروتکل spi 16 بیتی با avr که پروتکل spi 8 بیتی دارد را بر قرار کرد ؟
من یک تراشه برنامه پذیر دارم که قرار است به عنوان slave باشد و از طریق ارتباط spi از یک میکرو فرمان بگیرد اما از آنجایی که پروتکل spi قطعه مورد نظرم 16بیتی است به جای پایه ss خود میکرو avr از پایه portb.4 در atmega128 استفاده کردم وکدم را به صورت زیر نوشتم: وقفه spi فعال است و هر وقت فرستادن یا گرفتن 8 بیت تمام می شود مقدار k در برنامه intrupt یک می شود و datase1 وdatase2 داده های 8 بیتی هستند .
SPDR=datase1;
PORTB=PORTB&(0xee);//PORTB.4 used for cs,PORTB.0=ss(active both of them)
while(k!=1);
data1=data;
k=0;//8 bit spi is completed
PORTB=PORTB|(0x01);//PORTB.0=1
SPDR=datase2;
PORTB=PORTB&(0xfe);//PORTB.0=0 for syncronisation
while(k!=1);
data2=data;//second 8 bit spi is completed(16 bit spi)
k=0;
PORTB=PORTB|(0x10);//cs=0
PORTB=PORTB&(0xee);//PORTB.4 used for cs,PORTB.0=ss(active both of them)
while(k!=1);
data1=data;
k=0;//8 bit spi is completed
PORTB=PORTB|(0x01);//PORTB.0=1
SPDR=datase2;
PORTB=PORTB&(0xfe);//PORTB.0=0 for syncronisation
while(k!=1);
data2=data;//second 8 bit spi is completed(16 bit spi)
k=0;
PORTB=PORTB|(0x10);//cs=0
به نظرم تمام مراحل کار درست است اما وقتی شبیه سازی می کنم یک کلاک از دست میدهم.
ممون می شم اگر راهنمااییم کنید و بگید اصلا از پایه کار من درسته ؟ یعنی می شه ارتباط spi یک قطعه با پروتکل spi 16 بیتی با avr که پروتکل spi 8 بیتی دارد را بر قرار کرد ؟
دیدگاه