سلام به همگی.
من قبلا با بسکام توسط دستورات shiftin و shiftout یه spi نرم افزاری درست کردم.اما حالا میخام همین کار رو با lpc انجام بدم.
برای shiftout این تابع رو نوشتم و تو پروتئوس امتحان کردم مو نمیزد:
void shift_out(unsigned char data){
unsigned char i;
for(i=8;i>0;i--){
mosi((data>>(i-1))&1);
delay_us(5);
clk(0);
delay_us(5);
clk(1);}}
اما برای shiftin دچار مشکل شدم.از دوستان کسی میدونه این دستور چه طوری کار میکنه؟منظورم اینه که دیاگرام زمانیش چه جوریه؟
اینو نوشتم اما کار نمیکنه:
unsigned char shift_in(void){
unsigned char a,b;
a=0;
for(b=0;b<8;b++){
wait_us(5);
clk(0);
wait_us(5);
clk(1);
a=a<<1;
a=a|miso();}
لطفا کمک کنید.
من قبلا با بسکام توسط دستورات shiftin و shiftout یه spi نرم افزاری درست کردم.اما حالا میخام همین کار رو با lpc انجام بدم.
برای shiftout این تابع رو نوشتم و تو پروتئوس امتحان کردم مو نمیزد:
void shift_out(unsigned char data){
unsigned char i;
for(i=8;i>0;i--){
mosi((data>>(i-1))&1);
delay_us(5);
clk(0);
delay_us(5);
clk(1);}}
اما برای shiftin دچار مشکل شدم.از دوستان کسی میدونه این دستور چه طوری کار میکنه؟منظورم اینه که دیاگرام زمانیش چه جوریه؟
اینو نوشتم اما کار نمیکنه:
unsigned char shift_in(void){
unsigned char a,b;
a=0;
for(b=0;b<8;b++){
wait_us(5);
clk(0);
wait_us(5);
clk(1);
a=a<<1;
a=a|miso();}
لطفا کمک کنید.
دیدگاه