NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 2722 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 4 از 4

موضوع: مشکل با وقفه spi در بسکام

  1. #1
    عضو جدید Deadman آواتار ها
    تاریخ عضویت
    Jan 2011
    نوشته ها
    18
    تشکر
    15
    تشکر شده 1 بار در 1 پست

    Exclamation مشکل با وقفه spi در بسکام

    برنامه زیر مربوط به master و slave یک ارتباط spi هست . زمانی که برنامه رو بدون وقفه مینویسم همه چی درست کار میکنه ولی زمانیکه از وقفه استفاده می کنم برنامه مشکل دار میشه
    وقتی اینتراپت ها رو غیر فعال میکنم مدار درست میشمره
    وقتی فقط اینتراپت master رو فعال میکنم باز هم مدار درست میشمره
    اما وقتی اینتراپت slave رو فعال میکنم یا هر دو اینتراپت رو فعال میکنم مدار یکی در میون میشمره و بعضی وقتها هم در شمردن پرش زیادی میکنه

    توضیح برنامه :
    میکروکنترلر (atmega32) مستر اطلاعات مربوط به یک شمارنده یک بایتی را به میکروکنترلر اسلیو (atmega32) ارسال میکند و اسلیو آنرا روی پورت d نمایش میدهد

    توضیح سخت افزار :
    پایه های mosi, miso , skc, ss متناظرا به هم وصل هستند و تغذیه دو میکروکنترلر مشترک است و به پایه های پورت d اسلیو تعداد 8 عدد led متصل است.

    برنامه master

    کد:
    $regfile = "m32def.dat"
    $crystal = 8000000
    
    Config Spi = Hard , Interrupt = On , Data Order = Msb , Master = Yes , Polarity = High , Phase = 0 , Clockrate = 128 , Noss = 0
    Spiinit
    Enable Interrupts
    Enable Spi
    On Spi Spi_master
    Dim A As Byte
    
    
    A = 0
    Do
    Waitms 200
    Spiout A , 1
    Loop
    
    End
    
    Spi_master:
    Incr A
    Return

    برنامه slave

    کد:
    $regfile = "m32def.dat"
    $crystal = 8000000
    
    Config Spi = Hard , Interrupt = On , Data Order = Msb , Master = No , Polarity = High , Phase = 0 , Clockrate = 128 , Noss = 0
    Spiinit
    Enable Interrupts
    Enable Spi
    On Spi Spi_slave
    Dim A As Byte
    Config Portd = Output
    
    Do : Loop
    
    End
    
    Spi_slave:
    Spiin A , 1
    Portd = A
    Return

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    عضو جدید Deadman آواتار ها
    تاریخ عضویت
    Jan 2011
    نوشته ها
    18
    تشکر
    15
    تشکر شده 1 بار در 1 پست

    پیش فرض

    دوستان نظری ندارین ؟

  4. #3
    تازه وارد
    تاریخ عضویت
    Feb 2014
    نوشته ها
    2
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

    ملت خوابن من همین مشلو دارم اما دریغ از یه پاسخ

  5. #4
    تازه وارد
    تاریخ عضویت
    Sep 2010
    نوشته ها
    2
    تشکر
    6
    تشکر شده 0 بار در 0 پست

    Red face مشکل با وقفه spi

    سلام داخل برنامه MASTER باید اینتراپت سراسری رو غیر فعال کنید و بعد ارسال داده فعال کنید , مشکل حل می شه
    $regfile = "m32def.dat"
    $crystal = 16000000
    '----------
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0
    Cursor Off
    Cls
    '///////////////////////////////////////////////////////////////////////////////
    Config Portb.0 = Input
    '///////////////////////////////////////////////////////////////////////////////
    S1 Alias Pinb.0


    Config Spi = Hard , Interrupt = On , Data Order = Lsb , Master = Yes , Polarity = High , Phase = 0 , Clockrate = 64
    Enable Spi
    On Spi Masterselect


    '///////////////////////////////////////////////////////////////////////////////
    Dim B As Byte : B = 40


    Spiinit






    Do


    Disable Interrupts




    Incr B




    Home
    Lcd B ; Spc(9)


    If S1 = 0 Then
    Spiout B , 1
    End If


    Enable Interrupts




    Loop




    Masterselect:


    Return

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •