نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
أَللّهُمَّ ارْزُقْنی شَفاعَةَ الْحُسَیْنِ یَومَ الْوُرُودِ
مهدی دمیرچیلو

آموزش آرم میکروکنترلر lpc1768 جلسه 5 uart قسمت2

315

به نام خدا : ادامه جلسه قبلی از سری مطالب آموزش آرم :
آموزش آرم میکروکنترلر lpc1768 جلسه 5 uart قسمت2

آموزش آرم میکروکنترلر lpc1768 جلسه 5 uart قسمت2


(UARTn Receiver Buffer Register (UnRBR

UARTn Receiver Buffer Register
رجیستر UnRBR (مقدار n برابر 0 و 1 و 3 هستش) بالاترین بایت فیفو دریافت دیتا UARTn هستش.
بالاترین بایت فیفو دریافت دیتا UARTn شامل قدیمی ترین کاراکتر دریافتی هستش و میتواند خونده شود به وسیله bus interface
توجه 0 : این ریجستر RO ( فقط قابل خوندن ) هستش.
توجه 1 : اگه فرمت داده کمتر از 8 بیت باشه، بیت های بزرگتر مقدارشون 0 میشه، مثلا اگه دیتا 7 بیت باشه، بیت 8 ام مقدارش 0 میشه. ( انگار در داخل FIFO اطلاعات به صورت 8 بیتی ذخیره میشن)
توجه 2 : بیت (Divisor Latch Access (DLAB از ریجستر LCR باید 0 شود رای دسترسی به UnRBR
توجه 3 : از آنجایی که ممکن هستش در قالب دیتا خطایی رخ داده باشه، لذا بهتر هستش اول رجیستر UnLSR رو بخونیم تا مطمئن بشیم که خطایی در دیتای فعلی رخ نداده و بعد بریم سراغ رجیستر UnRBR برا خوندن دیتای دریافتی.

Since PE, FE and BI bits correspond to the byte sitting on the top of the RBR FIFO (i.e. the one that will be read in the next read from the RBR)

 

(UARTn Transmit Holding Register (UnTHR

ریجستر UnTHR بایت بالایی حافظه فیفو ارسال داده UARTn هستش.
در حافظه فیفو ارسال، بالاترین بایت، جدید ترین کاراکتر هستش و میتوانن نوشته بشن به وسیله bus interface
توجه 0 : این ریجستر WO ( فقط قابل نوشتن ) هستش.
UARTn Transmit Holding Register
توجه 1 : بیت (Divisor Latch Access (DLAB از ریجستر LCR باید 0 شود رای دسترسی به UnTHR

( UARTn Divisor Latch LSB & MSB register ( UnDLL & UnDLM

رجیسترهای UnDLL و UnDLM در کنار هم میشن 16 بیت divisor که UnDLL شامل 8 بیت کم ارزش و UnDLM شامل 8 بیت پر ارزش هستش؛ این دو ریجستر بخشی از تابع سازنده Baud Rate هستن و نگه میدارن مقدار استفاده شده رو، در کنار ریجستر UnFDR ( رجیستر اصلی تعیین نرخ داده UnFDR هستش و برا افزایش دقت و کاهش خطای نرخ داده از این دو ریجستر این قسمت استفاده میکنیم )

to divide the APB clock (PCLK) in order to produce the baud rate clock, which must be 16× the desired baud rate.

توضیحات بیشتر جهت انتخاب مقدار صحیح برای UnDLL و UnDLM رو در ادامه مطلب قرار میدیم.
توجه 0 : این دو رجیستر R/W هستند.
UARTn Divisor Latch register
توجه 1 : برای مجموع این دو رجیستر مقدار 0x0000 همانند مقدار 0x0001 هستش چون مقدار 0 در اینجا برا division مجاز نیستش ( یعنی 0 نباید بزارید، اگه گزاشتید میکرو 1 میخونه ^_^ )

سوال : چرا همچین قانونی وجود داره؟ (سوال مربوطه به "توجه 1")
جواب : خب در ادامه مطلب، اگه فرمول4 رو برید ببیند، متوجه میشید که اگه مجموع این دو ریجستر 0 باشه - یعنی هر دو 0 باشن اون وقع، مخرج فرمول4 مقدارش 0 میشه و این اتفاق نباید بیوفته - مخرج فرمول 4 میشه PCLK/0 که این اتفاق نباید بیوفته.
توجه 2 : بیت DLAB از ریجستر UnLCR باید 1 شود تا به ریجسترهای UnDLL و UnDLM دسترسی داشته باشیم.

(UARTn Interrupt Enable Register (UnIER

این ریجستر برا فعال کردن 3 منبع وقفه UARTn بکار میره.
توجه 0 : این رجیستر R/W هستند.
UARTn Interrupt Enable Register

نحوه مقدار دهی : در هر کدوم از بیت های این رجیستر، اگه مقدار 0 بدیم وقفه مربوطه غیر فعال میشه و اگه 1 بدیم وقفه مربوطه فعال میشه.

بیت 0 ( RBR Interrupt Enable ) : فعال کردن وقفه دریافت اطلاعات؛ این بیت همچنین کنترل میکنه وقفه TimeOut دریافت اطلاعات رو. ( پرچم این وقفه بیت [UnLSR[0 هستش، بیت پاک کردن هم نداره، با خوندن دیتا و خالی شدن RBR، این پرچم مقدارش پاک میشه؛ این وقفه رو اگه فعال کنیم انگار دو تا وقفه رو فعال کردیم، یکی وقفه دریافت اطلاعات و یکی وقفه TimeOut عدم دریافت اطلاعات که بیشتر تو مواردی کاربرد داره که RxTriggerLevel رو با مقدار بیش از 1 کاراکتر(4و8و14 کاراکتر) تنظیم کرده باشید؛ اگه نفهمیدید چیزی نگران نباشید، در ادامه توضیح میدم اگه قسمت بشه! و در مطلب پروژه، یه پروژه مختص هر کدوم از این دو وقفه من نوشتم و قرار دادم. )

بیت 1 ( THRE Interrupt Enable ) : فعال کردن وقفه THRE ( وقفه خالی شدن بایت بالایی حافظه فیفو ارسال – هر موقع ریجیستر UnTHR خالی بشه این وقفه رخ میده، و به ما میگه : داداش من آماده دریافت اطلاعات جدید جهت ارسال هستم. o_O >>> ^_^ )؛ پرچم این ریجستر در [UnLSR[5 قرار دارد.

بیت 2 ( RX Line Status Interrupt Enable ) : فعال کردن وقفه RX line status ( این وقفه مربوطه به خطاهای دریافت اطلاعات، از جمله خطای Overrun، Parity، Framing و Break Interrupt برای توضیحات بیشتر به رجیستر UnLSR مراجعه کنید )؛ پرچم این وقفه در [UnLSR[4:1 قرار دارد.

بیت 3 تا 7 : رزرو شده.

بیت 8 ( ABEOIntEn ) : فعال کردن وقفه پایان Auto Baud

بیت 9 ( ABTOIntEn ) : فعال کردن وقفه TimeOut برای Auto Baud

بیت 10 تا 31 : رزرو شده.

(UARTn Interrupt Identification Register (UnIIR

1) اين ريجستر يه کد وضعيت هستش که تشخیص ميده اولويت و منبع وقفه معلق رو
2) وقفه ها معلق و منجمد(غير فعال) ميشن در زمان دسترسي به اين ريجستر
3) اگه يه وقفه رخ بده در زمان دسترسي به اين ريجستر، اون وقفه ضبط ميشه براي دسترسي بعدي به اين ريجستر
UARTn Interrupt Identification Register

بیت 0 ( IntStatus ) : وضعیت وقفه(به کمک این بیت میشه فهمید که وقفه ای رخ داده یا نه)؛ توجه شود که این بیت با 0 فعال میشه؛ برای این که به طور دقیق بفهمیم که کدوم وقفه رخ داده میتونیم از بیت های [UnIIR[3:1 استفاده کنیم.
0 : حداقل یه وقفه معلق وجود دارد.
1 : وقفه معلقی وجود ندارد.

بیت 1 تا 3 ( IntId ) : شناسایی وقفه رخ داده؛ تمام حالت های دیگه [UnIER[3:1 در زیر لیست نشده زیرا رزرو شده هستش(000,100,101,111).
011 : (Receive Line Status (RLS – حداقل یکی از 4 خطای دریافت اطلاعات رخ داده ( OE – PE – FE – break interrupt )
010 : دیتای قابل دریافت موجود هستش (RDA)
110 : (Character TimeOut Indicator (CTI؛ وقفه تشخیص عدم دریافت اطلاعات در مدت زمان مشخص!
001 : وقفه خالی شدن بافر ارسال ( THR )

بیت 4 تا 5 : رزرو شده.

بیت 6 تا 7 ( FIFO Enable ) : کپی بیت [UnFCR[0 هستش. (سوال : خب چرا این ریجستر کپی داره؟ و این که این بیت 6و7 میشه 2 بیت در حالی که [UnFCR[0 یه تک بیت هستش – چرا؟ )

بیت 8 ( ABEOInt ) : پرچم پایان وقفه auto-baud؛ 1 میشه اگه auto-baud با موفقیت پایان یافته باشه و وقفه فعال شده باشه.

بیت 9 ( ABTOInt ) : پرجم وقفه time-out مربوط به Auto-baud؛ 1 میشه وقتی که auto-baud زمانش به پایان رسیده باشه و وقفش فعال شده باشه.

بیت 10 تا 31 : رزرو شده.

توجه : پرچم وقفه های auto-baud به وسیله بیت مترادف موجود در رجیستر (UnACR (Auto Baud Control Register پاک میشوند.

اگه بیت IntStatus صفر بشه، یه وقفه ( غیر از وقفه های Auto Baud ) معلق هستش که به کمک بیت IntId میتونیم شناساییش کنیم؛ برا پاک کردن پرچم این وقفه ها هم، باید رجیستر UnIIR رو بخونیم.
وقفه RDA با وقفه CTI در منبع وقفه با هم مشترک هستن، یعنی فعال سازی وقفشون توسط یه بیت انجام میده ( اون بیت رو هم نمیگم، چون صد بار تا حالا گفتم)

وقفه RDA و CTI

وقفه RDA وقتی رخ میده که دیتایی دریافت کنیم به اندازه مقدار تعیین شده در بیت های [UnFCR[7:6؛ و وقتی ریست میشه که تعداد بیت های موجود از حد تعیین شده در [UnFCR[7:6 کمتر بشه.
وقتی وقفه وقفه RDA رخ میده، CPU میتونه تعداد دیتا هایی (به اندازه مقدار تعیین شده توسط بیت های [UnFCR[7:6) دریافت کند.

سوال : یه جا دریافت میکنیم اطلاعات رو یا تیکه تیکه؟
جواب : کارکاتر کاراکتر(همون 1 بابت 1بایت) دریافت میکنیم، در این حالت باید یه شمارنده تعریف کنیم تا به اندازه مد نظر ریجستر مربوطه رو فراخونی کنه و دیتا رو بخونه، در مطلب پروژه ها، یه پروژه مربوط به انی گزاشتم، بخونید متوجه میشید
حالا فک کن اگه [UnFCR[7:6 رو، روی 14 بایت تنظیم کرده بودیم و قرار بود یه جا اطلاعات در دریافت کنیم چه اتفاقی میوفتاد، یعنی باید 14 باید در یه بار فراخونی رجیستر RBR دریافت کنیم، یکم غیر منطقی میشه این کار ( حالا یکی بلند میشه و میگه آقا با آرایه دریافت میکنیم، اگه کسی همچین حرفی زد یه پس گردنی محکم بهش بزنید و بعد فرار کنید ^_^ )
از این حرفا هم بگذریم، رجیستر RBR هم خودش دیتایی که به ما میده 8 بیتی(1 بایتی) هستش، شما چطور میخواین ازش در یه بار فراخونی، 14 بایت بگیرین آخه O_o ، باید 14 بار فراخونیش کنید.
وقفه (CTI (UnIIR[3:1] = 110، وقتی فعال میشه که حداقل یه کاراکتر دریافت کرده باشیم و وقفه دریافت اطلاعات(RDA) رخ ندهد در مدت زمان دریافت 3.5 تا 4.5 کاراکتر( یعنی 3.5 تا 4.5 کاراکتر چقدر دریافت کردنش طول میکشه، به همون مقدار میکرو وای میسته و اگه دیتا دریافت نکنه اون وقت … فرمول محاسبه این مقدار زمان در شکل زیر قرار داده شده )

UARTn Interrupt Handling

These initialization conditions are intended to give the UARTn THR FIFO a chance to fill up with data to eliminate many THRE interrupts from occurring at system start-up.

The initialization conditions implement a one character delay minus the stop bit whenever THRE = 1 and there have not been at least two characters in the UnTHR at one time since the last THRE = 1 event.

This delay is provided to give the CPU time to write data to UnTHR without a THRE interrupt to decode and service.

A THRE interrupt is set immediately if the UARTn THR FIFO has held two or more characters at one time and currently, the UnTHR is empty.

The THRE interrupt is reset when a UnTHR write occurs or a read of the UnIIR occurs and the THRE is the highest interrupt (UnIIR[3:1] = 001).

 

(UARTn FIFO Control Register (UnFCR

کنترل کردن عملیات حافظه فیفو RX و TX
توجه 0 : این رجیستر Write Only ( فقط قابل نوشتن ) هستش ( بخواین مقدارش رو بخونید دیتای درستی بهتون نمیده و این مرود تو دیتاشیت هم اگه اشتب نکنم ذکر شده؛ مثلا من حواسم نبود این رجیستر رو حی میخواستم مقدارش رو بخونم و همش عدد 1 بهم میداد، تمام بیت ها رو هم 1 کردم دیدم نه بازم داره 1 میده، اومدم سراغ توضیحت رجیستر دیدم فقط نوشتنی هستش، بد جور ضایع شدم ^_^ )
UARTn FIFO Control Register
بیت 0 ( FIFO Enable ) :
0 : غیر فعال کردن حافظه فیفو UARTn؛ نباید استفاده بشه در برنامه(Must not be used in the application)
1 : فعال کردن حافظه فیفو TX و RX و دسترسی به [UnFCR[7:1؛

This bit must be set for proper UART operation.

هر گونه تغییری در این بیت، تمام اطلاعات داخل FIFOها رو پاک میکنه.

بیت 1 ( RX FIFO Reset ) :
0 : کاربردی ندارد.
1 : پاک کردن تمام بیت های داخل فیفو RX مربوط به UARTn؛ با ریست شدن میکرو، این حافظه، اطلاعاتش پاک میشه.

بیت 2 ( TX FIFO Reset ) :
0 : کاربردی ندارد.
1 : پاک کردن تمام بیت های داخل فیفو TX مربوط به UARTn؛ با ریست شدن میکرو، این حافظه، اطلاعاتش پاک میشه.

بیت 3 ( DMA Mode Select ) : وقتی حافظه FIFO فعال میشه ( به وسیله بیت 0 همین رجیستر )، این بیت مد DMA رو انتخاب میکنه.

بیت 4 تا 5 : رزرو شده.

بیت 6 تا 7 ( RX Trigger Level ) : این دو بیت تعیین میکنن که چه تعداد دیتا باید دریافت شود تا وقفه یا درخواست DMA فعال بشه. ( چرا وقتی میزارمش رو غیر از 1 کاراکتر وقفه Rbr در هر بار دریافت دیتا فعال میشه؟ )
00 : 1 کاراکتر.
01 : 4 کاراکتر.
10 : 8 کاراکتر.
11 : 14 کاراکتر.

بیت 8 تا 31 : رزرو شده.

عملیات DMA
1) کاربر میتواند به صورت اختیاری عملیات ارسال و/یا دریافت رو انجام بده به وسیله DMA ( چی هستش حالا؟ مزایاش چیه؟ گزینه روبروی DMA چیه که الان DMA مطرح شده؟ )
2) مد DMA تعیین ( و انتخاب ) میشه به وسیله بیت [UnFCR[3
3) این بیت ( [UnFCR[3 ) تنها وقتی عمل میکنه که FIFO ها فعال شده باشند به وسیله بیت [UnFCR[0

UART receiver DMA
در مد DMA،

the receiver DMA request is asserted on the event of the receiver FIFO level becoming equal to or greater than trigger level, or if a character time-out occurs.

See the description of the RX Trigger Level above.

The receiver DMA request is cleared by the DMA controller.

UART transmitter DMA

In DMA mode, the transmitter DMA request is asserted on the event of the transmitter FIFO transitioning to not full.

The transmitter DMA request is cleared by the DMA controller.

 

(UARTn Line Control Register (UnLCR

این ریجستر فرمت دیتای ارسالی و دریافتی رو تعیین میکنه ( تعداد بیت data-stop حالت parity و… )
UARTn Line Control Register
بیت 0 تا 1 (Word Length Select) : تعیین تعداد بیت های دیتا.
00 : 5 بیت طول دیتا
01 : 6 بیت طول دیتا
10 : 7 بیت طول دیتا
11 : 8 بیت طول دیتا

بیت 2 (Stop Bit Select) : 
0 : 1 بیت stop
1 : 2 بیت stop ( تعداد بیت stop برابر 1.5 میشه اگر UnLCR[1:0]=00 )

بیت 3 (Parity Enable) :
0 : غیر فعال کردن تولید و بررسی Parity
1 : فعال کردن تولید و بررسی Parity

بیت 4 تا 5 (Parity Select) :
00 : Odd parity
01 : Even Parity
10 : 1 کردن.
11 : 0 کردن.
توجه : اگه در باب بیت توازن ( همون Parity ) چیزی نمیدونید لینک مقابل رو بخونید : بیت توازن

بیت 6 (Break Control) : وقتی بخوایم دیتا ارسال دیگه نشه دیگه و یه جورایی اعلام توقف ارسال داده به گیرنده بدیم ( این بیت رو 1 کنیم ) تا گیرنده بره به مد idle ( اگه اشتباه نکنم یه مد کاهش مصرف جریان هستش )، هر موقع هم دوست داشتیم و نیاز داشتیم میتونیم شرایط رو به حالت اولیه برگردونیم ( این بیت رو 0 کنیم )
0 : غیر فعال کردن break transmission (توقف ارسال داده)
1 : فعال کردن break transmission (توقف ارسال داده)؛ در این حالت پایه TXDn مقدارش 0 میشه.

بیت 7 ( (Divisor Latch Access Bit (DLAB ) : 
0 : غیر فعال کردن دسترسی به Divisor Latches ( همون رجیستر های UnDLL و UnDLM )
1 : فعال کردن دسترسی به Divisor Latches ( همون رجیستر های UnDLL و UnDLM )
بیت 8 تا 31 : رزرو شده.

(UARTn Line Status Register (UnLSR

پرچم هایی که اطلاعاتی درباب TX و RX به ما میدن. ( اطلاعاتی درباره دیتای ارسالی/دریافتی )
توجه 0 : این ریجستر RO هستش.
UARTn Line Status Register
بیت 0 ( (Receiver Data Ready (RDR ) : این بیت وقتی 1 میشه که دیتایی داخل UnRBR موجود باشد که خوانده نشده باشد و این بیت وقتی پاک میشه که حافظه فیفو RBR ( همون حافظه فیفو RX فک کنم منظورشه – درسته؟ ) خالی شده باشد.
0 :  دیتایی برای دریافت در RX FIFO موجود نیست.
1 : دیتایی برای دریافت در RX FIFO موجود است.

بیت 1 ( (Overrun Error (OE ) : این بیت 1 میشه وقتی که خطای سرریز(Overrun) رخ میده؛ با خوندن این پرچم، مقدارش به صورت خودکار پاک میشه(و دیگه نمیخاود پاکش کنید)؛ این بیت 1 میشه وقتی که UARTn RSR دیتای جدیدی رو سرهم (اسمبل) کنه و UARTn RBR FIFO ( سوال : rbr فیفو یا rx فیفو؟ ) هم پر باشه، در این حالت UARTn RBR FIFO دیتای جدید رو بازنویسی نمیکنه، و کاراکتر داخل UARTn RSR ( این چیه؟ ) از بین خواهد رفت.
0 : خطای Overrun رخ نداده است.
1 : خطای Overrun رخ داده است.

بیت 2 ( (Parity Error (PE ) : وقتی بیت Parity کاراکتر دریافتی اشتباه باشد، خطای Parity رخ میدهد و این بیت 1 میشود؛ با خوندن این بیت، مقدارش به صورت خودکار پاک میشه(و دیگه لازم نیست ما پاکش کنیم)؛ زمان تشخیص خطای Parity بستگی داره به بیت [UnFCR[0 ( چه ربطی به این داره آخه؟ )
0 : خطای Parity رخ نداده است.
1 : خطای Parity رخ داده است.
توجه : یه خطای Parity همراه میشه با یه کاراکتر در بالای حافظه فیفو RBR ( حافظه فیفو RBR مگه داریم؟ )

بیت 3 ( (Framing Error (FE ) : وقتی بیت stop کاراکتر دریافتی 0 باشد، خطای Framing رخ میدهد؛ با خوندن این بیت، مقدارش به صورت خودکار پاک میشه(و دیگه لازم نیست ما پاکش کنیم)؛ زمان تشخیص خطای Framing بستگی داره به بیت [UnFCR[0 ( چه ربطی به این داره آخه؟ )

Upon detection of a framing error, the RX will attempt to resynchronize to the data and assume that the bad stop bit is actually an early start bit.

توجه : یه خطای Framing همراه میشه با یه کاراکتر در بالای حافظه فیفو RBR ( حافظه فیفو RBR مگه داریم؟ )
0 : خطای Framing رخ نداده است.
1 : خطای Framing رخ داده است.

بیت 4 ( (Break Interrupt (BI ) :
وقتی پایه RXDn در وضعیت space قرار بگیره(در وضعیت 0) و تمام کاراکترهای دریافتی 0 باشه (start, data, parity, stop)، در این حالت وقفه شکست ( BI ) رخ میده؛ وقتی یکبار این وقفه رخ بده، گیرنده ( RXDn ) میره به مد idle تا زمانی که دیتای “marking state” ( تمام بیت ها 1) دریافت شود؛ با خونن این بیت، مقدارش پاک میشه؛ زمان تشخیص خطای break بستگی داره به بیت [UnFCR[0 ( چه ربطی به این داره آخه؟ )
توجه : “وقفه شکست” همراه میشه با کاراکتری در بالای حافظه فیفو RBR ( حافظه فیفو RBR مگه داریم؟ )
0 : “وقفه شکست” رخ نداده است.
1 : “وقفه شکست” رخ داده است.

بیت 5 ( (Transmitter Holding Register Empty (THRE ) : این بیت 1 میشه فورا به محث این که تشخیص بده که بیتهای [UnTHR[0:7 (بایت بالایی حافظه فیفو ارسال) خالی شده اند؛ این بیت وقتی پاک میشه که داخل [UnTHR[0:7 دیتای ارسالی جدیدی بنویسم(دیتایی که باید ارسال بشه )
0 : [UnTHR[0:7 شامل دیتا هستش.
1 : [UnTHR[0:7 خالی هستش.

بیت 6 ( (Transmitter Empty (TEMT ) : این بیت 1 میشه وقتی که UnTHR و UnTSR ( این برا چیه؟ ) خالی بشن؛ این بیت پاک میشه به صورت خودکار وقتی که حداقل یکی از دو ریجستر UnTHR یا UnTSR شامل دیتای صحیحی باشند.
0 : حداقل یکی از دو ریجستر UnTHR یا UnTSR دارای دیتای صحیحی هستش.
1 : UnTHR و UnTSR خالی هستند.

بیت 7 ( (Error in RX FIFO (RXFE ) : این بیت 1 میشه وقتی که دیتای دریافتی داخل UnRBR حداقل شامل یکی از خطای Rx باشد ( خطاهای دریافت شامل خطای framing، parity و یا break interrupt میشوند. )؛ این بیت مقدارش پاک میشه وقتی که این بیت خوانده شود و دیگه خطایی در FIFO وجود نداشته باشد ( چون تا زمانی که خطا وجود دارد در اطلاعات، بیت بیت همین طور 1 میمونه )
0 : هیچ خطای Rx یی رخ نداده یا UnFCR[0]=0 هستش.
1 : UnRBR شامل حداقل یک خطای Rx هستش.

بیت 8 تا 31 : رزرو شده.

تعداد مطالب : 367 تا
جنگ ما فتح قدس را به همراه خواهد داشت. [ امام خمینی (ره) ]
ارسال دیدگاه
6
نظرات این مطلب بسته شده است.
  1. ناشناس

    مهمان

    ناشناس

    سلام
    خسته نباشید واقعا
    سایت بسیار خوب و آموزنده ای دارید
    من قبلا با avr کار کردم و الان میخوام با آرم شروع کنم
    به نظرم خیلی سخته
    یه سوال خیلی فنی داشتم :
    الان من این همه رجیستر هاو این همه اما و اگر ها رو چطور باید یاد بگیرم ؟؟
    منظورم اینه که واقعا همه این هارو باید یاد گرفت
    فکر کنم حدود یه 100 تا رجیستر باشه که هر کدومشون 32 بیته دیگه من حرفی ندارم wacko
    حالا 100 تاهم نه شما بگو 20 تا فکر کنم بازم خیلی زیاده و نمیشه حفظش کرد
    لطف میکنید یه توضیح بدید کم کم دارم میترسم

    مشاهده پاسخ ها (1)
    • مهدی دمیرچیلو

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

      مهدی دمیرچیلو

      سلام-شما انگلیسی و دیتاشیت خونی یکم تمرین کنی حله – مدرسه خراب شده که نی بخوای همه چیو حفظ کنی.
      هر موقع خاستی به دیتاشیت و … مراجعه میکنی.
      جلسه امتحان هم نی که عجله داشته باشی.

  2. میلاد

    مهمان

    میلاد

    dash اووووفف چی سخته گیج شدم

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

      سخت نگیر – برو جلسه آخر و از کتابخونه آماده گه گزاشتم استفاده کن.

  3. داوود

    مهمان

    داوود

    سلام
    یک سوال
    میخام uart رو با وقفه دریافت کنم (البته در IAR)
    چطوری روتین وقفه رو آدرس بدم ؟
    wink

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

      سلام
      iar کار نکردم.