بخش دهم آموزش ARM : راه اندازی واحدهای ارتباطی سریال

بازگشت به آموزشگاه

پیش نیاز : دوره آموزشی AVR

دسترسی سریع به بخش های قبلی :

شروع دوره های آموزش مجازی ARM

بخش اول آموزش ARM

بخش دوم آموزش ARM

بخش سوم آموزش ARM

بخش چهارم آموزش ARM

بخش پنجم آموزش ARM

بخش ششم آموزش ARM

بخش هفتم آموزش ARM

بخش هشتم آموزش ARM

بخش نهم آموزش ARM


مقدمه

در بخش گذشته با برخی از واحدهای مهم میکروکنترلر LPC2138 آشنا شدیم. در ادامه معرفی و تشریح واحدها به بخش مهمی از واحدها به نام ارتباطات سریال می رسیم. ارتباطات سریال در میکروکنترلرهای ARM7 به صورت UART ( آسنکرون ) ، SPI ، SSP و I2C وجود دارد. در این بخش این ارتباط ها به جز SSP را معرفی می کنیم و توابع کار با آن ها را ارائه خواهیم کرد. برای درک بهتر عملکرد واحدهای ارتباطی سریال توصیه می شود آموزش ارتباط سریال در AVR و همچنین آموزش استاندارهای ارتباطی سریال را قبل از ادامه مطالعه بفرمایید.

 


راه اندازی واحد UART

یکی از مهمترین ارتباطات سریال در میکروکنترلرهای ARM7 واحد UART (مخفف Universal Asynchronous Reciever and Transmitter به معنای فرستنده و گیرنده آسنکرون جهانی ) می باشد. هر ارتباط UART میتواند به یکی از دو صورت Half-Duplex ( نیم دوطرفه ) یا Full-Duplex ( تمام دوطرفه ) باشد. در این ارتباط حداقل سه اتصال RX ( Receive Data ) و TX ( Transmitt Data ) و زمین ( GND ) وجود دارد. شکل زیر نحوه سیم بندی این ارتباط به صورت تمام دوطرفه را نشان می دهد.

uart


راه اندازی واحد UART در LPC2138

این واحد ارتباط سریال توسط پروتکل UART را فراهم می آورد. در این میکروکنترلر دو واحد UART0 و UART1 وجود دارد. برای UART0 دو پایه RXD0 و TXD0 وجود دارد. از UART0 میتوان برای پروگرام کردن میکرو به صورت بوت سریال نیز استفاده کرد. اما واحد UART1 علاوه بر پایه های RXD1 و TXD1 دارای پایه های دیگری همچون RTS1 ، CTS1 ، DSR1 ، DTR1 و RI1 می باشد که برای کنترل جریان در شبکه ها ( Flow Control ) و ارتباط با تجهیزات دارای ترمینال همچون پرینترها و مودم ها به کار گرفته می شود. در جدول زیر پایه های اصلی این دو واحد و شماره پورت آنها را مشاهده می کنید.

RXD TXD Pin
P0.1 P0.0 UART0
P0.9 P0.8 UART1

 


رجیسترهای واحد UART

رجیستر UxLCR ( مخفف UART Line Control Register )

یک رجیستر 8 بیتی می باشد که تنظیمات دیتای ارسالی را مشخص می کند. دیتای ارسالی با عنوان فریم ( Frame ) شناخته می شود که در شکل زیر آن را مشاهده می کنید.

uart-frame-lpc2138

بیت 0 و 1 : این دو بیت با هم به صورت زیر طول دیتای ارسالی را مشخص می کند:

بیت 2 : این بیت تعداد Stop بیت ها را مشخص می کند. در حالت دیفالت این بیت 0 بوده و تعداد Stop بیت ها 1 می باشد. در صورتی که این بیت 1 شود تعداد Stop بیت ها 2 می شود.

بیت 3 : در صورتی که این بیت 0 باشد No parity و در صورتی که 1 باشد یک بیت Parity در فریم ارسالی وجود خواهد داشت.

بیت 4 و 5 : این دو بیت تنظیم وضعیت بیت Parity در صورت وجود را به صورت زیر مشخص می کند :

توضیح : در حالت Odd ابتدا تعداد بیت های 1 دیتا را می شمارد و در صورت فرد بودن Parity=1 و در غیر این صورت Parity=0 می شود. در حالت Even نیز ابتدا تعداد بیت های 1 دیتا را می شمارد و در صورت زوج بودن Parity=1 و در غیر این صورت Parity=0 می شود. در دو حالت بعدی بیت Parity همیشه ثابت است.

بیت 6 : این بیت که Break Control نام دارد ، کنترل جریان نرم افزاری ایجاد می کند. به طوری که در صورت 1 شدن این بیت ارسال متوقف شده و پایه TXD منطق 0 می گیرد.

بیت 7 : این بیت اجازه انجام تقسیم فرکانس در رجیسترهای UxDLL و UxDLM را می دهد. بنابراین برای تنظیم Baud Rate ابتدا این بیت 1 می شود و بعد از مقداردهی به رجیسترها باید مجددا این بیت 0 شود.

 

رجیسترهای UxDLL و UxDLM ( مخفف UART Divisor Latch LSB و UART Divisor Latch MSB )

این رجیسترها تقسیم کننده هستند که به منظور ساخت Baud Rate دلخواه تنظیم می شوند. هر دو این رجیسترها 8 بیتی هستند و درون آنها عدد 16 بیتی زیر قرار می گیرد:

LPC213x_BaudRate

رجیستر UxRBR ( مخفف UART Receiver Buffer Register )

یک رجیستر 8 بیتی فقط خواندنی ( Read Only ) می باشد که دیتای مورد نظر جهت ارسال درون آن قرار می گیرد.

 

رجیستر UxTHR ( مخفف UART Transmit Holding Register )

یک رجیستر 8 بیتی فقط نوشتنی ( Write Only ) می باشد که دیتای مورد نظر بعد از دریافت درون آن قرار می گیرد.

 

رجیستر UxLSR ( مخفف UART Line Status Register )

این رجیستر 8 بیتی فقط خواندنی است و از هر بیت آن به منظور خواندن وضعیت قسمت های مختلف واحد UART به شرح زیر استفاده می شود.

بیت 0 : زمانی که این بیت 1 شود به معنای تمام شدن دریافت کاراکتر توسط واحد UART می باشد و بعد از آن میتوان از رجیستر UxRBR دیتای وارد شده را خواند.

بیت 5 : زمانی که این بیت 1 شود به معنای مشغول بودن واحد UART در ارسال کاراکتر می باشد و به محض 0 شدن آن میتوان دیتا ارسالی را درون رجیستر UxTHR ریخت.

 


مراحل راه اندازی UART0 و UART1 ( بدون وقفه )

  1. انجام تنظیمات Frame در رجیستر UxLCR و 1 کردن بیت 7 آن
  2. تعیین نرخ ارسال/دریافت ( Baud Rate ) در رجیستر UxDLL و UxDLM
  3. باز گرداندن بیت 7 ام رجیستر UxLCR به حالت اولیه خود یعنی 0
  4. تعیین عملکرد پایه های RXD و TXD میکرو در رجیستر PINSEL

 


توابع راه اندازی UART0 و UART1 ( بدون وقفه )


توابع ارسال و دریافت در ارتباط سریال UART

این توابع برای ارسال یک کاراکتر یا دریافت یک کاراکتر مورد استفاده قرار می گیرند.

 

مثال عملی شماره 19 : با راه اندازی واحد UART در میکروکنترلر LPC2138 و اتصال آن به کامپیوتر برنامه ای بنویسید که با دریافت هر کاراکتر توسط میکرو ، همان کاراکتر مجددا به سمت کامپیوتر ارسال شود.

لینک دانلود سورس مثال عملی شماره 19

 


فعالسازی وقفه دریافت UART

برای فعال سازی وقفه دریافت کافی است ابتدا واحد VIC را برای UART شماره X تنظیم کرده و سپس بیت صفرام رجیستر UxIER را برابر 1 کنیم. همچنین یک تابع سابروتین وقفه به برنامه اضافه می شود که کافی است درون آن یک رشته با اندازه دلخواه تعریف کنیم و مقدار آن را برابر رجیستر UxRBR قرار دهیم. در نتیجه با آمدن هر وقفه ، یک کاراکتر دریافت و درون رشته مورد نظر ذخیره می شود.

 

مثال عملی شماره 20 : با راه اندازی واحد UART و فعالسازی وقفه دریافت در میکروکنترلر LPC2138 برنامه ای بنویسید که با دریافت هر کاراکتر توسط میکرو آن را به سمت کامپیوتر ارسال نماید.

لینک دانلود سورس مثال عملی شماره 20

 


راه اندازی واحد SPI

این واحد ارتباط سریال توسط پروتکل SPI ( مخفف Serial Pheripheral Interface ) را فراهم می آورد. پروتکل SPI یک ارتباط دوطرفه با سرعت بسیار بالا می باشد که بین Master و Slave در فواصل کوتاه برقرار می شود. شکل زیر نحوه سیم بندی این ارتباط را نشان می دهد.

SPI_single_slave


راه اندازی واحد SPI در LPC2138

این واحد ارتباط سریال توسط پروتکل SPI را فراهم می آورد. در میکروکنترلر LPC2138 دو واحد SPI0 و SSP/SPI1 وجود دارد. این رابط های SPI هر یک ارتباط دو طرفه Full Duplex ، به صورت سنکرون ، با سرعت حداکثر 30Mhz و قابلیت 8 تا 16 بیت در هر ارسال و دریافتی را فراهم می آورد. شکل زیر نحوه ارتباط بین Master و Slave توسط این پروتکل را نشان می دهد.

spi_lpc2138

همانطور که مشاهده می کنید ، واحد SPI دارای 4 پایه به نام های زیر می باشد :

در جدول زیر پایه های مربوط به این واحد در میکروکنترلر LPC2138 مشاهده می کنید.

SSEL MOSI MISO SCK
P0.7 P0.6 P0.5 P0.4 SPI0
P0.20 P0.19 P0.18 P0.17 SPI1

 

نکته مهم : نام رجیسترهای SPI0 و SSP/SPI1 با یکدیگر تفاوت دارد در نتیجه برنامه ای جداگانه برای راه اندازی هر یک باید نوشته شود که در این آموزش SPI0 راه اندازی می شود و برای SPI1 نیز با کمی تفاوت میتواند مورد استفاده قرار گیرد.

 


رجیسترهای واحد SPI0

رجیستر S0SPCR ( مخفف SPI0 Serial Peripheral Control Register )

این رجیستر مربوط به تنظیمات کنترلی واحد SPI می باشد:

بیت 2 ( BitEnable ) : در صورتی که این بیت 0 باشد در هربار ارسال/دریافت 8 بیت جابجا می شود اما وقتی این بیت 1 باشد در هربار ارسال/دریافت بین 8 تا 11بیت جابجا می شود.

بیت 3 ( CPHA ) :  در صورتی که این بیت 0 باشد دیتا در زمان رسیدن در لبه بالارونده SCK خوانده می شود و در صورتی که 1 باشد در لبه پایین رونده SCK خوانده می شود.

بیت 4 ( CPOL ) : این بیت تعیین کننده Polarity سیگنال SCK در حالتی است که دیتا رد و بدل نمی شود به طوری که وقتی این بیت 0 باشد سیگنال SCK در حالت عادی High و در صورتی که این بیت 1 باشد سیگنال SCK در حالت عادی Low است.

بیت 5 ( MSTR ) : تعیین Master یا Slave بودن عملکرد واحد SPI است ( سیگنال SCK همیشه توسط Master تولید می گردد ) به طوری که در صورت 0 بودن این بیت Slave و در صورت 1 بودن این بیت Master می باشد.

بیت 6 ( LSBF ) : این بیت جهت ارسال بیت های دیتا را مشخص می کند به طوری که در صورت 0 بودن این بیت جهت ارسال از با ارزشترین بیت ( MSB First ) تا کم ارزشترین بیت می باشد و در صورت 1 بودن این بیت جهت ارسال از کم ارزشترین بیت ( LSB First ) تا با ارزشترین بیت می باشد.

بیت های 8 تا 11 ( BITS ) : زمانی که بیت دوم همین رجیستر 1 باشد میتوان به صورت زیر مقدار دیتای جابجا شده در هر بار انتقال را مشخص کرد.

 

رجیستر S0SPSR ( مخفف SPI0 Serial Peripheral Status Register )

این رجیستر 8 بیتی فقط خواندنی ( Read Only ) می باشد و وضعیت های زیر را نشان می دهد:

بیت 3 ( ABRT ) : زمانی که این بیت 1 شود نشان دهنده در دسترس نبودن Slave می باشد ( Slave Abort )

بیت 4 ( MODF ) : زمانی که این بیت 1 شود نشان دهنده خطا در تنظیمات SxSPCR است.

بیت 5 ( ROVR ) : زمانی که این بیت 1 شود نشان دهنده سرریز شدن در هنگام دریافت ( خواندن ) دیتا است ( Read Overrun )

بیت 6 ( WCOL ) : زمانی که این بیت 1 شود نشان دهنده تصادم در هنگام نوشتن ( ارسال ) دیتا است ( Write Collision )

بیت 7 ( SPIF ) : زمانی که این بیت 1 شود نشان دهنده پایان یافتن صحیح ارسال می باشد. این بیت در پایان هر ارسال صحیح یکبار 1 می شود. ( SPI Transfer Complete Flag ).

 

رجیستر S0SPDR ( مخفف SPI0 Serial Peripheral Data Register )

این رجیستر مربوط به دیتایی است که ارسال/دریافت می شود. در حالت عادی در هر مرحله 8 بیت ارسال می شود و در صورتی که بیت 2 رجیستر SxSPCR تنظیم شده باشد ، به تعداد تنظیم شده در بیت های 8 تا 11 رجیستر SxSPCR ارسال/دریافت خواهیم داشت. در هر کلاک SCK یک بیت جابجا می شود تا اینکه انتقال پایان یابد.

 

رجیستر S0SPCCR ( مخفف SPI0 Clock Counter Register )

این رجیستر تنظیمات فرکانس SCK در حالت Master را مشخص می کند. اگر مقداری که درون این رجیستر ریخته می شود را X بنامیم ، X همیشه زوج و بزرگتر مساوی 8 باید باشد. با داشتن Pclk و قرار دادن فرکانس مورد نظر Fspi مقدار X به صورت زیر بدست می آید:

SPI_Frequency_lpc213x


مراحل راه اندازی SPI0

  1. انجام تنظیمات S0SPCR ( برای Master و Slave )
  2. انجام تنظیمات S0SPCCR ( فقط برای Master )
  3. انجام تنظیمات پایه ها در رجیستر PINSEL
  4. فعال سازی Slave توسط Master ( فقط برای Master )

 


تابع راه اندازی واحد SPI0 در Master

در میکرو کنترلر Master در صورتی که فرض کنیم Pclk=3Mhz و Fspi=100Khz داریم :

تذکر : از هر کدام از پایه های میکرو میتوان به عنوان SSEL برای انتخاب Slave ها استفاده نمود. در خطوط انتهایی تابع فوق باید پایه SSEL خروجی شود و سپس برابر 1 شود تا Slave فعال گردد. برای مثال میتوان نوشت :

 


تابع راه اندازی واحد SPI0 در Slave

در صورتی که یک LPC2138 دیگر به صورت Slave با Master در ارتباط باشد ، از تابع زیر برای راه اندازی آن استفاده می گردد:

 


تابع انتقال دیتا در واحد SPI0

تابعی که یک انتقال در میکروکنترلر Master یا میکروکنترلر Slave ( در صورت وجود ) انجام می دهد به صورت زیر می باشد. این تابع یک 8 بیتی را در ورودی خود دریافت کرده و در 8 کلاک از SCK آن را  بین Master و Slave جابجا می کند. در نهایت تابع ، 8 بیت دریافت شده را به خروجی برمیگرداند.

 

مثال عملی شماره 21 : دو میکرو LPC2138 را توسط پورت SPI به یکدیگر متصل نمایید. برنامه ای بنویسید که هر یک از میکروکنترلرها به دیگری کاراکتر دلخواهی ارسال کند. میکروکنترلر دیگر کاراکتر را بررسی کرده و در صورتی که کاراکتر صحیح دریافت شده باشد یک LED را روشن کند.

لینک دانلود سورس مثال عملی شماره 21

 


راه اندازی واحد I2C

یکی از پروتکل های ارتباطی سریال پرکاربرد I2C یا پروتکل دو سیمه می باشد. در این پروتکل از دو سیم SCL ( مخفف Serial Clock ) و SDA ( مخفف Serial Data ) استفاده می شود. این دو سیم باید با یک مقاومت 2.2K  پول آپ شود. حداکثر سرعت در این پروتکل400Khz  است. در این پروتکل یک وسیله Master و حداکثر127  وسیله Slave وجود دارد که همگی SDA ها و SCL های آنها به هم متصل است. شکل زیر نحوه ارتباط توسط این پروتکل را نشان می دهد.

i2c


راه اندازی واحد I2C در LPC2138

میکروکنترلر LPC2138 دارای دو واحد I2C0  و I2C1 سخت افزاری مجزا می باشد که هر یک میتواند Master یا Slave باشد. پایه های SDA و SCL مربوط به واحد I2C را در جدول زیر مشاهده می کنید.

SDA SCL
P0.3 P0.2 I2C0
P0.14 P0.11 I2C1

 


توضیحات پروتکل I2C

قالب دیتا در پروتکل I2C دارای 4 وضعیت مختلف است :

وضعیت Start ، وضعیت آدرس ، وضعیت دیتا و وضعیت Stop .

i2c-protocol

در وضعیت عادی باس High می باشد تا زمانی که شروع به ارسال/دریافت شود و SDA و SCL برابر 0 شوند ( وضعیت Start ) سپس 7 بیت برای تعیین آدرس به همراه یک بیت تعیین وضعیت خواندن یا نوشتن ( R/W ) روی باس قرار می گیرد ( وضعیت آدرس ). سپس دیتای 8 بیتی مورد نظر روی باس قرار می گیرد ( وضعیت دیتا ) و در نهایت باس به حالت اولیه خود باز می گردد ( وضعیت Stop ). در وضعیت های آدرس و دیتا یک بیت به نام ACK ( مخفف Acknowledge ) از طرف گیرنده به فرستنده ارسال می شود که نشان دهنده وجود گیرنده و نیز صحیح در یافت شدن دیتا می باشد.

 

با توجه به حالت های عملکرد Master/Slave و اینکه هر یک میتواند دیتا ارسال/دریافت نماید چهار حالت زیر بوجود می آید :

  1. حالت Master Transmitter : زمانی که Master به Slave دیتا ارسال می کند.
  2. حالت Master Receiver : زمانی که Master از Slave دیتا دریافت می کند.
  3. حالت Slave Transmitter : زمانی که Slave به Master دیتا ارسال می کند.
  4. حالت Slave Receiver : زمانی که Slave از Master دیتا دریافت می کند.

 


رجیسترهای واحد I2C

رجیستر I2CxCONSET ( مخفف I2C Control Set Register )

این رجیستر تنظیمات کلی واحد I2C را به صورت زیر مشخص می کند:

بیت 2 ( AA ) : در صورت 1 کردن این بیت یک وضعیت Acknowledge ایجاد می شود.

بیت 3 ( SI ) : بیت وقفه می باشد که در صورت هر گونه تغییر در وضعیت باس I2C این بیت 1 می شود.

بیت 4 ( STO ) : در صورت 1 کردن این بیت یک وضعیت Stop در حالت Master روی باس I2C ایجاد می شود.

بیت 5 ( STA ) : در صورت 1 کردن این بیت یک وضعیت Start در حالت Master روی باس I2C ایجاد می شود.

بیت 6 ( I2EN ) : در صورت 1 کردن این بیت واحد I2C فعال می شود.

 

نکته : برای غیر فعال کردن بیت های رجیستر CONSET باید از رجیستر CONCLR استفاده کرد. صفر کردن بیت ها تاثیری ندارند.

 

رجیستر I2CxCONCLR ( مخفف I2C Control Clear Register )

بیت 2 ( AAC ) : در صورت 1 کردن این بیت ، AA در رجیستر I2CxCONSET پاک می شود. در نتیجه وضعیت ACK پاک می شود.

بیت 3 ( SIC ) : در صورت 1 کردن این بیت ، SI در رجیستر I2CxCONSET پاک می شود. در نتیجه وقفه غیر فعال می گردد.

بیت 5 ( STAC ) : در صورت 1 کردن این بیت ، STA در رجیستر I2CxCONSET پاک می شود. در نتیجه وضعیت Start پاک می شود.

بیت 6 ( I2ENC ) : در صورت 1 کردن این بیت ، I2CEN در رجیستر I2CxCONSET پاک می شود. در نتیجه واحد I2C غیر فعال می شود.

 

رجیستر I2CxSTAT ( مخفف I2C Status Register )

بیت های 3 تا 7 از این رجیستر وضعیت باس I2C را مشخص می کند به طوری که برای هر یک از حالت های چهارگانه عملکرد سیستم یک جدول وجود دارد. این جدول ها را به طور کامل در صفحه 174 تا 177 از UM10120 مشاهده می کنید. برای مثال در حالت Master Transmitter وضعیت های زیر را داریم :

0X08 : یک وضعیت Start ارسال شده است.

0X10 : یک وضعیت Start تکرار شده است.

0X18 : آدرس Slave و بیت R/W ارسال شده است و ACK دریافت شده است.

0X20 : آدرس Slave و بیت R/W ارسال شده است اما ACK دریافت نشده است.

0X28 : دیتای روی I2CxDAT ارسال شده است و ACK دریافت شده است.

0X30 : دیتای روی I2CxDAT ارسال شده است اما ACK دریافت نشده است.

0X38 : آدرس Slave ، بیت R/W یا دیتای روی I2CxDAT از بین رفته است.

 

رجیستر I2CxADR ( مخفف I2C Slave Address Register )

در صورت 1 کردن بیت 0 این رجیستر General Call ( اعلان عمومی ) در حالت Slave فعال می گردد. در بیت های 1 تا 7 از این رجیستر آدرس Slave مورد نظر که عددی بین 0 تا 127 است ، قرار می گیرد.

 

رجیستر I2CxDAT ( مخفف I2C Data Register )

دیتای 8 بیتی جهت ارسال درون این رجیستر قرار می گیرد.

 

رجیستر های I2CxSCLL و I2CxSCLH ( مخفف I2C SCL High و I2C SCL Low )

این رجیسترها فرکانس SCL در حالت Master را به صورت زیر مشخص می کند به طوری که عدد مورد نظر برای فرکانس SCL حداکثر 400Khz می باشد.

SCL_Frequency_lpc213x


مراحل راه اندازی واحد I2C

  1. تنظیم رجیسترهای کنترلی I2CxCONSET و I2CxCONCLR ( در Master و Slave )
  2. تنظیم سرعت SCL در رجیسترهای I2CxSCLL و I2CxSCLH ( فقط در Master )
  3. تنظیم پورت پایه های SCL و SDA در رجیستر PINSEL ( در Master و Slave )
  4. تشخیص حالت عملکرد مورد نیاز و قرار دادن Switch روی رجیستر I2CxSTAT ( در Master و Slave )
  5. استفاده از رجیسترهای I2CxADR و I2CxDAT برای آدرس و دیتا ( در Master و Slave )

 


توابع راه اندازی I2C در حالت Master

 


راه اندازی I2C در حالت Slave


نمونه تابع Switch برای حالت Master Transmitt

 

مثال عملی شماره 22 : دو میکرو LPC2138 را توسط پورت I2C به یکدیگر متصل نمایید. برنامه ای بنویسید که هر یک از میکروکنترلرها به دیگری کاراکتر دلخواهی ارسال کند. میکروکنترلر دیگر کاراکتر را بررسی کرده و در صورتی که کاراکتر صحیح دریافت شده باشد یک LED را روشن کند.

لینک دانلود سورس مثال عملی شماره 22

 


راه اندازی I2C نرم افزاری در LPC2138

همانطور که مشاهده می کنید راه اندازی I2C سخت افزاری به علت رجیسترهای زیاد و وضعیت های مختلف پیچیدگی خاص خود را دارد. از آن جایی که معمولا از میکروکنترلر در حالت Master استفاده می شود ، میتوان از I2C نرم افزاری به جای I2C سخت افزاری استفاده نمود. در I2C نرم افزاری میتوان هر دو پایه دلخواه را به عنوان SDA و SCL انتخاب کرد. با اضافه کردن هدر فایل i2c.h به برنامه میتوان با Slave توسط پروتکل I2C ارتباط برقرار کرد. با اضافه کردن این هدر فایل از توابع زیر در برنامه استفاده می شود :

 

مثال عملی شماره 23 : با استفاده از میکروکنترلر LPC2138 و AT24C512 که یک آی سی EEPROM توسط پروتکل I2c می باشد ، برنامه ای بنویسید که یک عبارت رشته ای را ابتدا درون EEPROM ریخته و سپس خوانده و روی LCD نشان دهد.

لینک دانلود سورس مثال عملی شماره 23

 



پایان دوره آموزشی ARM7


برای ادامه آموزش ARM روی تصویر زیر کلیک کنید.

next-image


در صورتی که این مطلب مورد پسندتان بود لایک و اشتراک گذاری فراموش نشود

دیدگاه (15)

  • ali-ali پاسخ

    مثل همیشه بسیار عالی بود ممنون

    1395-02-12 در 18:02
    • ادمین الکترو ولت پاسخ

      سپاس دوست و همراه عزیز

      1395-02-12 در 19:47
  • reza پاسخ

    با سلام.ممنون از آموزشش بسیار عالی و خوبتون.آیا آموزش arm تموم شد یا منتظر بخش های بعدی هم باشیم؟

    1395-02-21 در 17:29
    • ادمین الکترو ولت پاسخ

      سلام سپاسگزارم خیر ادامه خواهد داشت و همچنین منتظر بسته کامل آموزش ARM باشید

      1395-02-22 در 06:05
      • reza پاسخ

        ممنون بی صبرانه منتظریم.اگه ممکنه تاریخ تقریبی ادامه آموزش را اعلام کنید.

        1395-02-22 در 21:37
  • علی پاسخ

    سلام!
    خیلی ممنون!
    مثه همیشه کامل بود!

    1395-02-23 در 18:41
    • ادمین الکترو ولت پاسخ

      سلام دوست عزیز ممنون از همراهیتون

      1395-02-24 در 15:42
  • ali پاسخ

    کارت درسته…
    ادامه بده همین طور …

    1395-05-11 در 10:32
  • حمید خان آبادی پاسخ

    سلام خسته نباشید
    میشه مقادیر ذکر شده توی دیتا شیت lpc2138 رو هم توضیحاتشو قرار بدین که هر کدوم مربوط به چی می شن ؟
    خیلی متشکر از سایت خوبتون

    1396-05-28 در 23:25
    • ادمین الکترو ولت پاسخ

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

      1396-05-29 در 00:48
  • reza1356 پاسخ

    سلام خسته نباشید.
    سایت خیلی عالیه.

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

    1396-06-05 در 16:23
  • ادمین الکترو ولت پاسخ

    سلام دوست عزیز ممنونم
    آخر روتین وقفه UART باید پرچم وقفه رو از بین ببرید و به حالت اول برگردونید وگرنه همواره روتین وقفه اجرا میشه

    1396-06-05 در 23:51
  • reza1356 پاسخ

    سلام و خسته نباشید.
    زمانی که وقفه RTC وUART و یا دیگر وقفه ها رو تک تک فعال میکنم برنامه به درستی کار می کند اما زمانی باهم فعال می شوند برنامه هنگ می کند.(برنامه نویسی در keil). در واقع در روتین یکی از وقفه ها تشکیل حلقه می دهد. و برنامه هنگ می کند.
    لطفا راهنمایی کنید که چرا این مشکل پیش می آید.
    با تشکر

    1396-06-06 در 23:46
  • reza1356 پاسخ

    با سلام
    پرچم وقفه uart1 در کدام رجیستر موجود است.
    من هرچه pdf 2138 میخونم پیدا نمی کنم.
    لطفا راهنمایی کنید.

    1396-06-10 در 10:12
  • امیررضا پاسخ

    سلام خسته نباشید
    من اگه بخوام یه دیتایی رو از یه میکرو با یه nrf24 به nrf24 عه یه میکرو دیگه بفرستم چیکار باید بکنمم…ممنون میشم اکه کمکم کنید گیر کردم
    میکرو ها stm32 هستند

    1397-06-19 در 12:15

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

بازگشت به آموزشگاه