سلام به تمامی دوستان و اساتید
میخواهم چند بایت اطلاعات را به یک IC پشت سر هم ارسال کنم ولی بین هر بایت باید lach آن را به نشانه اتمام یک بایت فعال کنم . :redface:
به همین منظور از اینتراپ SPI را فعال کردم ولی با یک بایت ارسال روتین اینتراپت فعال شده و دستورات داخل آن اجراء شده و دیگر هیچ کاری انجام نمیشود
فکر کنم باید یک روشی پرچم اینتراپ را پاک کنیم تا مجددا دیتای جدید ارسال شود. لطفا راهنمای بفرمائید تا چه کنم ؟ :cry:
(((( لازم به ذکر است مد ارتباط یک طرفه است و avr همیشه در مد master میباشد. و من فقط از پایه های mosi , sck استفاده کرده ام))))
این قسمتی از برنام است که روتین وقفه SPI را نشان میدهد و حلقه که در main برنامه اطلاعات را ارسال میکند. :smile:
interrupt [SPI_STC] void spi_isr(void)
{
unsigned char data;
data=SPDR;
LACH=1;delay_us(1); LACH=0;
}
///////////////////////////////////////////////////
while (1)
{
data_send=0b00110110;
b=spi(data_send);
delay_ms(100);
{
میخواهم چند بایت اطلاعات را به یک IC پشت سر هم ارسال کنم ولی بین هر بایت باید lach آن را به نشانه اتمام یک بایت فعال کنم . :redface:
به همین منظور از اینتراپ SPI را فعال کردم ولی با یک بایت ارسال روتین اینتراپت فعال شده و دستورات داخل آن اجراء شده و دیگر هیچ کاری انجام نمیشود

فکر کنم باید یک روشی پرچم اینتراپ را پاک کنیم تا مجددا دیتای جدید ارسال شود. لطفا راهنمای بفرمائید تا چه کنم ؟ :cry:
(((( لازم به ذکر است مد ارتباط یک طرفه است و avr همیشه در مد master میباشد. و من فقط از پایه های mosi , sck استفاده کرده ام))))
این قسمتی از برنام است که روتین وقفه SPI را نشان میدهد و حلقه که در main برنامه اطلاعات را ارسال میکند. :smile:
interrupt [SPI_STC] void spi_isr(void)
{
unsigned char data;
data=SPDR;
LACH=1;delay_us(1); LACH=0;
}
///////////////////////////////////////////////////
while (1)
{
data_send=0b00110110;
b=spi(data_send);
delay_ms(100);
{
دیدگاه