اساتید عزیز سلام. بنده سعی دارم تا بین رزپری و mega32 به ارتباط spi داشته باشم. کد سمت mega32 رو ملاحظه میکنید:
مگا32 در نقش slave هست و رزپری Master. سرعت کلاک spi در rpi برابر 250000Hz هست.
لازم به ذکر هست که سرعت کلاک میکرو 1MHz ست شده. من توقع دارم با هر بار اجرا شدن کد ارسال اطلاعات روی رزپری، عبارت "GOTHA" روی LCD نمایش داده بشه اما یکی دو بار بیشتر این اتفاق نمیفته و از دفعه دوم به بعد این عبارت نشون داده نمیشه روی LCD (انگار برنامه وارد روتین وقفه نمیشه)
ممنون میشم دوستان کمکم کنین.
کد:
#include <mega32.h> #include <delay.h> #include <glcd.h> #include <font5x7.h> // Declare your global variables here void main(void) { GLCDINIT_t glcd_init_data; glcd_init_data.font=font5x7; glcd_init(&glcd_init_data); glcd_clear(); PORTD=(1<<PORTD7)|(1<<PORTD6)|(1<<PORTD5)|(1<<PORTD4)|(1<<PORTD3)|(1<<PORTD2)|(1<<PORTD1)|(1<<PORTD0); // Activate pullups DDRB=(1<<DDB6); // MISO SPCR=(1<<SPIE)|(1<<SPE); // Slave mode , Interrupt enabled , Clock = Fcpu / 4 #asm("sei"); while(1); } interrupt [SPI_STC] void SPI_Serial_Transfer_Complete(void) { glcd_outtextxyf(5,40,"GOTCHA!"); delay_ms(800); glcd_clear(); }
لازم به ذکر هست که سرعت کلاک میکرو 1MHz ست شده. من توقع دارم با هر بار اجرا شدن کد ارسال اطلاعات روی رزپری، عبارت "GOTHA" روی LCD نمایش داده بشه اما یکی دو بار بیشتر این اتفاق نمیفته و از دفعه دوم به بعد این عبارت نشون داده نمیشه روی LCD (انگار برنامه وارد روتین وقفه نمیشه)
ممنون میشم دوستان کمکم کنین.
دیدگاه