اطلاعیه

Collapse
No announcement yet.

مد اینتراپ در SPI

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مد اینتراپ در SPI

    سلام به تمامی دوستان و اساتید

    میخواهم چند بایت اطلاعات را به یک 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);
    {
    کمتر سخن گویم
    بیشتر عمل کنیم

    #2
    پاسخ : مد اینتراپ در SPI

    اگه برنامه همینه، که شما فقط دارید یه جور اطلاعات ارسال میکنید
    بنظرم برنامه درسته و فقط اشکالی که گفتم رو داره البته پایه ss slave رو که حتما صفر کردین. oo:
    اگر ندانی کجا میروی هر راهی تو را باخود خواهد برد.

    دیدگاه


      #3
      پاسخ : مد اینتراپ در SPI

      سلام دوست عزیز
      با تشکر از پاسخ شما slave در کار نیست من اطلاعات را به یک شیفت رجیستر ارسال میکنم و بعد از اتمام ارسال باید آن را lach کنم
      حتما از اینتراپت باید استفاده کنم . اطلاعات ارسال میشود ولی فقط یک بایت سپس مدار هنگ میکند و یا منتظر غیر فعال کردن چیزی میماند.

      کمتر سخن گویم
      بیشتر عمل کنیم

      دیدگاه


        #4
        پاسخ : مد اینتراپ در SPI

        با سلام ... من وحید هستم چند سوال ... آیا لچ شما رو ی سطح فعال میشود یا روی لبه ... لچ شما روی لبه بالا رونده فعال میشود یا پایین رونده ... و در نهایت شما همواره یک کد را ارسال میکنید از کجا میفهمید که این دیتا که بر روی لچ است مقدار سابق است یا مقدار جدید ؟؟؟

        دیدگاه


          #5
          پاسخ : مد اینتراپ در SPI

          سلام دوست عزیز

          متشکرم از اینکه که پاسخ به سئوال من دادید و اما وحید جان :redface:

          ..... از کجا میفهمید که این دیتا که بر روی لچ است مقدار سابق است یا مقدار جدید ؟؟؟

          اطلاعات ارسال میشود برای تست به خروجی 7seg متصل کرده ام اگر از مد اینتراپت استفاده نکنم مشکلی نیست ولی میخواهم بدانم که چرا اینتراپ را
          فعال میکنم فقط یک بایت ارسال میشه و سیستم از روتین اینتراپ خارج نمشود.( لازم به ذکر است هر دستوری را در روتین اینتراپ بنویسم تا آخر اجراء میشود .تا خط آخر سپس میکرو متوقف میشود )
          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);
          {
          کمتر سخن گویم
          بیشتر عمل کنیم

          دیدگاه


            #6
            پاسخ : مد اینتراپ در SPI

            بنظر من شما به جای یه عدد ثابت یه شمارنده رو ارسال کنید همونطور که گفتم شما یه مقدار ثابت رو توو برنامتون ارسال میکنید، آخه از کجا میشه فهمید میکرو متوقف شده چون به قول وحید از کجا تشخیص میدید که اطلاعات تووی لچ جدیده یا مقدار قبلی؟! :eek:
            اگر ندانی کجا میروی هر راهی تو را باخود خواهد برد.

            دیدگاه

            لطفا صبر کنید...
            X