رفتن به مطلب
ایران چیپ
kasra

کار کردن با spi در pic

پست های پیشنهاد شده

سلام

 

من با راه اندازی spi تو pic مشکل دارم می خواهم بر روی یک eeprom اطلاعات رو بنویسم و موقعی که لازم بود بخونم اگه میشه راهنماییم کنید

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام

من از کامپایلر ccs استفاده میکنم

 

میکرو 16f877a و eeprom 25C256

پیشاپیش از راهنماییتان تشکر میکنم

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام

 

من یک نمونه کد برات اینجا قرار میدم که داخلش کامل توضیح دادم

 

البته من از spi سخت افزاری استفاده کردم و برای پایه cs هم پین D0

 

#include #device adc=16


#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O


#use delay(clock=20000000)




#USE SPI (MASTER, SPI1, MODE=0, BITS=8, STREAM=SPI_1)




void main()
{


//ميباشد eeprom اين قسمت براي باز کردن قفل نوشتن بر روي
//output_low(pin_d0);


spi_write(0x06);


output_high(pin_d0);


delay_ms(1);


//ميباشد eeprom اين قسمت براي نوشتن بر روي 


output_low(pin_d0);




spi_write(0x02); //بنويسيد eeprom ارسال اين کد تعيين ميکند که شما ميخواهيد بر روي




//داراي آدرس 16 بيتي ميباشد  براي ارسال آدرس از 2 بايت زير استفاده ميکنيم eeprom به دليل اينکه اين
spi_write(0x00);


spi_write(0x01);


// بعد از ارسال آدرس مقداري که ميخواهيم داخل آن بايت قرار گيرد را مينويسيم که در اينجا مقدار 5 ميباشد
spi_write(0x05);


output_high(pin_d0);




delay_ms(1);














//ميباشد eeprom اين قسمت براي خواندن از روي 




//از مد نوشتني به خواندني ميباشد که فقط در حالت ي که قفل نوشت را قبلا در ابتداي برنامه باز کرده باشيد لازم است eeprom اين قسمت براي بردن 
output_low(pin_d0);


spi_write(0x05);


output_high(pin_d0);


delay_ms(1);










output_low(pin_d0);




spi_write(0x03); //بخوانيد eeprom ارسال اين کد تعيين ميکند که شما ميخواهيد از روي




//داراي آدرس 16 بيتي ميباشد  براي ارسال آدرس از 2 بايت زير استفاده ميکنيم eeprom به دليل اينکه اين
spi_write(0x00);


spi_write(0x01);




//ارسال کنيم که ما در اينجا مقدار 5 را قرار داده ايم eeprom ميباشد که براي اين کار بايد مقداري را به  eeprom  دستور پايين براي خواندن از 
spi_read(0x05);


output_high(pin_d0);


}

 

اگه سوالی بود بگو تا راهنمایی کنم

 

یاحق

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام

آقای یزدی ممنون از جوابتون تست کردم جواب داد

 

فقط 2 تا سوال داشتم داشتم

 

یکی اینکه اگه بخوام روی چند بایت بنویسم یا بخوانم چیکار باید بکنم

 

و اینکه یک پروژه هم دارم که 2 تا مدار دارم که در یکیشون از avr atmega64 استفاده شده و دیگری همین 16f877a که میخوام از همین spi برای ارتباط بینشون استفاده بکنم البته اگه بشه

 

میخواستم راهنماییم کنید

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام

دوست عزیز

 

برای نوشتن یا خواندن روی چند بایت شما تنها کاری که لازمه بکنی اینه که بعد از بایت دیتا ایی که ارسال میکنی بایت هاتو ارسال کنی چه برای خواندن چه نوشتن

 

البته به این نکته هم توجه کن که eeprom ها دارای صفحه های مجزا هستند (page) و فقط شما در هر بار قادر به نوشتن بر روی یک صفحه هستید که در datasheet هر eeprom مشخص کرده برای مدل مورد نظر شما 64 بایت میباشد

 

در مورد سوال دوم شما در حالت MASTER به غیر از سه پایه اصلی SPI به تعداد پایه های I/O میتوانید SLAVE داشته باشید و در مورد ارتباط SPI در AVR در قسمت میکروکنترلرهای AVR سوال خودتونو از دوستان بپرسید تا راهنمایی کنند

 

یاحق

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .
توجه: مطلب ارسالی شما پس از تایید مدیریت برای همه قابل رویت خواهد بود.

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • اضافه کردن...