به نام خدا : تو این مطلب از سری مطالب آموزش پروژه محور آرم سری LPC1768 ، میخوام همون طور که قولشو داده بودم یه چندتا پروژه قرار بدم که توشون از واحد RIT استفاده کردم؛ تو این مطلب 3 پروژه با واحد جانبی rit براتون قرار میدم. ( آموزش پروژه محور آرم lpc1768 مبحث rit )
آموزش پروژه محور آرم lpc1768 مبحث rit
پیش نیاز : قبل از خوندن این مطلب باید اول مطلب آموزش RIT رو بخونید ( آموزش رجیستر محور ) : آموزش آرم میکروکنترلر lpc1768 جلسه 10 rit
1) پروژه آرم واحد جانبی RIT – ارسال داده به سریال بدون وقفه
عملکرد پروژه : تو این پروژه هر 1ثانیه یکبار پرچم RIT یک میشه و یه متغییر مقدارش زیاد میشه و به سریال ارسال میشه.
شماتیک پروژه : ماژول CP2012 رو به UART0 وصل کنید ( اگه بلد نیستید، از لینک زیر برید سراغ مطلب آموزش UART ) : آموزش LPC1768
کد پروژه :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include<lpc17xx.h> #include "serial.h" #include "rit.h" extern unsigned int rit_counter; int main() { initialization( 9600, 0/*autoBaud_Enable*/, 0/*use_AutoBaud_Finish_Interrupt*/, _1Character/*NumberCharRxTrigger*/ ); rit_init( 100000000, Enable ); // 100,000,000 = 100M while(1) { if( rit_read_interrupt_flag() ) { rit_counter++; printNumberln(rit_counter,10); rit_clear_interrupt_flag(); } }; } |
2) پروژه آرم واحد جانبی RIT – ارسال داده به سریال با وقفه
عملکرد پروژه : مثل پروژه 1، فقط تو پروژه قبلی از وقفه استفاده نکردیم، ولی تو این پروژه از تابع وقفه استفاده کردیم.
شماتیک پروژه : مثل پروژه 1
کد پروژه :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include<lpc17xx.h> #include "serial.h" #include "rit.h" extern unsigned int rit_counter; void RIT_IRQHandler (void) { rit_counter++; printNumberln(rit_counter,10); rit_clear_interrupt_flag(); } int main() { initialization( 9600, 0/*autoBaud_Enable*/, 0/*use_AutoBaud_Finish_Interrupt*/, _1Character/*NumberCharRxTrigger*/ ); rit_init( 100000000, Enable ); // 100,000,000 = 100M NVIC_EnableIRQ(RIT_IRQn); while(1); } |
3) پروژه آرم واحد جانبی RIT – راه اندازی کیپد و تعیین محدوده زمانی برای وارد کردن عدد
عملکرد پروژه : تو این پروژه آرم، یه کیپد داریم که یه کد N رقمی میتونه دریافت کنه و میتونیم حداکثر زمان مکث برا دریافت بین هر دو رقم رو هم تعیین کنیم، مثلا تعیین کنیم که اگه یه رقم وارد شد مثلا 2 ثانیه وایسا و اگه رقم دیگه ای وارد نشد اعداد وارد شده رو محاسبه کن و بفرست خروجی و…؛ و این کارو به کمک واحد جانبی RIT من انجام دادم، برا دیدن این که چطور اینکارو کردم، کدهای تابع getNumberFromKeypad رو بررسی کنید.
شماتیک پروژه : دقیقا مثل مطلب مقابل : پروژه راه اندازی کیپد با میکروکنترلر lpc1768
کد پروژه :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#include <lpc17xx.h> #include "serial.h" #include "gpio.h" #include "keypad.h" char Keypad_Data_Send[4][3] = { { '1', '2', '3' }, { '4', '5', '6' }, { '7', '8', '9' }, { '*', '0', '#' }, }; unsigned char Keypad_Pin_OutPut[4] = { P1_25, P1_24, P1_23, P1_22 }; unsigned char Keypad_Pin_InPut[3] = { P1_21, P1_26, P1_19 }; int main() { unsigned int getData, j; initialization( 9600, 0/*autoBaud_Enable*/, 0/*use_AutoBaud_Finish_Interrupt*/, _1Character/*NumberCharRxTrigger*/ ); keypad_init( Keypad_Pin_OutPut, Keypad_Pin_InPut, Keypad_Data_Send, YES/*useInternalResistor*/ ); while(1) { // دریافت یه چند چند رقمی - مثلا به عنوان پسورد - حداکثر باید 6 رقم باشد getData = getNumberFromKeypad( 300000000, 3 ); if( getData != 0 ) { print("\nYour Number is = "); printNumberln( getData, 10 ); for(j=0; j<10000000; j++); // Delay } }; } |
توجه : برا بحث کدهای مربوط به کیپد، من آموزش کیپد و کتابخونه اش رو در یه مطلب به صورت اختصاصی قرار دادم، میتونید به مطلب آموزشش مراجعه کنید : پروژه راه اندازی کیپد با میکروکنترلر lpc1768
فیلم عملکرد و توضیح 3 پروژه بالا :
فیلم آموزش تاثیر Debug روی عملیات RIT و بررسی بیت RITENBR
تو این فیلم همونطور که قبلا قولشو دادم تا جایی که یادمه، تاثیر بیت RITENBR از رجیستر RICTRL رو با هم میبینیم، که در مد دیباگ، تایمر رو فعال/غیر فعال میکنه.
امیدوارم این مطلب الکترونیکی براتون مفید بوده باشه، تا مطلب بعد یا علی، کلیپ زیر رو هم ببیند جالبه ( شیعه قالتاق، حدود 1.5 دقیقه هستش فک کنم )
http://www.aparat.com/v/X8ilK
مهمان
سلام
به اون آقایی که stm32 رو آموزش میداد میتونی با من تماس بگیره
@foladelectronic
آی دی تلگرام که شاید اگه نخواست شمارشو داشته باشم
نویسنده این مطلب
سلام-چشم/