PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : تشریح کامل دستورات cmsisبرای lpc1768



صفحه ها : [1] 2

esi_52000
10-02-2012, 12:09
سلام به همه دوستان گرامی.یه مدت پیش یه پست زدم که شایییییییید دوستان کمک کنن و بتونیم دستورات cmsis رو به همه آموزش بدیم تا دیگه نیازی به رجیستر نویسی نباشه و همه با زبان سطح بالا بتونن با میکرو های سری cortex کار کنن.اما ذوستان تمایلی نشون ندادن.
بنابر این خودم دست به کار شدم و شروع به ترجمه و برگردوندن دستورات به فارسی کردم.ممکنه کسی بگه رجیستر نویسی قدرت بیشتری رو به برنامه نویس میده اما این کاملا اشتباه.چون cmsis امکان برنامه نویسی با همون قدرت رجیستر نویسی اما با دردسر کمتر رو به برنامه نویس میده.برای شروع برنامه نویسی و توضیح دستورات کار با پورت رو برای lpc 1768 از پست بعد شروع میکنم

sigma-mx
10-02-2012, 13:43
سلام اسی جون . چطوری دادا ؟ میبینم همچنان فعالی و بخاطر همین خوشحالم :018:
در مورد همکاری و کمک باید بگم خود من دارم همین کار تو رو برای STM32 انجام می دم دقیقا !! پس از دست ما ناراحت نشو یه بار !
کاملا حرف شما رو تصدیق می کنم درباره این که رجیستر نویسی و CMSIS از یک بیس هستند و برای اثباتش کافیه نگاهی به کتابخانه های CMSIS بندازید و ببینید که اونها هم از همین دستورات استفاده کردن !! فقط برای راحتی کار و استفاده از ثابت های متنی قابل فهم بجای عدد و کد از define یا structure ها استفاده کردن که واقعا کار رو راحت می کنه . مثل GPIOA_PIN_0 بجای مثلا 0x0000001 .
فقط برای یادگیری اینکه هر رجیستر چیکار می کنه بشدت توصیه می کنم حتما قبل از استفاده از هر دستور CMSIS متن دستوراتش رو یه نگاه بندازید و باتوجه به Reference Manual میکروی مربوطه ، ببینید هر رجیستر چه کاری رو انجام می ده .
موفق و پیروز باشید ... :0013:

esi_52000
10-02-2012, 15:48
خوب اینم الوعده وفا


در اولین قدم باید کتابخانه ی lpc17xx_gpio.h رو به برنامه اضافه کنید.


#include “lpc17xx_gpio.h”

همون طوری که میدونید در میکرو های lpc میشه با پورتها به صورت 32 بیتی //16 بیتی//8بیتی کار کرد

کار کردن با پورتها به صورت 32 بیتی:

حالا میتونید از توابع زیر توی برنامه استفاده کنید و حالش رو ببرید.

1-توسط این دستورات پایه های یک پورت به صورت ورودی یا خزوجی پیکر بندی میگردند.
GPIO_SetDir( شماره پورت, پایه های مورد نظر , 0 یا 1)
FIO_SetDir( شماره پورت, پایه های مورد نظر , 0 یا 1)



شماره پورت : پورتی که میخواییم اون رو ورودی یا خروجی کنیم.(از 0 تا 4)

پایه های مورد نظر : عددی بین 0X00000000 تا 0XFFFFFFFF که به پینهای پورت اشاره دارد.

برای ورودی کردن از عدد 0 و برای خروجی از عدد 1 استفاده میکنیم.

مثال:


GPIO_SetDir(0,0X00000005,1);

در این حالت پینهای 0 و 2 از پورت 0 به عنوان خروجی پیکربندی شده اند.

2- توسط این دستورات پایه های یک پورت که به صورت خزوجی پیکر بندی شده اند یک میگردند.
GPIO_SetValue( شماره پورت , پایه های مورد نظر )
FIO_SetValue( شماره پورت , پایه های مورد نظر )

3- توسط این دستورات پایه های یک پورت که به صورت خزوجی پیکر بندی شده اند صفر میگردند.
GPIO_ClearValue( شماره پورت , پایه های مورد نظر )
FIO_ClearValue( شماره پورت , پایه های مورد نظر )


یه توضیح کوچیک اینکه دستورات صفر و یک کننده ی پایه ها رو پینهایی که به صورت ورودی پیکربندی شدن یا اینکه


اصلا پیکربندی نشدن هیچ تاثیری ندارن.

- توسط این دستورات عدد روی پایه های یک پورت رو بخونین.
Value= GPIO_ReadValue( شماره پورت , پایه های مورد نظر )
Value=FIO_ReadValue( شماره پورت , پایه های مورد نظر )

راستی این رو هم بگم که value یه متغیر 32 بیتیه

5-توسط این دستورات میتونید یه دسته از پینهای یه پورت رو از دسترس خارج کنین.
GPIO_SetMask( شماره پورت, پایه های مورد نظر , 0 یا 1)
FIO_SetMask( شماره پورت, پایه های مورد نظر , 0 یا 1)

در صورت قرار دادن عدد 1 عمل mask انجام و پینها غیر فعال میگردند واگر 0 بگذاریم دوباره به حالت عادی باز گشته و امکان نوشتن و خواندن از انها فراهم میگردد.



کار کردن با پورتها به صورت 16 بیتی:

1-توسط این دستورات پایه های یک پورت به صورت ورودی یا خزوجی پیکر بندی میگردند.
FIO_HalfWordSetDir( شماره پورت, بیت بالا یا پایین16 , پایه های مورد نظر , 0 یا 1)


شماره پورت : پورتی که میخواییم اون رو ورودی یا خروجی کنیم.(از 0 تا 4)

برای 16 بیت پایین رتبه عدد 0 و16 بیت بالا رتبه عدد 1 میگذاریم

پایه های مورد نظر : عددی بین 0X0000 تا 0XFFFF که به پینهای پورت اشاره دارد.

برای ورودی کردن از عدد 0 و برای خروجی از عدد 1 استفاده میکنیم.

مثال:


FIO_HalfWordSetDir(0,0,0X0005,1);

در این حالت پینهای 0 و 2 از پورت 0 به عنوان خروجی پیکربندی شده اند.

2- توسط این دستورات پایه های یک پورت که به صورت خزوجی پیکر بندی شده اند یک میگردند.
FIO_HalfWordSetDir( شماره پورت, بیت بالا یا پایین16 , پایه های مورد نظر )

- توسط این دستورات پایه های یک پورت که به صورت خزوجی پیکر بندی شده صفر میگردند.
FIO_HalfWordClearDir( شماره پورت, بیت بالا یا پایین16 , پایه های مورد نظر )


- توسط این دستورات عدد روی پایه های یک پورت رو بخونین.
Value=FIO_HalfWordReadValue( شماره پورت , بیت بالا یا پایین16)

راستی این رو هم بگم که value یه متغیر 16 بیتیه

توسط دستور زیر عمل mask انجام یا غیر فعال میگردد
FIO_HalfWordSetMAsk( شماره پورت, بیت بالا یا پایین16 , پایه های مورد نظر , 0 یا 1)

کار کردن با پورتها به صورت 8 بیتی:

1-توسط این دستورات پایه های یک پورت به صورت ورودی یا خزوجی پیکر بندی میگردند.


FIO_ByteSetDir( شماره پورت,8بیت صفرم/اول/دوم/سوم , پایه های مورد نظر , 0 یا 1)


شماره پورت : پورتی که میخواییم اون رو ورودی یا خروجی کنیم.(از 0 تا 4)

پایه های مورد نظر : عددی بین 0X00 تا 0XFF که به پینهای پورت اشاره دارد.

برای ورودی کردن از عدد 0 و برای خروجی از عدد 1 استفاده میکنیم.

مثال:


FIO_ByteSetDir(0,0,0X05,1);

در این حالت پینهای 0 و 2 از پورت 0 به عنوان خروجی پیکربندی شده اند.

2- توسط این دستورات پایه های یک پورت که به صورت خزوجی پیکر بندی شده اند یک میگردند.
FIO_ByteSetDir( شماره پورت, 8بیت صفرم/اول/دوم/سوم , پایه های مورد نظر )

- توسط این دستورات پایه های یک پورت که به صورت خزوجی پیکر بندی شده صفر میگردند.
FIO_ByteClearDir( شماره پورت, 8بیت صفرم/اول/دوم/سوم , پایه های مورد نظر )


- توسط این دستورات عدد روی پایه های یک پورت رو بخونین.
Value=FIO_ByteReadValue( شماره پورت , 8بیت صفرم/اول/دوم/سوم)

راستی این رو هم بگم که value یه متغیر 8 بیتیه

توسط دستور زیر عمل mask انجام یا غیر فعال میگردد
FIO_ByteSetMAsk( شماره پورت, 8بیت صفرم/اول/دوم/سوم, پایه های مورد نظر , 0 یا 1)


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////خوب حالا میریم سراغ دستوراتی که با وقفه پورتا کار میکنن.


دوستان میدونن که میشه در این خانواده از میکروها از تمامی پینهای پورت 0 وپینهای 0 تا 13 پورت 2 به عنوان ورودی وقفه استفاده کرد.


همچنین میشه تایین کرد که وقفه روی لبه ی بالارونده یا پایین رونده اتفاق بیفته.





1-توسط این دستور میشه پورت 0 یا 2 رو به عنوان ورودی وقفه پیکربندی کرد.
GPIO_IntCmd(شماره پورت ,پینهای مورد نظر , لبه بالا رونده یا پایین رونده)
FIO_IntCmd(شماره پورت ,پینهای مورد نظر , لبه بالا رونده یا پایین رونده)



شماره پورت : میتونه 0 یا 2 باشه(چون وقفه فقط روی این پورتا تعریف شده.


پینهای مورد نظر:پینهایی از پورت که ورودی وقفه هستند.


برای لبه بالا رونده عدد 0 ولبه پایین رونده عدد 1 بزارید.


2-توسط این دستور میتونید بفهمید وقفه روی کدوم پایه از پورت اتفاق افتاده-
GPIO_GetIntStatus(شماره پورت ,شماره پین مورد نظر , لبه بالا رونده یا پایین رونده)
FIO_GetIntStatus(شماره پورت ,شماره پین مورد نظر, لبه بالا رونده یا پایین رونده)


حتما حواستون باشه که توی این قسمت باید شماره پین مورد نظرتون رو بنویسید که اعداد 0 تا 31 برای پورت 0 و اعداد 0 تا 13 برای پورت 2 هستش.

3-توسط این دستور میتونید پرچم وقفه اتفاق افتاده رو پاک کنین.
GPIO_ClearInt(شماره پورت ,شماره پینهای مورد نظر ه)
FIO_ClearInt(شماره پورت ,شماره پینهای مورد نظر,)


لازم اینم بگم که وقفه پورت میکرو روی وقفه خارجی 3 تنظیم شده.پس بایستی حتما اینم بنویسید که
NVIC_EnableIRQ(EINT3_IRQn);


اینم یه نمونه برنامه کامل واسه تست مطالب بالا.
#include <lpc17xx_gpio.h>
//----------------------------------------------
void delay(void);
void EINT3_IRQHandler(void);
//----------------------------------------------
int main(void)
{
GPIO_SetDir(1,0Xffffffff,1);
GPIO_ClearValue(1,0Xffffffff);
GPIO_IntCmd(0,0xffffffff,1);
NVIC_EnableIRQ(EINT3_IRQn);
while(1);
return 0;
}
//---------------------------------------------
void delay(void)
{
long int i;
for(i=0;i<400000;i++);
}
//---------------------------------------------
void EINT3_IRQHandler(void)
{
char esi;
for(esi=0;esi<32;esi++)
{
if(GPIO_GetIntStatus(0,esi,1))
{
GPIO_ClearInt(0,1<<esi);
GPIO_SetValue(1,1<<esi);
delay();
GPIO_ClearValue(1,1<<esi);
delay();
}
}
}

esi_52000
10-02-2012, 15:54
ببخشید مثل اینکه خوب نوشته نشده
فایل زیر رو دانلود کنید بهتره دوستان
قدم بعدی کتابخونه ی pinsel هستش .البته اگه دوستان استقبال کنن. اونایی که مایلن ادامه بدم یه
یا علی مدد بگن .منتظرم.

sigma-mx
10-02-2012, 16:10
اسی جان اولا یا علی ! ثانیا برای اینکه کد هات درست نمایش داده بشن اونا رو بین تگ php که دکمش تو ویرایشگر هست بزار . مثل این ...

#include <lpc17xx_gpio.h>
//----------------------------------------------
void delay(void);
void EINT3_IRQHandler(void);
//----------------------------------------------
int main(void)
{
GPIO_SetDir(1,0Xffffffff,1);
GPIO_ClearValue(1,0Xffffffff);
GPIO_IntCmd(0,0xffffffff,1);
NVIC_EnableIRQ(EINT3_IRQn);
while(1);
return 0;
}
//---------------------------------------------
void delay(void)
{
long int i;
for(i=0;i<400000;i++);
}
//---------------------------------------------
void EINT3_IRQHandler(void)
{
char esi;
for(esi=0;esi<32;esi++)
{
if(GPIO_GetIntStatus(0,esi,1))
{
GPIO_ClearInt(0,1<<esi);
GPIO_SetValue(1,1<<esi);
delay();
GPIO_ClearValue(1,1<<esi);
delay();
}
}
}

esi_52000
10-02-2012, 19:48
داداش sigma سلام ما چاکرتیم عزیز.ممنون که گفتی چطور نوشته ها رو بزارم.باور کن بلد نبودم:0013:
بینم واسه بقیه یا علی گفتن سخته هااااااااااااااا

esi_52000
12-02-2012, 15:02
نه مثل اینکه کسی مشتاق نیست.
ما رو باش فکر کردیم دوستان مشتاق یادگیری cmsis هستن.اما گویا دوستان فقط تو این فکرن که از این میکرو بپرن به یه میکرروی دیگه.اخه مگه lpc چی نداره که همه میخواین stm یاد بگیرین؟
فکر کنم فردا که LM بیاد همه دوباره STM رو بیخیال شن برن دنبال LM .بیخیال

sigma-mx
12-02-2012, 16:35
اسی جان نباید ذهنتو درگیر این حرفا کنی ! به نظر من بزرگترین سود این کاری که می کنی به خودت می رسه !
چون خودت رو مجبور می کنه بری دنبالش و مطلب بنویسی و حواست همش به اینه که چند نفر منتظر مطلبت هستند که واقعا هم هستن :0013: اگه به کارت ادامه بدی می بینی کم کم بچه ها هم میان . ولی مطمئن باش حتی اونایی که نه پست می دن نه تشکر ، حتما نوشه هاتو می خونن . یا علی ...

esi_52000
12-02-2012, 20:56
داداش sigma خدایی دمت گرم.قوت قلبی دادی از پست بعد کتابخونه ی pinsel شروع میکنم.:hi:

esi_52000
12-02-2012, 21:50
توضیحات لایبری:
همه دوستان میدونن که در میکرو های lpc یک پایه میتونه تا 4 کاربرد مختلف داشته باشه.مثلا پایه ی(به فرض میگم چون الان ترتیب پایه های 1768 رو ندارم)25 میکرو میتونه هم به صورت port2.4 عمل کنه یا به صورت ورودی adc یا sda برای i2c0(بازم میگم که مثلا.....)
برای اینکه بتونیم این پایه رو برای هریک از این کاربردها آماده کنیم میبایست
رجیستر PINSEL مربوطه رو دستکاری کنیم.همچنین برای اینکه وضعیت PULLUP / PULLDOWN/OPEN DRAIN بودن پایه رو مشخص کنیم باید با رجیسترهای PINMODE ور بریم که واقعا اعصاب خورد کنه.

ما واسه اینکه نخواهیم با رجیستر درگیر بشیم از CMSIS و لایبری PINSEL اون استفاده میکنیم.
در اولین قدم لازمه لایبری اون رو به برنامه اضافه کنیم .پس داریم



#include"lpc17xx_pinsel.h"

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

PINSEL_CFG_Type VarName ;
PINSEL_CFG_Type pincfg

متغیری که معفی کردیم دارای چندین پارامتره که تک تک بهش اشاره میکنیم


pincfg.Portnum= 0/4

این قسمت باید شماره پورت پایه مورد نظر رو بنویسین که بین 0 تا 4 هستش

pincfg.Pinnum=0/31

در این قسمت شماره پایه مورد نظر قرار میگیره که بین 0 تا 31 هستش


pincfg.Funcnum= 0/4

در این قسمت شماره تابعی که میخواهید پین مورد نظر در اون حالت قرار بگیره وارد میشه
برای تمامی پینها gpio به عنوان شماره تابع صفر در نظر گرفته شده.مثلا برای adc در مثال فرضی بالا عدد2
و برای sda شماره تابع 3 در نظر گرفته شده.شما میتونید از روی دیتاشیت بفهمید که شماره تابع مورد نظرتون چیه هستش.

pincfg.Pinmode = 0/4

در این قسمت میتونید pullup یا pulldown یا opendrain بودن اون پین رو مشخص کنید
برای pullup شدن عدد 0
برای pulldown شدن عدد 3
برای opendrain شدن عدد2
رو قرار بدین . می بینید که برای عدد 1 حالتی وجود نداره .
پارامتر بعدی داریم

pincfg.Opendrain= 0/1

در این حالت تنها اگر در قسمت pincfg.pinmode عدد 2 رو قرار دادین توی این پارامتر عدد 1 رو بزارین
در غیر این صورت عدد 0 بزارین.که نشون میده این پین از داخل pullup یا pulldown داره یا نه.


تو این مرحله با تابع زیر کارمون رو کامل میکنیم و تغییرات خواسته شده رو به پین مورد نظر اعمال میکنیم.

PINSEL_ConfigPin(&pincfg

این لایبری توابع دیگه ایهم داره که مربوط به i2c هست و در قسمت خودش بهش میپردازم.
اینم یه مثال واسه برنامه


* Init ADC pin connect
* AD0.2 on P0.25
*/
PinCfg.Funcnum = 1;
PinCfg.OpenDrain = 0;
PinCfg.Pinmode = 0;
PinCfg.Pinnum = 25;
PinCfg.Portnum = 0;
PINSEL_ConfigPin(&PinCfg);

تموم شد .دوستان اگه خوششون اومد و خواستن ادامه بدم یه یا مولا علی بگن که منتظرم.

sigma-mx
12-02-2012, 21:59
اسی جان مگه برای کار با gpio ، لایببری بنام gpio نداره ؟

esi_52000
12-02-2012, 22:14
اسی جان مگه برای کار با gpio ، لایببری بنام gpio نداره ؟

آره داداشم داره .لایبری pinselزمانی استفاده میشه که بخواهین پینها رو واسه کاری غیر از gpio استفاده کنین مثلا واسه adc یا کاربردای دیگه مثل i2c. البته اینم بگم که ممکنه شما بخوایین مثلا پینها رو در حالتgpio البته با مقاومت pulldown استفاده کنین .در همچین حالتی هم بایست از این لایبری استفاده کنین.
به این صورت (مثلا واسه پورت 2 پین 12 داریم

pincfg.Portnum=2
pincfg.Pinnum=12
pincfg.Pinfunc=0
pincfg.Pinmode=2
pincfg.Opendrain=0
PINSEL_ConfigPin(&pincfg

مشکلی بود در خدمتم داداش............

pumper
13-02-2012, 14:04
اسی جان اگه بخوایم پین ها رو دسته ای تغییر بدیم چیکار کنیم ؟
مثلا 5 تا پین رو با هم ؟

mzarkoob
14-02-2012, 10:28
نه مثل اینکه کسی مشتاق نیست.
ما رو باش فکر کردیم دوستان مشتاق یادگیری cmsis هستن.
سلام. آقا چرا مشتاق هستیم کی گفته نیستیم!!!
ولی مثلا خود من هنوز برد 1768 ندارم که کاری انجام بدهم. و خوب البته در مورد تهیه این برد هم چند تا دغدغه دارم. 1- برد 2378 فکر می کردم طبق مطالب گفته شده فرکانس پالس دهی پایه های خروجی اش 15 مگ باشه ولی دیدیم که انگار سرمون کلاه رفته! و عملا بیش از 2-3 مگ با تایمر نمیشه:sa: برای همین این اطمینان در مورد 1768 حاصل باید بشه که باز نگیم فرکانسش 100 مگه بعد بیایم ببینیم ای بابا ... 2- این شروع آموزش های 1768 را دچار ایراد و شک شدم که منظور از اینکه شروع میشه مانند قبله یا اینکه دیگه منحصرا در کلاس های آنلاین مطالب گفته میشه و دیگه در سایت کسی آموزشی را ارائه نمیکنه و اگه کسی مثل شما کاری بکنه یا کسی استقبالی نمی کنه یا اگه مثل من سوالی بکنه ارجاعش میدهند به اینکه در کلاس ها شرکت کنیم. کدوم؟
گویا دوستان فقط تو این فکرن که از این میکرو بپرن به یه میکرروی دیگه.اخه مگه lpc چی نداره که همه میخواین stm یاد بگیرین؟
فکر کنم فردا که LM بیاد همه دوباره STM رو بیخیال شن برن دنبال LM .بیخیال
بله مورد سوم همینه که این برد 1768 هم تهیه شد و کاری هم به طور جمعی آغاز شد. حالا باز یکی یه جایی چشمش به یه میکرو دیگه می افته و میاد تو انجمن طوفان به پا می کنه که آی چرا نشستید بیاید یه برد برا این میکرو بزنیم که .... همه هم قبلی ها را ول می کنند میرند سراغ این جدیده و این وسط یکی مثل من اگه در مورد قبلی ادامه بده یا سوالی مطرح کنه میبینه کسی دیگه نیست و همه میگن مهندس دیگه میکرو ... قدیمی شده بیا این را کار کن!! در حالی که مثلا ارتباطاتی مثل یواس بی و ssp و اترنت و ... باقی مونده که کسی پایه نیست
یه تعداد هم برد قبلیشون مثلا سریالش سوخته دیگه حس همکاری ندارن و این جور مسایل

esi_52000
15-02-2012, 15:50
اسی جان اگه بخوایم پین ها رو دسته ای تغییر بدیم چیکار کنیم ؟
مثلا 5 تا پین رو با هم ؟

سلام ببخشید دو سه روز دسترسی نداشتم به اینترنت نمیتونستم جواب بدم .
برای این کار مثل پایین عمل کن داداشم.

[PHP]PINSEL_CFG_Type pincfg;
pincfg.portnum=0 ;
pincfg.funcnum=0 ;
pincfg.pinmode=3 ;
pincfg.opendrain=0 ;
pincfg.pinnum=0 ;
PINSEL_ConfigPin(&pincfg) ;
pincfg.pinnum=1 ;
PINSEL_ConfigPin(&pincfg);
pincfg.pinnum=2 ;
PINSEL_ConfigPin(&pincfg);
pincfg.pinnum=3 ;
PINSEL_ConfigPin(&pincfg);
pincfg.pinnum=4 ;
PINSEL_ConfigPin(&pincfg);[/PHP

]در مثال بالا پایه های 0 تا 4 پورت 1 در حالت pulldown پیکربندی شدن.
سوالی بود در خدمتم..........................

esi_52000
15-02-2012, 16:00
سلام. آقا چرا مشتاق هستیم کی گفته نیستیم!!!
ولی مثلا خود من هنوز برد 1768 ندارم که کاری انجام بدهم. و خوب البته در مورد تهیه این برد هم چند تا دغدغه دارم. 1- برد 2378 فکر می کردم طبق مطالب گفته شده فرکانس پالس دهی پایه های خروجی اش 15 مگ باشه ولی دیدیم که انگار سرمون کلاه رفته! و عملا بیش از 2-3 مگ با تایمر نمیشه:sa: برای همین این اطمینان در مورد 1768 حاصل باید بشه که باز نگیم فرکانسش 100 مگه بعد بیایم ببینیم ای بابا ... 2- این شروع آموزش های 1768 را دچار ایراد و شک شدم که منظور از اینکه شروع میشه مانند قبله یا اینکه دیگه منحصرا در کلاس های آنلاین مطالب گفته میشه و دیگه در سایت کسی آموزشی را ارائه نمیکنه و اگه کسی مثل شما کاری بکنه یا کسی استقبالی نمی کنه یا اگه مثل من سوالی بکنه ارجاعش میدهند به اینکه در کلاس ها شرکت کنیم. کدوم؟
بله مورد سوم همینه که این برد 1768 هم تهیه شد و کاری هم به طور جمعی آغاز شد. حالا باز یکی یه جایی چشمش به یه میکرو دیگه می افته و میاد تو انجمن طوفان به پا می کنه که آی چرا نشستید بیاید یه برد برا این میکرو بزنیم که .... همه هم قبلی ها را ول می کنند میرند سراغ این جدیده و این وسط یکی مثل من اگه در مورد قبلی ادامه بده یا سوالی مطرح کنه میبینه کسی دیگه نیست و همه میگن مهندس دیگه میکرو ... قدیمی شده بیا این را کار کن!! در حالی که مثلا ارتباطاتی مثل یواس بی و ssp و اترنت و ... باقی مونده که کسی پایه نیست
یه تعداد هم برد قبلیشون مثلا سریالش سوخته دیگه حس همکاری ندارن و این جور مسایل

سلام داداش .ممنون که توجه داشتین حرف دلمون رو زدیcry::cry::cry::cry::
یکی از اشتباهات دوستان اینه که فکر میکنن همه چیز رو باید سطحی یاد بگیرن و بیخیالش بشن.من یه سرچ کوچیک زدم تو اینترنت و دیدم که میکرو های lpc با cortex_m3 از جمله ی بهترینها هستند و با توجه به اینکه رجیسترها توی این سری معمولا تغییری ندارن براحتی میشه از دانشتون در مورد یک خانواده در سایر خانواده ها استفاده کرد پس نیازی نیست
که ما هنوز lpc رو یاد نگرفته بپریم به st یا هر چیز دیگه ای.ببخشید رفتم رو منبر:mrgreen::mrgreen::mrgreen::mrgreen:

راستی منم برد ندارم.اصلا پولشو ندارم............امان از فقر............:mrgreen::mrgreen::mrgreen:

اینم بگم cmsis مربوط به 1768 خیلی خیلی شبیه 1313 هستش.
من تقریبا دل و روده ی این cmsis 1768 رو در اوردم و کم کم میزارمش.
من تا آخر این آموزش هستم

esi_52000
16-02-2012, 00:44
داداش مهدی(آقای مهدی زرکوب......البته اگه عزیز دیگه ای هم میخواد کمک کنه خوشحال میشیم دوستان ) یه پیشنهاد دارم .اگه پایه بودی یه یا علی بگو داداش.
من با cmsis قسمتای زیر رو راه اندازی کردم و قول میدم اونو کامل توضیح بدم.

GPIO
PINSEL
ADC
DAC
RTC
RIT
I2C
TIMER/COUNTER

داداش شما میتونی زحمت قسمتای SPI و UART رو بکشی.منتظرم.اگه جوابت مثبت بود بگو تا من مطالب رو از فردا شروع کنم داداش

sigma-mx
16-02-2012, 02:08
سلام اسی جان . اینکه گفتی برد نداری یعنی چه ؟ یعنی کلا بردشو نداری یا این بردی که کویر میفروشه رو نداری ؟؟؟ من خودم هم ندارم ولی برام سوال شد ! یعنی تا حالا با شبیه ساز کیل کار کردی ؟
در مورد حرف شما و آقای زرکوب هم من کاملا موافقم . الانم که دارم رو st کار می کنم بازم می گم خیلی معماری nxp قشنگه ! واقعا با رجیستر هاش حال کردم . البته هنوز زیاد کار باهاش نکردم ولی نحوه مقدار دادن به رجیستر و.. خیلی جالبه . فقط تو قسمت gpio ببینید چند روش برای مقدار دادن به پورت داره !! 8 بیتی 16 بیتی 32 بیتی . کلی حالت ! چقدر برنامه نویسی رو راحت می کنه ! من دیگه سراغ arm7 نمی رم ! واقعا کرتکس یه چیز دیگست . دو تا برد یکی برای stm32 یکی هم برای lpc1313 سفارش دادم . برسه هر دو رو شروع می کنم . خوشبختانه 1313 هم مثل همین 1768 هست . برد 1768 هم سعی می کنم تهیه کنم . البته هدر برد رو .

esi_52000
16-02-2012, 11:11
سلام اسی جان . اینکه گفتی برد نداری یعنی چه ؟ یعنی کلا بردشو نداری یا این بردی که کویر میفروشه رو نداری ؟؟؟ من خودم هم ندارم ولی برام سوال شد ! یعنی تا حالا با شبیه ساز کیل کار کردی ؟
در مورد حرف شما و آقای زرکوب هم من کاملا موافقم . الانم که دارم رو st کار می کنم بازم می گم خیلی معماری nxp قشنگه ! واقعا با رجیستر هاش حال کردم . البته هنوز زیاد کار باهاش نکردم ولی نحوه مقدار دادن به رجیستر و.. خیلی جالبه . فقط تو قسمت gpio ببینید چند روش برای مقدار دادن به پورت داره !! 8 بیتی 16 بیتی 32 بیتی . کلی حالت ! چقدر برنامه نویسی رو راحت می کنه ! من دیگه سراغ arm7 نمی رم ! واقعا کرتکس یه چیز دیگست . دو تا برد یکی برای stm32 یکی هم برای lpc1313 سفارش دادم . برسه هر دو رو شروع می کنم . خوشبختانه 1313 هم مثل همین 1768 هست . برد 1768 هم سعی می کنم تهیه کنم . البته هدر برد رو .

سلام داداش sigma .
داداش من کلا هیچ بردی ندارم عزیز و فقط دارم از شبیه ساز استفاده میکنم .واقعیتشو بگم هزینه برد واقعا بالاست .فقط برد سایت 145 تومن داره درمیاد.جالب اینجاست که توی جنوب کشور
اصلا lpc وجود نداره.
داداش sigma اگه زحمت بکشی و برد 1313 رو به فرمت pdf آپلود کنی واقعا ممنون میشم. آخه من protel ندارم داداش. راستی در مورد QEI اطلاعاتی داری؟اصلا چی هست این .
اینم بگم که توی سایت eca یه هدر برد 1768 هستش که قیمتش 35 تومن هستش.
داداش یه نگاه بنداز شاید به دردت بخوره:wink:

sigma-mx
16-02-2012, 12:27
سلام دادا چطوری ؟
واقعا باید بهت خسته نباشید گفت . اونم بخاطر پشتکارت هست . من خودم هم هنوز برد رو ندارم و قبلا هم که یکم شروع کرده بودم با شبیه ساز بود . حقیقتش نمی دونم کارم درسته یا نه . ولی ترجیح می دم برد رو خودم طراحی کنم و آپشن های مورد نیازم رو روش بزارم . و واقعا هم اگه این کارو کنی میبینی چقدر هزینه هم میاد پایین و خب برد هم دیگه دست پخت خودته !
در مورد 1313 بردی که زدم تنها یه هدر برد کوچیکه ! یکم از یه میکرو ی 40 پین عریضتر با 42 پین البته ! فقط روش خازن صافی و led پاور و پین هدر برای پروگرام هست و پایه هاش به ترتیب بیرون کشیده شده . و برد هم دو رو و متالیزه هست . هر دو برد st و 1313 رو گذاشتم بیاد تستش کنم و بعد بذارم رو سایت . ولی شما اگه می خوای ببینی مشکلی نیست دادا . ولی دو رو رو چطوری برات pdf کنم ؟ هر طور می خوای بگو .
در مورد آخر هم QEI یکی از ماژول های پردازش سیگنال در میکرو های DSP دار مثل dsPIC هست و مخفف Quadrature Encoder Interface هست . بنابر اسمش مربوط به انکودر ها ست . اگه این عنوان لاتین رو تو نت بگردی فورا یکی دوتا pdf از dsPIC پیدا میکنی دادا . موفق باشی

esi_52000
16-02-2012, 13:40
داداش sigma ممنونم .سعی میکنم خودم براش یه هدربرد پیاده کنم و بسازمش(البته یه رو).البته داداش شما خودتون استاد ما هستین اما یه نکته کوچیک بگم که :عزیز مثل اینکه 1313 داره SPI رو ساپورت نمی کنه. به نظرم بریم روی LPC175X کار کنیم بهتر باشه.چون از هر لحاظ با 1768 همخونی داره و فقط تعداد پایه هاش 80 تاست.(52 تا پین I/O داره )به نظرم از 1313 بهتر باشه.البته قیمتش رو نمی دونم چنده

pumper
16-02-2012, 13:54
آقا اسی اگه ممکنه تا توی پورت ها هستیم بحث اینتراپت خارجی رو هم بگید

sigma-mx
16-02-2012, 14:15
داداش sigma ممنونم .سعی میکنم خودم براش یه هدربرد پیاده کنم و بسازمش(البته یه رو).البته داداش شما خودتون استاد ما هستین اما یه نکته کوچیک بگم که :عزیز مثل اینکه 1313 داره SPI رو ساپورت نمی کنه. به نظرم بریم روی LPC175X کار کنیم بهتر باشه.چون از هر لحاظ با 1768 همخونی داره و فقط تعداد پایه هاش 80 تاست.(52 تا پین I/O داره )به نظرم از 1313 بهتر باشه.البته قیمتش رو نمی دونم چنده

من قبلا یه هدر برد دیگه یک رو طراحی کردم البته برای یک رو فقط میشه پایه ها رو نا مرتب بیرون آورد یعنی بشکلی که از میکرو بیرون میاد . ضمنا دیدم 1313 خیلی دیگه کوچیکه و pcb زدنش تو خونه زیاد جالب نیست گفتم پس یه دو رو براش بزنم . در مورد ساپورت spi هم بگم که، چرا برادر ، ساپورت می کنه ! چرا نکنه !؟ واحد های spi پیشرفته بعلت چند وظیفه ای شدن اسمش شده SSP ! اتفاقا با سرعت 38Mbps هم می تونه Master بشه ! همین فسقلی از اون ST هم معماریش جالب تره !
در مورد اینکه گفتی بریم روی فلان میکرو که ... بگم ، خب باید یجوری دسته بندی کرد . این برای پروژه های کوچیکه ! برای یه کار خیلی کم و محدود شما بگو اگه من میکروی 100 پایه بزارم عاقلانه هست ؟ به خاطر همین من برای طراحی محدود با NXP ، این 1313 رو انتخاب کردم و برای طراحی وسیع تر فعلا 1768 ( گویا بهترش هم هست ) .


A Synchronous Serial Port (SSP) is a controller that supports the Serial Peripheral Interface (You can see links before reply) (SPI), 4-wire Synchronous Serial Interface (You can see links before reply) (SSI), and Microwire (You can see links before reply) serial buses (You can see links before reply). A SSP uses a master-slave paradigm to communicate across its connected bus (You can see links before reply).

esi_52000
16-02-2012, 14:25
من قبلا یه هدر برد دیگه یک رو طراحی کردم البته برای یک رو فقط میشه پایه ها رو نا مرتب بیرون آورد یعنی بشکلی که از میکرو بیرون میاد . ضمنا دیدم 1313 خیلی دیگه کوچیکه و pcb زدنش تو خونه زیاد جالب نیست گفتم پس یه دو رو براش بزنم . در مورد ساپورت spi هم بگم که، چرا برادر ، ساپورت می کنه ! چرا نکنه !؟ واحد های spi پیشرفته بعلت چند وظیفه ای شدن اسمش شده SSP ! اتفاقا با سرعت 38Mbps هم می تونه Master بشه ! همین فسقلی از اون ST هم معماریش جالب تره !
در مورد اینکه گفتی بریم روی فلان میکرو که ... بگم ، خب باید یجوری دسته بندی کرد . این برای پروژه های کوچیکه ! برای یه کار خیلی کم و محدود شما بگو اگه من میکروی 100 پایه بزارم عاقلانه هست ؟ به خاطر همین من برای طراحی محدود با NXP ، این 1313 رو انتخاب کردم و برای طراحی وسیع تر فعلا 1768 ( گویا بهترش هم هست ) .

داداش sigma از راهنمایت ممنون دادا.
خدایش خیالمو راحت کردی که واحدSPI رو ساپورت میکنه.دادا میشه یه خورده در مورد نحوهی کار SSP توضیح بدی (نگی پر رو شده ها:mrgreen::mrgreen::mrgreen::mrgreen::mrgreen:)

esi_52000
16-02-2012, 14:32
آقا اسی اگه ممکنه تا توی پورت ها هستیم بحث اینتراپت خارجی رو هم بگید

سلام داداش PUMPER.
چشم داداشم اونم میگم.ولی فکر کنم شما قسمت GPIO رو خوب نخوندیا.آخه توی اون قسمت توضیح دادم که شما میتونید از پینهای 0 تا 31 پورت 0 و پینهای 0 تا 13 پورت 2 به عنوان ورودی وقفه استفاده کنی.پس به این صورت شما همین الان هم میتونی نزدیک به 43 تا وقفه خارجی داشته باشی (البته همه ی پایه ها توی پورتا موجود نیست)
ولی چشم اونم میگم.البته اگه اجازه بدین اینو بعد بگم.آخه مطالبی که آماده کردم رو میخوام طبق روال بگم.باشهههههههههههههههههه هههههههههههه داداش .عیبی نداره که؟:mrgreen:

sigma-mx
16-02-2012, 14:39
خب همونطور که تو خط آخر نوشتم . یه ماژول هست که با کانفیگ نرم افزاری قادره تو چند حالت کار کنه . مثل spi , ssi , microwire و ... اینا همه پروتلهای سریال هستن که سنکرونن یعنی کلاک هم احتیاج دارن . راحت بگم بیشتر سنسورها و ماژول ها با همین پروتکل ها کار می کنن و هر کدوم از این پروتکل ها توسط یک شرکت مطرح بوجود اومده مثل موتورولا - ناسیونال - تگزاس اینسترومنت - ... اگه در مورد هر کدوم سرچ کنی مطالب کافی پیدا می کنی . دیگه تو معماری های جدید همه واحد های سخت افزاری تغییر اساسی کردن . مثلا دیگه واحد UART پیدا نمی کنی ! شده USART یا advance USART . که علاوه بر ارتباط سریال معمولی (آسنکرون) قادره با سریال سنکرون - فول پورت مودم (hand shake ) - پروتکل کارت هوشمند iso7816 - پروتکل ارتباط دیتا با مادون قرمز ( irDA ) و ... پشتیبانی می کنه .
یا حق

mzarkoob
16-02-2012, 16:59
داداش مهدی(آقای مهدی زرکوب......البته اگه عزیز دیگه ای هم میخواد کمک کنه خوشحال میشیم دوستان ) یه پیشنهاد دارم .اگه پایه بودی یه یا علی بگو داداش.
من با cmsis قسمتای زیر رو راه اندازی کردم و قول میدم اونو کامل توضیح بدم.

gpio
pinsel
adc
dac
rtc
rit
i2c
timer/counter

داداش شما میتونی زحمت قسمتای spi و uart رو بکشی.منتظرم.اگه جوابت مثبت بود بگو تا من مطالب رو از فردا شروع کنم داداش



هنوز فرصت نشده کار رو 1768 را شروع کنم و خوب شما خیلی جلوترید! و خوب شروع کنم اول میرم سراغ اینها که گفتید.

Shapour_Ardebil
18-02-2012, 22:14
داداش ضمن خسته نباشید عرض میکنم که کل اینترنت (فارسی )را گشتم چیز بدرد بخور پیدا نکردم تا مطالب این
چند صفحه را دیدم واقعا از صمیم قلب تشششششششششششششششکر میکنم لطفا دلسرد نشوید و ادامه دهید خیلی ها مثل من عادت به حاضری خوری کردیم حتی اگر از یک پست خوشمان بیاید تنبلی میکنیم حتی یک تشکر خشک خالی هم نمی کنیم باز هم تشکر میکنم

esi_52000
19-02-2012, 01:00
سلام خدمت همه دوستان گرامی.خوشحالم که عزیزان از این مطالب خوششون اومده .انشالله از امروز بقیه آموزشا رو شروع میکنیم.
اولین آموزش مربوط به تایمر rit در lpc1768 هستش که از پست بعد شروع میکنم.

esi_52000
19-02-2012, 14:32
سلام خدمت دوستان گرامی.
مطالب ممربوط به تایمر ایجاد وقفه داءم rit.

مقدمه:
در میکرو کنترلرهای lpc یک تایمر ایجاد وقفه متناوب وجود داره که شما میتونید با پیکر بندی درست و کامل اون تایمر به صورت متناوب و در زمانهای مورد نظرتون وقفه ایجاد کنید.مثلا میتونید طوری اون تایمر رو فعال کنید که هر 1 ثانیه وقفه داشته باشین . اسم این تایمر رو گذاشتن RIT.

برای استفاده از اون داریم:

#include"lpc17xx_rit.h"
این تابع جهت آماده سازی این تایمر هستش و تمام کارهای لازم شامل فعال سازی کلاک و تغذیه و بقیه کارا رو انجام میده.

(RIT_Init( LPC_RIT

این تابع دقیقا عکس تابع بالا عمل میکنه و این تایمر رو کلا از سیستم خارج میکنه.



RIT_DeInit( LPC_RIT


این تابع PRESCALE این تایمر رو بر حسب میلی ثانیه دریافت میکنه.(میلی ثانیه نه میکرو ثانیه )

مثلا اگه بخواهیم هر 1 ثانیه وقفه داشته باشیم باید بنویسیم.


RIT_TimerConfig( LPC_RIT , PRESCALER )

این تابع جهت START و STOP کردن این واحد هستش.اگه ENABLE بزارید تایمر شروع بکار میکنه و اگه DISABLE بزارین متوقف میشه.دوستان توجه داشته باشین که اگه از این تابع استفاده کنین و بزارین DISABLEتایمر موقتا از کار میفته ولی توی سیستم هست ولی وقتی از تابع RIT_DeInit(LPC_RIT استفاده کنین این تایمر کلا از سیستم خارج میشه ومثلا کلاک و تغذیه اونم قطع میشه.

RIT_Cmd( LPC_RIT , ENABLE / DISABLE )



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


RIT_GetIntStatus( LPC_RIT )

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

[RIT_TimerDebugCmd(LPC_RIT , ENABLE/DISABLE)[/PHP]RIT_ClearCmd(LPC_RIT


دوستان اگه مشکلی بود لطفا زود تر بگین .اگه مشکلی نیستم پس RTC رو شروع کنیم.

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

pumper
19-02-2012, 17:01
RIT_ClearCmd(LPC_RIT)این که اصلا توی فایل lpc17xx_rit.c هم تعریف نشده

RIT_TimerDebugCmd هم طبق تعریف گفته اگه enable باشه در زمان دیباگ اگه hardwre breakpoint پیش بیاد تایمر رو متوقف می کنه

esi_52000
22-02-2012, 00:17
RIT_ClearCmd(LPC_RIT)این که اصلا توی فایل lpc17xx_rit.c هم تعریف نشده

RIT_TimerDebugCmd هم طبق تعریف گفته اگه enable باشه در زمان دیباگ اگه hardwre breakpoint پیش بیاد تایمر رو متوقف می کنه

سلام داداشم.داداش شما از کجا فهمیدین که کار تابع چی هستش.منظورم اینه که به منبع خاصی دسترسی دارین که از اونجا متوجه شدین.اگه جواب مثبته ممنون میشم معرفی کنی عزیز .آخه واسه i2c , ssp ,spi دچار مشکل شدم

pumper
22-02-2012, 00:40
سلام اسی جون
برو و این فایل رو بگیر:
You can see links before reply
خود لایبرری و مثال هاش هست.
یه دونه فایل help هم داره که میتونید ازش اطلاعات کامل مربوط به همه هدر فایلها و توابع و متغیر ها رو در بیارید.

esi_52000
22-02-2012, 15:58
بابا دمت گرم گرم داداشی .شما که خیلی اووووستایی ببین داداش pumper میتونی قسمتای i2c , spi رو در بیاریی بقیه قسمتاش با من. نوکرتم زود جواب بده که گیرم حسابی

pumper
23-02-2012, 00:18
ok یه کاریش می کنم

hesam1
23-02-2012, 01:13
سلام
از همه دوستان برای این کار قشنگ تشکر می کنم (یا مولا علی)
یه سوال: کسی با LPC18xx آشنایی داره این خانواده مدل تکمیلی LPC17xx هست که چند تا مزیت داره مثل 1-داشتن باس خارجی 2-حافظه RAM تا 200KB و 3-حافظه فلش تا 1MB و 4-رابط LCD و از همه مهمتر فرکانس 150MHz :baad:و البته چند چیز دیگه که تا جایی که من فهمیدم کامل ترین مدل توی CORTEX-M3 هست که دیگه مدل های قوی تر توی رنج M4 هستن.
میخوام بدونم الان تو ایران پیدا میشه یا سفارش خارج نیازه و قیمتش چنده!

esi_52000
24-02-2012, 23:56
سلام به همه رفقا .
ببخشید چند روزی هست که دسترسی به اینترنت نداشتم واسه همین نتونستم مطالب رو ادامه بدم.انشالله از فردا RTC رو شروع میکنم.
(نگین اینم بی معرفت بود و نیمه کاره ول کرد و رفتا):mrgreen:

pumper
25-02-2012, 10:32
سلام اینم اطلاعات و نحوه برنامه نویسی ماژول spi که قولشو داده بودم .
البته من از اول اول گفتم تا رسیدم به cmsis
به بقیه دوستان هم توصیه می کنم اینطوری بگن تا یه جزوه کامل در بیاد.

hunybal
26-02-2012, 22:25
سلام جناب اسی.خیلی ممنون.من که خودم همینطور دارم با اموزش هاتون پیش میام.اگه timer رو شروع کنین خیلی ممنون میشم.یا علی

esi_52000
27-02-2012, 00:02
سلام جناب اسی.خیلی ممنون.من که خودم همینطور دارم با اموزش هاتون پیش میام.اگه timer رو شروع کنین خیلی ممنون میشم.یا علی

سلام داداشم .خواهش میکنم عزیز.
بخدا شرمنده م دوستان .چند روزه به اینترنت دسترسی درستی ندارم . وگرنه هم مطالب rtc رو اماده کردم و هم تایمر رو.چشم داداش انشالله هر چه زودتر مطالب تایمر رو میزارم .قول میدم بیشتر از 2 روز دیگه نشه:wink:

ma-bah
27-02-2012, 00:35
سلام داداشم .خواهش میکنم عزیز.
بخدا شرمنده م دوستان .چند روزه به اینترنت دسترسی درستی ندارم . وگرنه هم مطالب rtc رو اماده کردم و هم تایمر رو.چشم داداش انشالله هر چه زودتر مطالب تایمر رو میزارم .قول میدم بیشتر از 2 روز دیگه نشه:wink:

اینم یه اسپم !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!



این اسپم رو دادم که بدونی افرادی مثل من مطالب شما رو دنبال می کنند و بدونی اکثرشون (اگر نگیم همشون) دعاگوی شما هستند و می گند

خیر ببینی جوون :125::125:

lord67
27-02-2012, 01:09
مطالب 5 صفحه اخیر در مورد توضیحات دستورات cmsis را به صورت pdf برای دوستان آماده کردم.

esi_52000
27-02-2012, 12:42
اینم یه اسپم !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!



این اسپم رو دادم که بدونی افرادی مثل من مطالب شما رو دنبال می کنند و بدونی اکثرشون (اگر نگیم همشون) دعاگوی شما هستند و می گند

خیر ببینی جوون :125::125:

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

esi_52000
27-02-2012, 13:09
تایمر کانترهای lpc1768 در cmsis
توضیحات اولیه:
در این خانواده از میکروکنترلرها تعداد 4 تایمر کانتر 32 بیتی وجود داره که بر حسب تنظیمات میتوانند در 2 مد تایمر یا کانتر کار کنند.همچنین هر تایمر/کانتر دارای 4 رجیستر مقایسه ای ایست که در صورت برابری مقدار تایمر کانتر با محتویات هر یک از این رجیسترها
بسته به تنظیمات شما امکان ایجاد رخدادهای زیر وجود دارد
1-وقوع وقفه تایمر/کانتر
2-ریست شدن تایمر/ کانتر
3-متوقف شدن تایمر/ کانتر
نام این رجیسترها,رجیسترهای match میباشد.
همچنین هر یک از این رجیسترها دارای یک پین خروجی هستند که بسته به تنظیمات در هنگام برابری محتوای رجیستر با تایمر /کانتر وضعیت این پین میتواند
1-یک شود
2-صفر شود
3-toggled شود
علاوه بر پینهای match که به رجیسترهای match تایمر /کانتر متصل هستند هر تایمر کانتر دارای 2 پینن دیگر به نام های CAPx.0 و CAPx.1 میباشند که بسته به تنظیمات شما میتوانند به عنوان ورودی کلاک کانتر یا ورودی CAPTURE استفاده شوند.
با توجه به اینکه هر یک از این پایه ها میتوانند به عنوان ورودی CAPTURE باشند لذا برای هر تایمر /کانتر 2 رجیستر CAPTURE در نظر گرفته شده که در صورت بروز کلاک CCAPTURE بر روی هر پایه مقدار تایمر کانتر در رجیستر CAPTURE مربوط به خودش قرار میگیرد.
اگر شما تایمر را برای کپچر تنظیم نمایید در صورت آمدن کلاک کپچر میتوانید تنظیم کنید که
1-عمل CAPTURE بر روی لبه ی بالا رونده اتفاق افتد
2-عمل CAPTURE بر روی لبه پایین رونده اتفاق افتد
3- 1-عمل CAPTURE بر روی هر دو لبه باشد
4 -با آمدن کلاک کپچر وقفه فعال شود یا خیر
انشالله از پست بعد برنامه نویسی رو شروع میکنم

alishekarriz
27-02-2012, 15:30
آقا خدا قوت ..

ميدونم كه اومدن ديدن پيغامهاي استقبال چقدر دلگرمي هست .. و البته ميدونم كه شما يه فيدبك داخلي داري كه روحيه ميده به خودت و اون پشتكارت هست

من هم يه زماني ميخواستم nxp1700 رو شروع كنم اما خب به دليل كار خيلي خيلي خاصي ( كه شايد اشتباه از طرز فكر من باشه) و البته مشغول شدن به كار ديگه نشد

الان هم كه با st شروع كردم ميدونم كه nxp بسيار قدرت مند هست و سايتش هم نابع خيلي زيادي داره

اميدوارم از علمت لذت ببري چه معنوي چه مادي ..

راستي پيشنهاد ميكنم كه به جاي يادگيري سريعتر مطالب روي انجام مثالهاي بيشتر حركت كنيم .. با اينكار هم افراد بيشتري درگير ميشن هم مطلب كاربرديتر ميشه و هم زمان بيشتري در ذهن ميمونه

پيشرفت براي افرادي هست كه در يك رشته پايداري ميكنند و شناخته ميشوند .. افرادي كه شاخه به شاخه ميپرند فقط زمان را پشت سر ميگذارند ... بسياري از پروژه هاي ما با حداقل امكانات قابل انجام هست..

من تهرانم ..اگر چيزي خواستي بگو برات ميگيرم ميفرستم .. خدا قوت

esi_52000
27-02-2012, 17:12
آقا خدا قوت ..

ميدونم كه اومدن ديدن پيغامهاي استقبال چقدر دلگرمي هست .. و البته ميدونم كه شما يه فيدبك داخلي داري كه روحيه ميده به خودت و اون پشتكارت هست

من هم يه زماني ميخواستم nxp1700 رو شروع كنم اما خب به دليل كار خيلي خيلي خاصي ( كه شايد اشتباه از طرز فكر من باشه) و البته مشغول شدن به كار ديگه نشد

الان هم كه با st شروع كردم ميدونم كه nxp بسيار قدرت مند هست و سايتش هم نابع خيلي زيادي داره

اميدوارم از علمت لذت ببري چه معنوي چه مادي ..

راستي پيشنهاد ميكنم كه به جاي يادگيري سريعتر مطالب روي انجام مثالهاي بيشتر حركت كنيم .. با اينكار هم افراد بيشتري درگير ميشن هم مطلب كاربرديتر ميشه و هم زمان بيشتري در ذهن ميمونه

پيشرفت براي افرادي هست كه در يك رشته پايداري ميكنند و شناخته ميشوند .. افرادي كه شاخه به شاخه ميپرند فقط زمان را پشت سر ميگذارند ... بسياري از پروژه هاي ما با حداقل امكانات قابل انجام هست..

من تهرانم ..اگر چيزي خواستي بگو برات ميگيرم ميفرستم .. خدا قوت

سلام جناب مهندس.
آقا ما خدمت بزرگانی چون شما ارادت خاصی داریما.
واسه راه اندازی st خیلی زحمت کشیدین داداش.خدا قوت عزیز.
با نظرتون کاملا موافقم مهندس جان که به جای گفتن سریع مطالب بایست تمرکز روی گفتن مثالها و نمونه برنامه باشه.اما مهندس جان مشکل اینجاست که من برد ندارم و نمیتونم برنامه هامو تست کنم(راستش اصلا تا حالا lpc1768 یا هر lpc دیگه ای رو ندیدم).
واسه همین نمیخوام با گذاشتن برنامه هایی که تست نشده شرمنده دوستان باشم.کاش دوستانی که تونستن برد خداتومنی رو بخرن همکاری کنن و مثالای تست شده رو بزارن .البته جدیدا همه به سمت st دارن میرن.جالب اینجاست که این دو نوع میکرو هیچی از هم کم ندارن .ولی دوستان چرا همه میخوان st کار بشن نمیدونم.یا علی داداشم

hunybal
27-02-2012, 21:19
سلام خیلی ممنون که شروع کردید.
دوستان من میخواستم rit رو راه بندازم اما با ارور های زیر مواجه شدم:(


Build target 'Target 1'
assembling startup_LPC17xx.s...
compiling ali.c...
C:\Keil\ARM\INC\NXP\LPC17xx\lpc17xx_rit.c(180): warning: #188-D: enumerated type mixed with another type
linking...
1.axf: Error: L6218E: Undefined symbol CLKPWR_ConfigPPWR (referred from ali.o).
1.axf: Error: L6218E: Undefined symbol CLKPWR_GetPCLK (referred from ali.o).
1.axf: Error: L6218E: Undefined symbol check_failed (referred from ali.o).
Target not created

فایل پروژه هم پوست هست.ممنون میشم کمک کنید

hunybal
27-02-2012, 23:01
سلام برنامه بدون خطا کامپایل شد .مشکل یک هیدر بود که باید به پروژه اضافه میشد:o

اینم یک برنامه برای rit
برنامه تغییر یافته:

#include "LPC17xx.H"
#include "SYSTEM_LPC17xx.C"
#include"lpc17xx_rit.c"
#include"lpc17xx_rit.h"
#include"lpc17xx_clkpwr.c"

#define LCD_PORT_0
#define LCD_RS 0
#define LCD_E 1
#define LCD_DB4 2
#define LCD_DB5 3
#define LCD_DB6 4
#define LCD_DB7 5
#include "lcd.h"
int i;
void RIT_IRQHandler(void)
{ i++;
lcd_gotoxy(2,1);
lcd_puts(i);
RIT_GetIntStatus(LPC_RIT);

}

int main()
{
lcd_init();
lcd_clear();
cursor_off();
lcd_gotoxy(1,1);
lcd_putsf("rit");
RIT_Init( LPC_RIT );
RIT_TimerConfig(LPC_RIT,100) ;
RIT_Cmd(LPC_RIT,ENABLE);
NVIC_EnableIRQ(RIT_IRQn);

while(1);

}

esi_52000
28-02-2012, 00:51
داداش hunybal خوشحالم که زود مشکلت حل شد.شما فیلهای درایور میکرو رو کجا اضافه کزدی.راحت بگم
میتونی نحوه ی نوشتن برنامه رو توضیح بدی.از صفر بگی ممنون میشم داداش.
یعنی از اونجایی که یه file میسازی و کتابخونه ها رو بهش منتقل میکنی و نحوه ی اضافه کردن به برنامه و.....
بخدا خودم نمیرسم و بعضی دوستان مثل همون error که واست اتفاق افتاده واسشون پیش اومده

esi_52000
28-02-2012, 17:04
خوب با اجاز هبریم سراغ برنامه و توضیح دستورات
قبل از هرچیزی بگم که درتایمر کانتر برای هر یک از قسمتهای

تایمر
کانتر
رجیسترهای MATCH
CAPTURE

بایستی متغیری متناسب با اون تعریف بشه که همگی از نوع STRUCT هستند(همون ساختار در زبان C++
در این قسمت تک تک این متغیرها رو توضیح میدم

//-------------------------------------------------------------------------------------------//

نحوه ی پیکر بندی تایمر کانتر در مد تایمر

1-ابتدا باید متغیری از نوع تایمر تعریف بشه

2-فیلدهای این متغیر مقدار دهی بشن.

-این نوع متغیر دارای 2 فیلد مجزا هستش که یکی منبع کلاک تایمر رو مشخص میکنه و دیگری prescaler تایمر رو (یعنی به ازای هر چند کلاک یکی بشماره)

پس اول یه متغیر تعریف میکنیم:


TIM_TIMERCFG_Type timercfg ;


متغییری که ایجاد کردین 2 تا فیلد داره.

1-PrescalerOption که منبع کلاک سیستم رو مشخص میکنه

2-prescalerValue که مقدار prescaler رو مشخص میکنه

حالا فیلد اول رو مقدار دهی میکنیم.

Timercfg .PrescalerOption = TIM_PRESCALE_TICKVal /TIM_PRESCAL_USVal

اگه کزینه اول رو قرار بدین (TIM_PRESCALE_TICKVal )منبع کلاک تایمر از کلاک سیستم گرفته میشه که اصلا جایی ندیدم استفاده بشه.

اگه کزینه دوم رو قرار بدین (TIM_PRESCAL_USVal) این گزینه باعث میشه کلاک سیستم به صورت مضربی از میکروثانیه توسط شما تعیین بشه که در ادامه توضیح میدم.

حالا فیلد دوم متغیر تایمر


Timercfg .PrescalerValue = VALUE


در این فیلد شما PRESCALE تایمر رو مشخص میکنید.اگه در فیلد قبلی از TIM_PRESCAL_USVaL

استفاده کرد ه باشین اونوقت PRESCAL برحسب میکرو ثانیه میشه.واسه اینکه متوجه بشین مثال میزنم/


-------------------------------------------------------------------------------------------------------------


مثال : میخواهیم تایمر 1 رو بگونه ای پیکربندی کنیم که هر 1 ثانیه یکی به آن اضافه شود.


TIM_TIMERCFG_Type timercfg ;



timercfg .PrescalerOption = TIM_PRESCAL_USVal ;



Timercfg .PrescalerValue = 1000 ;



نحوه ی پیکربندی رجیستر match یک تایمر

1-ابتدا باید متغیری از نوع match تعریف بشه

2-فیلدهای این متغیر مقدار دهی بشن.


TIM_MATCHCFG_Type matchcfg ;


این متغیر 5 فیلد داره که داریم.


matchcfg.Channel = 0.....3



matchcfg.IntOnMatch = ENABLE / DISABLE



matchcfg.ResetOnMatch = ENABLE / DISABLE



matchcfg.StopOnMatch = ENABLE / DISABLE



matchcfg.MatchValue= value


فیلد اول مشخص میکنه که میخواین کدوم یک از رجیسترهای 4 گانه match رو پیکربندی کنین.

فیلد دوم میگه که وقتی مقدار تایمر کانتر با مقدار رجیست match برابر شد وقفه اتفاق بیفته یا نه

فیلد سوم میگه که وقتی مقدار تایمر کانتر با مقدار رجیست match برابر شد تایمر ریست بشه یا نه

فیلد دوم میگه که وقتی مقدار تایمر کانتر با مقدار رجیست match برابر شد تایمر از کار بیفته یا نه

مقدار عددی که میخوایین توی این رجیستر قرار بگیره رو مشخص میکنه

مثال:رجیستر match3 تایمر رو بگونه ای پیکر بندی کنین که در صورت برابری تایمر با عدد 3000000 تایمر ریست بشه اما از کار نیفته و وقفه هم اتفاق بیفته


matchcfg.Channel = 3



matchcfg.IntOnMatch = ENABLE



matchcfg.ResetOnMatch = ENABLE



matchcfg.StopOnMatch = DISABLE



matchcfg.MatchValue= 3000000



نحوی پیکربندی واحد capture در تایمر کانتر

1 -ابتدا باید متغیری از نوع match تعریف بشه

2-فیلدهای این متغیر مقدار دهی بشن.


TIM_CAPTURECFG_Type capturecfg ;


این متغیر 4 فیلد داره که داریم.


Capturecfg.CaptureChannel = 0 / 1 ;



Capturecfg.RisingEadge = ENABLE / DISABLE



Capturecfg.FallingEdge = ENABLE /DISABLE



Capturecfg.IntOnCaption= ENABLE /DISABLE


فیلد اول نشون میده که شما میخوایین از CAPn.0 به عنوان ورودی CAPTIUR استفاده کنین یا CAPn.1

فیلد 2 نشون میده که عمل کپچر روی لبه بالارونده پالس اعمالی به پین کپچر اتفاق بیفته یا خیر

فیلد 3 نشون میده که عمل کپچر روی لبه پایین رونده پالس اعمالی به پین کپچر اتفاق بیفته یا خیر

فیلد 3 نشون میده که با وقوع پالس کپچر وقفه فعال بشه یا نه

مثال: کپچر رو به گونه پیکر بندی کنین که با اعمال پالس به پایه CAPn.1 در لبه بالارونده کپچر فعال و وقفه نیز اتفاق بیفته.


Capturecfg.CaptureChannel = 1 ;



Capturecfg.RisingEadge = ENABLE



Capturecfg.FallingEdge = DISABLE



Capturecfg.IntOnCaption= ENABLE



-----------------------------------------------------------------------------------------------------------------


نحوی پیکربندی واحد تایمر کانتر در مد کانتر

1 -ابتدا باید متغیری از نوع کانتر تعریف بشه

2-فیلدهای این متغیر مقدار دهی بشن.


TIM_COUNTER CFG_Type countercfg ;


این متغیر 2 فیلد داره که داریم.


countercfg.CounterOption =



TIM_COUNTER_INCAP0 / TIM_COUNTER_INCAP1 ;



countercfg.CountInputSelect =


فیلد اول نشون میده که وروی کلاک کانتر از پین CAP0 باشه یا CAP1

فیلد دوم رو نمیدونم چیکار میکنه شرمنده کسی فهمید یه ندا بده

مثال: کپچر رو به گونه پیکر بندی کنین که با اعمال پالس به پایه CAPn.1 در لبه بالارونده کپچر فعال و وقفه نیز اتفاق بیفته.


Capturecfg.CaptureChannel = 1 ;



Capturecfg.RisingEadge = ENABLE



Capturecfg.FallingEdge = DISABLE



Capturecfg.IntOnCaption= ENABLE



این قسمت همچنان ادامه دارد دوستان
--------------------------------------------------------------------------------
سلام دوستان توی این قسمت یه چیزایی از قلم افتاده که الان بهش اضافه کردم.

1-بعد معرفی یک متغیر از نوع match_type و دادن مقادیر به فیلد های مربوطه با تابع زیر config دهایی انجام میشه

(matchcfg&, شماره تایمر مورد نظر)TIM_ConfigMatch


2-همین مورد رو درباره capyureداریم که

(capturecfg&, شماره تایمر مورد نظر)TIM_ConfigCapture

hunybal
28-02-2012, 18:59
سلام دوستان اول درایور های زیر رو دانلود کنید

NXP Semiconductors - ICs [Home] (You can see links before reply)

توی پوشه driver دو تا پوشه دیگه هست یکی include و یکی source .بهتون پیشنهاد میکنم که تمام محتویات این دو پورو (فایل های h. و c.) رو توی
C:\Keil\ARM\INC\NXP\LPC17xx
کپی کنید که نیازتون میشه.
حالا این برنامرو کپی کنید

#include "LPC17xx.H"
#include "SYSTEM_LPC17xx.C"
#include"lpc17xx_rit.h"


#define LCD_PORT_0
#define LCD_RS 0
#define LCD_E 1
#define LCD_DB4 2
#define LCD_DB5 3
#define LCD_DB6 4
#define LCD_DB7 5
#include "lcd.h"
int i;
void RIT_IRQHandler(void)
{ i++;
lcd_gotoxy(2,1);
lcd_puts(i);
RIT_GetIntStatus(LPC_RIT);

}

int main()
{
lcd_init();
lcd_clear();
cursor_off();
lcd_gotoxy(1,1);
lcd_putsf("rit");
RIT_Init( LPC_RIT );
RIT_TimerConfig(LPC_RIT,100) ;
RIT_Cmd(LPC_RIT,ENABLE);
NVIC_EnableIRQ(RIT_IRQn);

while(1);

}

میبینید که کلی ارور داد چرا؟
چون درواقع فایل های c. و h. مکمل هم هستند و اگر برای مثال h. فراخوانی بشه اما c. وجود نداشته باشه ارور میده مثلا با نوشتن این خط #include"lpc17xx_rit.h" هیدرش به پروژه اضافه میشه اما چون فایل c. نیست ارور میگیره این قضیه برای تمامی هیدر ها صادق هست.بخاطر همین من پیشنهاد میکن برین توی تمامی هیدر ها و c. همون هیدرو اینکلود کنید برای مثال من میرم توی هیدر #include"lpc17xx_rit.h" و یک خط برنامه دیگه به صورت#include"lpc17xx_rit.c"
اولش مینویسم .حتما برای تمامی کتابخانه ها اینکار انجام بدین

حالا باز پروژرو کامپایل کنید و میبینید که دیگه ارور نمیده

esi_52000
29-02-2012, 14:04
سلام به همه دوستان گرامی .
دوستان یه پیشنهاد دارم اونم اینکه ب هجای اینکه برای برنامه نویسی با cmsis بخواهین از keil استفاده کنین
نرم افزار CoIDE زو از سایت COOCOX.ORG دانلود کنین و با اون نرم افزار کار کنین .استفاده از اون بسیار ساده و خیلی کاربدی تر از KEIL هستش(البته برای تراشه های مبتنی بر CORTEX M3/M0)

Shapour_Ardebil
01-03-2012, 12:16
با سلام

ضمن تشکر برادر گرامی در صورت امکان لطفا منیع انگلیسی ترجمه های خود را نیز معرفی نمایید

esi_52000
01-03-2012, 16:53
با سلام

ضمن تشکر برادر گرامی در صورت امکان لطفا منیع انگلیسی ترجمه های خود را نیز معرفی نمایید

داداشم من هیچ منبع انگلیسی برای ترجمه ندارم.این مطالب هم دارم میگم از فایلهای .c و .h که به عنوان کتابخونه های cmsis دانلئد کردین به همراه ترجمه user manual بدست اومده.یا علی

esi_52000
02-03-2012, 20:52
خوب دوستان من به وعده خودم عمل کردم .
توی فایل زیر میتونید تمام دستورات تایمر کانتر رو با توضیحات ببینید اگه مشکلی بود من در خدمت دوستان هستم

یا مولا علی گفتن یادتون نره

armstk
02-03-2012, 20:56
سلام
آقا راستش من نمیونم این cmsis چیه دقیقا؟!؟ یکی میشه برام توضیح بده؟؟ ممنون میشم

Doloop
02-03-2012, 21:44
سلام مهندس منم نمیدونم این cmsis دقیقا چیه میشه توضیح بدین؟؟؟
برای هر میکروئی هدر جدا داره و اگه بخواهیم پیدا میشه؟؟
کجا شم میشه بگید ؟؟؟
لطفا:wink:

esi_52000
02-03-2012, 23:54
مهندس حسینیا و مهندس do loop ما خدمتون خیلی ارادت داریم دوستان .
ببینید عزیزان .شما وقتی میخواین با arm کار کنین مجبورین چندین رجیستر رو دستکاری کنین تا یک قسمت از میکرو مثلا تایمر رو بکار بندازین.به عنوان مثال بایست ابتدا power رو برای تایمر فعال کنین بعد کلاک اون رو فعال کنین و ...... اما در cmsis شما اصلا نیازی به این کار ندارین وتنها با یک دستور TIM_INTI() همه ی این کارا انجام میشه .
خوب ممکنه بگین این دقیقا مثل بسکام و کدویژن و بقیه کامپایلر هاست و باعث میشه ما به یکسری کتابخانه محدود بشیم.اما اینطور نیست دوستان .در CMSIS شما میتونید تک تک کارهایی که با رجیستر انجام میدادین رو انجام بدین و به هیچ وجه از قدرت برنامه نویسی شما کم نمیکنه اما حتما اون رو ساده تر میکنه. از طرف دیگه با توجه به اینکه هسته ARM در تمامی شرکتها یکسان هستش, CMSIS به شما این امکان رو میده که با نوشتن برنامه برای یه میکرو ی NXP ,همون برنامه رو برای میکرو ی ساخت ST استفاده کنین البته با کمترین تغییر.
به عبارت دیگه برای NXP برنامه بنویس برای ST LM یا هر شرکت دیگه استفاده کن.واقعا دوستان بهتون توصیه میکنم اون رو بخونین قول میدم عاشقش بشین

alishekarriz
03-03-2012, 00:02
خب اينكه چيزي نيست .. من هم نميدونم CMSIS چيه :wink:

Cortex™ Microcontroller Software Interface Standard

CMSIS - Cortex Microcontroller Software Interface Standard - ARM (You can see links before reply)

با اين روش احتمالا وقتي يك برنامه اي براي يك ميكرو كرتكس 3 نوشته ميشه .. در تمام ميكروهاي شركتهاي مختلف كه از هسته كرتكس 3 استفاده ميكنند بايد اجرا شود.

esi_52000
03-03-2012, 00:12
خب اينكه چيزي نيست .. من هم نميدونم cmsis چيه :wink:

cortex™ microcontroller software interface standard

cmsis - cortex microcontroller software interface standard - arm (You can see links before reply)

با اين روش احتمالا وقتي يك برنامه اي براي يك ميكرو كرتكس 3 نوشته ميشه .. در تمام ميكروهاي شركتهاي مختلف كه از هسته كرتكس 3 استفاده ميكنند بايد اجرا شود.

مهندس جان کاملا درست گفتین .برنامه نوشته شده در تمام سری های cortexمشابه اجرا میشه

alishekarriz
03-03-2012, 00:22
مهندس داريم هم زمان پست ميزنيم قاطي شده .. سيستم ديگه بايد آنلاين بشه مثل فيس بوك
=================================================
اين همون چيزي بود كه به خاطرش به طرف آرم اومدم :wink: يك جا بنويس هزار جا كامپايل كن

استاد لطفا بيا با مثال پيش بريم .. (در ضمن فكر كنم پيامهاي خصوصي رو هم نميخوني !!)


CMSIS Overview

Home » Use on-chip Peripherals » CMSIS Overview

Cortex Microcontroller Software Interface Standard (CMSIS) is developed by ARM in close co-operation with various silicon and software vendors and provides a common approach to interface to peripherals, real-time operating systems, and middleware components. CMSIS applies to Cortex-M processor-based devices.

CMSIS defines the basic requirements to achieve software re-usability and portability. MCU vendors may include additional functions for each peripheral to enrich the features of their software solution.

The aims of CMSIS are to:
Improve software portability and re-usability.
Enable software solution suppliers to develop products that can work seamlessly with device libraries from various silicon vendors.
Allow developers to write software quicker through an easy to use and standardized software interface.
Allow embedded software to be used on multiple compiler products.
Avoid device driver compatibility issues when using software solutions from multiple sources.

The area of standardization includes:
Hardware Abstraction Layer (HAL) for Cortex-M processor registers with standardized definitions for the SysTick, NVIC, System Control Block registers, MPU registers, and core access functions.
Standardized system exception names to allow RTOS and middleware components to utilize system exceptions without having compatibility issues.
Standardized methods to organize header files that makes it easy to learn new Cortex-M microcontroller products and improve software portability.
Common methods for system initialization to be used by each MCU vendor. For example, the standardized SystemInit() function, provided in each device driver library, is essential for configuring the clock.
Standardized intrinsic functions that are normally used to produce instructions that cannot be generated by IEC/ISO C. By having standardized intrinsic functions, software re-usability and portability is greatly improved.
Standardized ways to determine the system clock frequency through a software variable, SystemFrequency, defined in the device driver. Allows RTOS to setup the SysTick unit based on the system clock frequency.

The following sections provide an introduction to the
CMSIS Organisation, which gives an overview of the CMSIS implementation layers (Core Peripheral Access Layer, Device Peripheral Access Layer, Access Functions for Peripherals Layer).
CMSIS Usage, which describes the CMSIS implementation standards and access to the provided features and functions


CMSIS Overview

Home » Use on-chip Peripherals » CMSIS Overview

Cortex Microcontroller Software Interface Standard (CMSIS) is developed by ARM in close co-operation with various silicon and software vendors and provides a common approach to interface to peripherals, real-time operating systems, and middleware components. CMSIS applies to Cortex-M processor-based devices.

CMSIS defines the basic requirements to achieve software re-usability and portability. MCU vendors may include additional functions for each peripheral to enrich the features of their software solution.

The aims of CMSIS are to:
Improve software portability and re-usability.
Enable software solution suppliers to develop products that can work seamlessly with device libraries from various silicon vendors.
Allow developers to write software quicker through an easy to use and standardized software interface.
Allow embedded software to be used on multiple compiler products.
Avoid device driver compatibility issues when using software solutions from multiple sources.

The area of standardization includes:
Hardware Abstraction Layer (HAL) for Cortex-M processor registers with standardized definitions for the SysTick, NVIC, System Control Block registers, MPU registers, and core access functions.
Standardized system exception names to allow RTOS and middleware components to utilize system exceptions without having compatibility issues.
Standardized methods to organize header files that makes it easy to learn new Cortex-M microcontroller products and improve software portability.
Common methods for system initialization to be used by each MCU vendor. For example, the standardized SystemInit() function, provided in each device driver library, is essential for configuring the clock.
Standardized intrinsic functions that are normally used to produce instructions that cannot be generated by IEC/ISO C. By having standardized intrinsic functions, software re-usability and portability is greatly improved.
Standardized ways to determine the system clock frequency through a software variable, SystemFrequency, defined in the device driver. Allows RTOS to setup the SysTick unit based on the system clock frequency.

The following sections provide an introduction to the
CMSIS Organisation, which gives an overview of the CMSIS implementation layers (Core Peripheral Access Layer, Device Peripheral Access Layer, Access Functions for Peripherals Layer).
CMSIS Usage, which describes the CMSIS implementation standards and access to the provided features and functions.


I would like to share with you and get your usual valuable feedbacks/ comments regarding The Migration of our Firmware Library to a new version 3.0.x Compatible with CMSIS [Cortex Microcontroller Software Interface Standard]

The electronics industry is based on standards — standards that enable the development of ever more advanced technology that is adopted and used by system designers around the world.

The Cortex Microcontroller Software Interface Standard (CMSIS) provides a single standard across all Cortex-Mx processor series vendors. It enables code re-use and code sharing across software projects and reduces time-to-market for new embedded applications.

We have provided the 1st release of the CMSIS Peripheral Access Layer for STM32F10x device family :

Object moved (You can see links before reply)

The package contains:

* All the peripheral register's definitions, bits definitions and memory mapping for STM32F10x High Density, Medium Density and Low Density devices.
* Device Peripheral Access Layer Source/Header File providing the CMSIS standard functions for system initialization (Clocks and External Memory).
* Startup Files for STM32F10x High Density, Medium Density and Low Density devices.

The complete version will come soon and will be widely available to public on our web sites too.

For more details about CMSIS refer to OnARM.com (You can see links before reply)

I would be pleased to listen to your comments or points so we can take into account as we did in the past : Migration from v1.x to v2.0.x

Many thanks in advance !




.

esi_52000
03-03-2012, 00:27
مهندس جان بخدا شرمنده ام .مدتها بود پیام خصوصیمو چک نکرده بودم

esi_52000
03-03-2012, 00:44
مهندس جان دیگه چوب کاری نداشتیما:0013:
مهندس جان من از خدامه با مثال بگم .اما یه مشکل کوچیک دارم اونم اینه که برد ندارم.
البته یه هدر برد از eca گرفتم اما هنوز نرسیده .داداش قول میدم به محض رسیدنش شروع کنم به گذاشتن مثال.اینم بگم که اگه برد رو شما تهیه کردین من میتونم مثال هایی که با simulator تست شده رو بزارم و شما با برد تست کنین و بعد نتیجه رو بهم گزارش بدیم .موافقین داداش؟
مهندس شکرریز منتظر جوابتون هستم

armstk
03-03-2012, 00:54
اسی جون :) بابا تو دیگه کی هستی؟!؟
واقعا عجب چیزه محشریه این cmsis !!!
خیلی حال کردم باهاش
خدا حتما یه چند تا حوری بهت بده - هم این دنیا و هم اون دنیا :)
واقعا خیلی راحت میشه از st رویه nxp سوییچ کرد , براحتی توسط همین cmsis

فقط من نتونستم هنوز ببینم چه دستوراتی داره این cmsis , یا چه توابعی داری؟!

esi_52000
03-03-2012, 01:06
اسی جون :) بابا تو دیگه کی هستی؟!؟
واقعا عجب چیزه محشریه این cmsis !!!
خیلی حال کردم باهاش
خدا حتما یه چند تا حوری بهت بده - هم این دنیا و هم اون دنیا :)
واقعا خیلی راحت میشه از st رویه nxp سوییچ کرد , براحتی توسط همین cmsis

فقط من نتونستم هنوز ببینم چه دستوراتی داره این cmsis , یا چه توابعی داری؟!

مهندس جان به همین راحتیه.البته اینم بگم که یه تغییرات جزئی داره موقع انتقال.اما در کل به راحتی امکان انتقال وجود داره.
در مورد دستورات باید بگم که تمام مطالبی که تا الان گذاشتم دار هاز دستورات CMSIS استفاده میکنه.اما اگه بخواهی خودت همشو یه جا دانلود کنی و باهاش کار کنی میتونی از سایت
You can see links before reply برای هر میکرو ی بخواهی CMSIS اون رو دانلود کنی.البته تا اونجا که میدونم مهندس sigma_mx داره روی cmsis برای st کار میکنه.البته مدتیه توی سایت ندیدمش

alishekarriz
03-03-2012, 01:19
استاد من ميخوام اين دستورات رو براي Stm32f103 بنويسم .. ايا بايد فايلي دانلود كنم ؟؟ براي keil

اين فايل چيه؟

OnARM.com (You can see links before reply)


استاااد

من حاضرم همه برنامه ها رو تست كنم .. فقط بردي كه دارم همون برد Stm32f103هست كه در تازه ساختيم با بچه ها .. ممنون ميشم راهنمايي كنيد

sigma-mx
03-03-2012, 01:24
سلام اسی جان . خدا قوت دادا ..
میبینم گرد و خاک کردی !!!
والا هم سرم شلوغه هم منتظر بردم هستم ! حتما با نظر من موافقی : برد که نداشته باشی نمی تونی به بقیه اطمینان بدی برنامه صحیح کار می کنه یا نه !!
دستورات CMSIS واقعا محشره . اینو هر کی باهاش کار کنه متوجه میشه . اگه کسی گله کنه که کتابخانه آماده بدرد نمی خوره و سرعتش پایین تره ، باید بگم که فقط یکی از سورس های درایور رو باز کنه و داخلشو ببینه !
این دستورات همون دستوراتی هست که اگه هر کسی بخاد استفاده کنه از اون قسمت باید از همین روش بره !
شبیه بودن دستورات مربوط به میکرو های مختلف از نقاط دیگر قوت این کتابخانه هست .
شرکت های تولید کننده میکروکنترلر برای طراحی های جدید و صنعتی استفاده از سری کرتکس رو پیشنهاد می کنند . و خوشبختانه برای میکرو های nxp و st بیشتر از همه تو نت مثال و پروژه وجود داره . من که مدتیه فقط دارم تو سایتهای چینی و تایلندی دنبال پروژه ها شون می گردم . اینها پدر stm32 رو در آوردن واقعا !!!
به امید رشد و ارتقای علمی هر چه بیشتر کشور

esi_52000
03-03-2012, 01:26
استاد خودتی اولا.
ثانیا مهندس جان من قبلا هم گفتم , شما چه اصراری دارین با keil کار کنین که اصلا برای کار با cortex m0/3 بهینه نشده .مهندس جان شما نرم افزار CoIDE رو دانلود کن. حجمش کمه و راحت دانلود میشه .این نرم افزار طراحی شه برای کار با cortex و استفاده از اون بسیار راحت و به شدت کاربردیه.این کار رو بکن تا به لذت برنامه نویسی برای arm cotrtex پی ببری.منم اگه کمک خواستین درخدمتتون هستم داداش.استفادش خیلی راحت.قول میدم دیگه به keil نگاه نکنی

sigma-mx
03-03-2012, 01:31
مهندس شکرریز من قبلا هم لینک دادم . برای دانلود کتابخانه های CMSIS برای سری stm32f10x میتونی عبارت STM32F10x Standard Peripherals Library 3.5 v رو سرچ کنی یا از لینک زیر دانلود کنی :

You can see links before reply

esi_52000
03-03-2012, 01:36
sigma_mx دادا حالت چطوره عزیز.کجایی عزیز .دلتنگت بودیم داداش.

alishekarriz
03-03-2012, 01:37
مهندس .. مدينه كردي و كردي كبابم

البته من شناخت زيادي از keil ندارم ولي وقتي avrstudio رو ميبينم به كيل هم نامه زدم كه چرا اين برنامت يوزر فروند نيست و كد رو هينت نميده يعني تكميل نميكنه ..

حالا اين برنامه رو دانلود كنم ببينم چي كار ميكنه ..

شما با Arm DS-5 كار كردي .. از eclips استفاده ميكنه البته براي محيط نوشتن خوبه اما براي اجرا من نتونستم يكم سخت مياد ولي حسنش اينه كه توي لينوكس هم كار ميكنه

CrossStudio for ARM 2.1 چي .. اين هم توي سيستم عاملهاي مختلف كار ميكنه ولي خب پوليه

مهندس سعيد . .. لينك ميدي خب انگار به بيسواد كليد كتابخونه بدي lov: خب اول سواد اموزي بعد كتابخوني .. .. اينم شد تشكر .. اقا خيلي ممنون .. لطفا بيشتر توضيح بديد گذاشتم دانلود ..

ميشه يه پروژه قدم به قدم با همه نرم افزارها مثل keil - IAR و هر چي شما ميگي پيش بريم؟! :hi:


استااد مگه شاخ و دم داره .. كسي كه ميتونه ياد بگيره و ياد بده :wink:

esi_52000
03-03-2012, 01:42
eclips یعنی چی مهندس , خوردنیه .خدایی بگو چیه این .همه میکن ولی هیشکی توضیح نمیده.
ولی داداش شما این نرم افزار رو دانلود کن قول میدم دیگه به هیچ برنامه ای نگاه نکنی.قول

sigma-mx
03-03-2012, 01:45
والا خود من برای این گفته که میگن keil از همه بیشتر کد رو بهینه می کنه دارم باهاش کار می کنم ! ولی خب هیچ امکانات رفاهی نداره و کار باهاش خیلی دشواره !

esi_52000
03-03-2012, 01:48
والا خود من برای این گفته که میگن keil از همه بیشتر کد رو بهینه می کنه دارم باهاش کار می کنم ! ولی خب هیچ امکانات رفاهی نداره و کار باهاش خیلی دشواره !

ببینید دوستان نرم افزار CoIDE از هر لحاظ برای کار با cmsis عالیه .تنها مشکلش نداشتن simulator هستش.شما یه نرم افزار simulator خوب سراغ ندارین که بشه دانلودش کرد

alishekarriz
03-03-2012, 01:50
مهندس گول زديا .. :wink:

اولي يك مگا بايت بود حالا داره ميگه 100 مگ .. .. خيلي خوبه اشكال نداره

مهندس Eclips (You can see links before reply) همونطور كه سرچ كردي يه محيط برنامه نويسي اپن سورس هست كه ميشه بهش كامپايلرهاي مختلف مثل gcc وصل كرد

بيشتر برنامه نويسها استفاده ميكنن .. برنامه ديگه اي مثل qtcreator هم هست كه اونم اپن سورس هست و نوكيا درست كرده خيلي عاليه .. اين ها محيط هاي خيلي خوبي دارن براي نوشتن كد سي

من از محيط كد نويسي برنامه هايي كه براي آرم نوشته شده شاكي هستم چون همه كد رو بايد تايپ كنم با تمام جزئيات .. در حالي كه در محيط هاي حرفه اي كد بايد پيشنهاد بده با توجه به هدي كه اضافه شده

sigma-mx
03-03-2012, 01:51
مهندس لینکی چیزی بده ببینیم چیه

pooriya
03-03-2012, 01:55
سلام
دوستان وقتی می گیم cmsis ،یک هسته مشترک یرای محصولاتی که بر مبنای cortex-m است که توسط شرکت arm نوشته شده ،و برای میکروکنترلرها طراحی شده و دارای ویژگی های مشترکی مانند (NVIC, Timer, Debug-hardware) هستند.
ولی اون کتابخونه هائی که ما داریم استفاده میکنیم برای راحتی کار،مثلا برای قسمتهای gpio,adc,....توسط شرکت سازنده هر محصول بر مبنای cmsis نوشته شده اند و با هم متفاوتند.
مثلا شاید دستور یک کردن یک بیت خاص یا پورت مورد نظر یکی باشه ولی اسم رجیسترها و ادرس انها متفاوته .
به نقل از eca:

CMSIS را میتوان به 3 لایه کاربردی تقسیم نمود :
• Core Peripheral Access Layer (CPAL)
• Middleware Access Layer (MWAL)
• Device Peripheral Access Layer (DPAL)

لایه اول که پایین ترین لایه هست مربوط به آدرس ها و روش های دسترسی به بخش هایی ابتدایی مثل رجیسترهای CPU ، واحد NVIC و دیباگ هست که در هر سیستم مبنی بر هسته Cortex-M وجود دارد.این لایه توسط ARM ایجاد میشد. core_cm3.h

لایه دوم هم توسط ARM ایجاد میشود ولی تولید کننده ها میتوانند برای سازگاری با محصولاتشان تغییراتی اعمال نمایند. این لایه شامل یک سری توابع API برای دسترسی به تجهیزات جانبی هست. system_device.h

لایه سوم مستقیما توسط تولید کننده ها ایجاد شده و شامل آدرس سخت افزاری رجیستر ها و توابع دسترسی به قابلیتهای خاص هست. device.h

مثلا برای STM32 :
You can see links before reply

esi_52000
03-03-2012, 01:57
آره مهندس جون حجمش 100 مگ هستش .البته فکر کنم شما داره CoFLASH و بقیه مخلفاتشم دانلود میکنیا.
رفقا چی شد نرم افزاری برای شبیه سازی نیست که دانلود کنم؟

sigma-mx
03-03-2012, 01:58
اسی جان این یه نرم افزار جدید ه . فقط چند مدل پشتیبانی می کنه . آقا راستی یه فکری دارم
من از فردا چند مدل نرم افزار ور میدارم و تست می کنم . شما هم خواهشا تست کنید . یه چیز توپ انتخاب کنیم با اون ادامه بدیم . من که از این keil مزخرف خسته شدم . همش باید اشکالات تایپی رو توش رفع کرد. هیچ تغییر رنگی هم نداره ! با نظر من موافقید ؟

alishekarriz
03-03-2012, 01:59
الان من مهندسم ؟! :mrgreen:

لينك كه دادم

Eclipse Downloads (You can see links before reply)

اي كليپس فقط محيط هست و براي برنامه نويسي نه شبيه سازي .. و تازه بايد كامپايلرش رو هم جدا بهش بشناسونيم چون خودش براي سي و جاوا نوشته شده
اين منظورتون بود؟
البته keil به خاطر اينكه مستقيم توسط Arm پشتيباني ميشه و به سرعت به روز ميشه استفاده ميشه .. فكر كنم

sigma-mx
03-03-2012, 02:02
آره مهندس eclipse فقط یه IDE قدرتمند تحت جاوا هست .و سیمولاتور و کامپایلرش از GNU ARM استفاده می کنه . باید تستش کنم تا کاراییش رو ببینم .

alishekarriz
03-03-2012, 02:03
You can see links before reply

esi_52000
03-03-2012, 02:03
sigma جان درسته جدیده اما تا اونجایی که من میدونم تمام میکرو های cortex معروف رو ساپورت میکنه.stm همه رو داره ساپورت میکنه.یه نگاه بهش بنداز.البته coflash فقط داره از میکرو های خاصی پشتیبانی میکنه.محیطشم خیلی باحاله .کار کنی عاشقش میشی.بینم شبیه ساز چی شد پس

sigma-mx
03-03-2012, 02:05
چیز جدا پیدا نکردم . حالا فردا می گردم ببینم تکلیف ما چی میشه .

alishekarriz
03-03-2012, 02:15
چيز نميشناسم ..

قويترين ها همينهاست كه ما كار ميكنيم _البته فكر ميكنم _

البته من علاقه ندارم كه از keil هجرت كنم .. بلكه ميخوام كه خاصيت هينت رو به كيل اضافه كنم .. با ايميلي كه جوابم رو داده ..

گفته

Hello Alis,

Thank you for using Keil software.

There are several good Editors out there.

If you have another editor that you prefer, (several of our customers do) you can call the Keil tools via command line :

µVision4 User's Guide: Command Line (You can see links before reply)

That way, you can use the editor with the features you want, and call the Keil tools in the background.

You can then use the Keil debugger to debug the code.

esi_52000
03-03-2012, 02:18
کارت درسته مهندس شکرریز.حالا بینم alis کیه ناقلا.
حالا جدا از شوخی من واقعا میخوام نرم افزاری بهتر از keil پیدا کنم که کار کردن باهاش راحت تر باشه مثل همون CoIDE

alishekarriz
03-03-2012, 02:34
من به غير از keil - IAR - Arm DS-5 -CrossStudio for ARM - Flowcode for ARMs - كه نصب دارم

gnuarm
ARM cross-compiling howto - K's cluttered loft (You can see links before reply)
You can see links before reply
You can see links before reply
چيزي نميشناسم

اگر خيلي اصرار كنيد ميگم بريد با avr studio كار كنيد .. :0013:

Doloop
03-03-2012, 17:33
خوب مهندس میشه بگی برای استفاده از CMSIS تو برنامه کدوم توابع یا هدرهارو رو باید فراخوانی کنم:o
البته با کیل کار میکنم:wink:
اون فایل 20 مگابایتی رو هم دانلود کردم:0013:

esi_52000
03-03-2012, 19:59
خوب مهندس میشه بگی برای استفاده از CMSIS تو برنامه کدوم توابع یا هدرهارو رو باید فراخوانی کنم:o
البته با کیل کار میکنم:wink:
اون فایل 20 مگابایتی رو هم دانلود کردم:0013:
سلام مهندس do loop
توی همین فروم آموزش نحوه ی استفاده از cmsis توی کیل گفته شده
اگه بهم نمی خندی باید بگم بلد نیستم لینک بزارم به اون پست:mrgreen:
ولی شخصا پیشنهاد میکنم نرم افزار CoIDE رو دانلود کن داداش که بتونی راحت با تمام میکرو های CORTEX با CCMSIS کار کنی . مطمئن باش با اولین استفاده عاشقش میشی و دیگه به KEIL نگاه نمی کنی. یا علی داداش

sadmonew
03-03-2012, 20:12
سلام دوستان عزيزم:hi:
مهندس esi_52000 محيط CoIDE واقعا محشر و كاربر پسنده. كار باهاش خيلي راحته. با 3/4 كليك يه پروژه ميسازي.
تنظيمات خيلي خاصي هم نداره. همه چيز از قبل آمادست.
مثال هاش هم عاليه.

esi_52000
03-03-2012, 20:20
سلام دوستان عزيزم:hi:
مهندس esi_52000 محيط coide واقعا محشر و كاربر پسنده. كار باهاش خيلي راحته. با 3/4 كليك يه پروژه ميسازي.
تنظيمات خيلي خاصي هم نداره. همه چيز از قبل آمادست.
مثال هاش هم عاليه.

مهندس جان کاملا درسته .واقعا محیط عالی و کاربر پسندی داره و محیط دیباگری اون هم از خیلی از دیباگرها پشتیبانی میکنه.امیدوارم دوستان دیگه هم از این نرم افزار استفاده کنن و راضی باشن.واقعیتش اینه که محیط kei واقعا دیوونه کننده هستش.
البته یه اشکال کوچیک coide نداشتن شبیه سازه .واسه این مشکل راه حل ندارین مهندس؟

Doloop
03-03-2012, 20:25
دمت قیژ داداش
من رفتم دخلشو بیارم
راستی دستوراتش همینیه که آموزش میدی...مثلا :


GPIO_SetDir( شماره پورت, پایه های مورد نظر , 0 یا 1)
FIO_SetDir( شماره پورت, پایه های مورد نظر , 0 یا 1)

در مورد نرم افزار:من اینترنتم سرعت خوبی نداره به یکی از دوستان گفتم دانلود کرده قراره سه شنبه بیاره دانشگاه ازش بگیرم


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

روی شماره سمت چپ پست راست کلیک کن اگه فایرفاکس داری گزینه copy link location رو بزن بعد توی ویرایشگر سایت تگ insert link رو بزن بعد past کن به همین خوشمزه گی:0013:
میگم مهندس فکر کنم لازم باشه آموزش کار با نرم افزار CoIDE رو هم شروع کنی
البته اگه تصویری باشه بهتره...
علی یارت...

esi_52000
03-03-2012, 20:32
مهندس do loop .تمام مطالبی که تا الان گفتم کلا توی این محیط قابل تست هستش و راستش رو بخواهی
بر اساس همین نرم افزار دارم مطالب رو میگم.
داداش نگران آموزش نباش , اونقدر کار کردن باهاش راحته که 2 سوته یاد میگیری.
فقط یه نکته ی کلیدی :
دوستان بایستی حتما یک فایل gcc هم از سایت coocox دانلود بشه تا بتونید برنامه رو کامپایل کنین
این موضوع 2 روز منو گرفتار کرده.یا علی

esi_52000
03-03-2012, 20:51
دوستان بالاخره کسی یه نرم افزار شبیه سازی سراغ نداره که بشه دانلودش کرد .یه simulator جدا ؟

alishekarriz
03-03-2012, 20:54
سلام به دوستان

خب من هم دانلود كردم و الان نصب كردم .. اين محيط همان محيط برنامه eclips هست كه برنامه Arm DS-5 هم از ازش استفاده كرده .. البته يكم ساده سازي و خلاصه شده به نظرم و ويزاردهايي براش گذاشته شده

حالا دوستان Arm DS-5 رو هم دانلود كنند و ببينند .. نظر بدهند

راستي نسخه Cmsis رو نوشته 1.4 اين با نسخه 3 كتابخونه ها ربطي نداره ؟

Doloop
03-03-2012, 20:55
مهندس GCC هم حجمش زیاده که 74 lمگابایت درسته؟؟؟
پس اینم موند سه شنبه برسه دستم
راستی منظورت از اینکه گفتی اموزشش برای کیل هست این بود

ایـــــــــران میـــــــکرو ™ - مشاهده یک موضوع - تشریح کامل دستورات cmsisبرای lpc1768 (You can see links before reply)

یا نه هنوز نرسیدم بهش
راستش من یه دور کل تایپیک رو قبلا گذری خوندم ولی چیزی یادم نمیاد فکر کنم منظورت این باشه؟؟؟!!!

esi_52000
03-03-2012, 21:19
مهندس GCC هم حجمش زیاده که 74 lمگابایت درسته؟؟؟
پس اینم موند سه شنبه برسه دستم
راستی منظورت از اینکه گفتی اموزشش برای کیل هست این بود

ایـــــــــران میـــــــکرو ™ - مشاهده یک موضوع - تشریح کامل دستورات cmsisبرای lpc1768 (You can see links before reply)

یا نه هنوز نرسیدم بهش
راستش من یه دور کل تایپیک رو قبلا گذری خوندم ولی چیزی یادم نمیاد فکر کنم منظورت این باشه؟؟؟!!!

نه مهندس DO LOOP .این GCC نه اون GCC هستش که شما منظورتونه
میتونید از اینجا دانلودش کنین .از روش لینک گذاری خودتون دارم لینک میزارما:mrgreen::mrgreen::mrgreen::mrgreen:
Free ARM Cortex M3 and Cortex M0 IDE (You can see links before reply)


راستی یعنی یه شبیه ساز جدا پیدا نمیشه.
یه خبر خوب دارم دوستان هدر رد 1768 من رسید .انشالله از فردا مثال تمام قسمتایی که گفتم رو میزارم.دوستان هم اگه چیزی رو تست کردن لطف کنن بزارن تا ما هم استفاده ببریم و دعاشون کنیم

alishekarriz
03-03-2012, 21:22
بچه ها اين برنامه خوب و راحت هست .. و .. نگم ؟ بگم! مثل بسكام تنبل ميشيما !!

ويزارد خوبه به شرطي كه وابسته نشيم بهش ...

You can see links before reply

شاد باشيم

esi_52000
03-03-2012, 21:52
بچه ها اين برنامه خوب و راحت هست .. و .. نگم ؟ بگم! مثل بسكام تنبل ميشيما !!

ويزارد خوبه به شرطي كه وابسته نشيم بهش ...

Free ARM Cortex M3 and Cortex M0 IDE (You can see links before reply)

شاد باشيم

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

esi_52000
03-03-2012, 22:15
دوستان گرامی یعنی خدایی کسی یه SIMULATOR سراغ نداره که ما دانلود کنیم.cry::

sadmonew
04-03-2012, 03:00
سلام دوستان:hi:
بعد از كلي سرچ كردن تونستم اينو پيدا كنم.
ARM Simulator | Crossware Development Suite for ARM (You can see links before reply)
البته خود سايت CoIDE هم يه نرم افزار ديباگر به اسم CooCox_CoDebugger_0.31_Setup براي دانلود گذاشته.

esi_52000
04-03-2012, 11:36
سلام دوستان:hi:
بعد از كلي سرچ كردن تونستم اينو پيدا كنم.
arm simulator | crossware development suite for arm (You can see links before reply)
البته خود سايت coide هم يه نرم افزار ديباگر به اسم coocox_codebugger_0.31_setup براي دانلود گذاشته.

داداش دمت گرم خیلی لطف کردی.ممنون

esi_52000
05-03-2012, 12:04
سلام به دوستان lpc کار.
تو چند روزی که از گفتن مطالب تایمر گذشته من منتظر بودم که ببینم کسی سوالی واسش پیش نمیاد .خداییش یعنی مطالب آسون بوده یا همه گفتن بیخیال این میکرو .؟آخه من 10 بار از روی این قسمتا خوندم تا فهمیدم چی به چیه.دوستان اگه مشکلی نیست من قسمت adc رو شروع کنم.یا اگه دوس دارین مثال بزنیم؟آخه بردlpc1768 منم رسیده و متونم مثال بگم.منتظرم دوستان :wink:

sadmonew
05-03-2012, 17:39
سلام داداش esi_52000
تونستي simulator رو تست كني؟
ازش جواب گرفتي؟

esi_52000
05-03-2012, 19:15
سلام داداش esi_52000
تونستي simulator رو تست كني؟
ازش جواب گرفتي؟

سلام داداش sadmonw .داداش راستشو بگم هنوز نتونستم دانلودش کنم.آخه اشتراک من ایرانسل هستشو نمیشه زیاد دانلود کنم.شما خودت دانلودش نکردی.چطور بود داداش؟؟

alishekarriz
05-03-2012, 20:08
سلام

مبارك باشه . شيرينيشم بده

شما به چي ميگي سيمولاتور ؟ خود ‍coide كه سيموله ميكنه .. پورتها و ريجيستر ها رو نشون ميده ؟ شما دقيقا چي ميخواهي؟

esi_52000
05-03-2012, 22:37
سلام

مبارك باشه . شيرينيشم بده

شما به چي ميگي سيمولاتور ؟ خود ‍coide كه سيموله ميكنه .. پورتها و ريجيستر ها رو نشون ميده ؟ شما دقيقا چي ميخواهي؟

داداش سیمولاتورش کجاس که من ندیدم میشه یه توضیح بدی دمت گرم منتظرما.نمیدونی چقده امید دادی.داداش منتظرما

sadmonew
05-03-2012, 23:28
سلام

مبارك باشه . شيرينيشم بده

شما به چي ميگي سيمولاتور ؟ خود ‍coide كه سيموله ميكنه .. پورتها و ريجيستر ها رو نشون ميده ؟ شما دقيقا چي ميخواهي؟
سلام مهندس گل:hi:
آقا من هر چي تو محيط نرم افزار CoIDE ور رفتم مثل اينكه بدون سخت افزار (J-LINK يا ST-LINK يا ...) قسمت ديباگش درست كار نميكنه.
شما هم تست كنيد ببينيد چجوريه؟

alishekarriz
06-03-2012, 00:16
cry::
ببخشيد به جون خودم ديگه از اي كارا نميكنم cry::

نداره خب ديگه چرا اينطوري نگاه ميكنيد lov:

اما به جاش با همون Jlink ديباگ ميشه كرد .. خود سايت Segger گذاشته
SEGGER Microcontroller - Embedded Software Solutions - CooCox CoIDE (You can see links before reply)

دوستان براي من نسخه SEGGER\JLinkARM_V422a هست ظاهرا اخرين 4.4 شده خود سيگر كه ميگه سريال دستگاهتو بده .. جاي معتبر كجا ميشناسيد دانلود كنيم اخرين نسخه رو

راستي قابلي نداشت چند ساعت خوشحال بوديدا .. به اين ميگن خوشحالي كاذب .. مثل اينه كه به يكي بگن ماشينت رو دزديدن .. بره ببينه نه ندزديدن خوشحال ميشه (البته يكم فرق داره)

sadmonew
06-03-2012, 00:32
سلام داداش
آقا لازم نيست سريال رو بهش بدي بدون سريال هم ميشه دانلود كرد فقط كافيه تو لينك زير گزينه دوم رو انتخاب كنيد(متن آبي رنگ)
اينم لينك دانلود نرم افزار J-LINK:
SEGGER Microcontroller - Embedded Software Solutions - Download (You can see links before reply)

armstk
06-03-2012, 00:49
دوستان براي من نسخه SEGGER\JLinkARM_V422a هست ظاهرا اخرين 4.4 شده خود سيگر كه ميگه سريال دستگاهتو بده .. جاي معتبر كجا ميشناسيد دانلود كنيم اخرين نسخه رو
سریال دانلود نرم افزار J-link :

086758486
این کد رو بزنین با خیال راحت نرم افزا segger jlink رو دانلود کنین:wink:

alishekarriz
06-03-2012, 00:52
I confirm that I will not use the software with illegal clones.

شما چطوري دلتون مياد .. اخه چراااا .. پس فردا سر پل صراط اين گودن تاخ جلومو ميگيره ميگه سريال بده تا رد بشي cry::

armstk
06-03-2012, 09:36
I confirm that I will not use the software with illegal clones.

شما چطوري دلتون مياد .. اخه چراااا .. پس فردا سر پل صراط اين گودن تاخ جلومو ميگيره ميگه سريال بده تا رد بشي
تقصیر ما چیه که اگرم بخایم این نرم افزار رو بخریم بهمون نمیفروشن؟؟
بعدشم میدونین قیمت مثلا فقط keil چقدر گرونه؟؟؟

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

sigma-mx
06-03-2012, 13:53
دزدی چیه مهندس ! ما نرم افزار رو براشون داریم تست می کنیم ! باید ممنون هم باشن ...!!!

alishekarriz
06-03-2012, 14:53
كي گفته مجبوري؟؟ مگه لينوكس نيست مجاني .. مگه Eclips نيست مجاني مگه GCC نيست مجاني ؟؟؟؟

يه رفيق دارم تماما با برنامه هاي Open source كار ميكنه (برنامه نويس حرفه اي هست) و مدرك دانشگاهي هم نداره ولي هر جا ميره با حقوق بالا سريع دعوت به كار ميشه

نگو نميشه .. خواستن توانستن هست

esi_52000
10-03-2012, 14:58
سلام به دوستان LPC کار .
میخوام در مورد یه قسمت مهم یه توضیحاتی رو بدم که شاید به درد بعضی دوستان بخوره .
واقعیتش اینه که این مساله 2 روز تموم منو دیوونه کرد تا دردشو فهمیدم.البته شاید از گیجی و خنگی من بوده؟انشالله بدرد دوستان بخوره.اما داستان.............:

بلللللله .بنده بعد مدتها بالاخره تونستم یه برد ارزون قیمت (برد هدر LPC 1768) را از ECA بخرم.
توی راهنما نوشته بود بدلیل داشتن بوت لودر بایستی برنامه ی خودتون رو از خونه 0X2000 به بعد بریزین.اینکه مشکلی نداره و دوستان همگی بلدن.
اما مشکل اینجا بود که برنامه اجرا میشد اما هیچ وقفه ای توی برنامه اجرا نمیشد.به عبارت دیگه برنامه فقط قسمت main() رو انجام میداد و وقفه حالیش نبود .بعد کلی داغون شدن و فحش به زمین و زمان فهمیدم که
مشکل اینه:
چون در زمان ریست میکرو خوندن برنامه از بردار ریست شروع میشه(یعنی خونه ی 000000)و براش تعریف شده که زیر برنامه های وقفه توی خونه های زیر 0x2000 نوشته میشه لذا به جایی پرش میکرد که اصلا به وقفه مربوطه ربطی نداشت.فقط کافد بود در اول برنامه main بنویسیم

NVIC_SetVTOR(0X2000

یعنی ادرس شروع برنامه خودمون
امید وارم هیچ کدوم از دوستان یه همچین مشکلی نداشته باشن.
راستی واسه شروع پروگرم برنامه از آدرس خاص توی COIDE خیلی راحت .انشالله همه بلدن دیگه؟

mohpooria
11-03-2012, 01:09
دوستان من هم برد lpc1114 را دارم
انشالا به شما در این چند روزه ملحق میشوم
اگر دوست داشتید به نرم افزار lpcXpresso یه نگاهی بندازید ،این هم بیسش eclipse است
و پشتیبانی توسط NXP ازش میشه

sigma-mx
11-03-2012, 01:47
خوبه .انشالله برد 1313 من هم که برسه یه بخش آموزشی برای 1313 هم با کمک دوستان می گذاریم .:o

esi_52000
11-03-2012, 14:36
خوبه .انشالله برد 1313 من هم که برسه یه بخش آموزشی برای 1313 هم با کمک دوستان می گذاریم .:o

دادا sigma دمت گرم ما همچنان منتظریم اون هدر برد رو واسمون بزاریا.همون 1313 هه.
راستی فایلای اموزش 1313 رو هم دارم آماده میکنم

esi_52000
11-03-2012, 14:43
دوستان من هم برد lpc1114 را دارم
انشالا به شما در این چند روزه ملحق میشوم
اگر دوست داشتید به نرم افزار lpcXpresso یه نگاهی بندازید ،این هم بیسش eclipse است
و پشتیبانی توسط NXP ازش میشه

به به !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1بینم داش mohpooria برد 1114 رو از کجا گرفتی داداش.چن پات دراومده. قیمت خود ic چنده.

mohpooria
11-03-2012, 21:30
قیمتش در حد 50 تومن از کسی گرفتم
همون برد خود NXP هست قیمت خود میکرو که خیلی پایینه
با خودش دیباگر هم داره برای lpcXpresso به ایم lpc-link

Shapour_Ardebil
11-03-2012, 21:47
ضمن عذرخواهی ازدوستان بسیار عزیزم مثل اینکه زحمات داداش خیلی عزیزمان esi_52000 تحت شعاع قرار میگیرد و در بیش از حداقل 10 پست آخر (مثلا 10 ) بجای اظهار نظر و همکاری در اصل هدف و بحث بسیار خوب و به روزی که واقعا همتایی لا اقل من ندیدم داشته باشد به مثایل حاشیه ای منحرف شده البته چون من فکر کنم از لحاظ سنی شاید بزرگتر باشم به خودم این جسارت را دادم تا به عرض دوستان برسانم و ضمن تششششششکر از برادر بسیار عزیز و گرامی ام esi_52000 و تبریک برای خرید (برد هدر LPC 1768) من هم این برد را خریدم ولی هنوز به دستم نرسیده خواهشمندم با توجه به اصل هدف برگردیم ودر صورت امکان با مثال عملی , بازهم از همه دوستان عذرخواهی میکنم

esi_52000
11-03-2012, 22:36
ضمن عذرخواهی ازدوستان بسیار عزیزم مثل اینکه زحمات داداش خیلی عزیزمان esi_52000 تحت شعاع قرار میگیرد و در بیش از حداقل 10 پست آخر (مثلا 10 ) بجای اظهار نظر و همکاری در اصل هدف و بحث بسیار خوب و به روزی که واقعا همتایی لا اقل من ندیدم داشته باشد به مثایل حاشیه ای منحرف شده البته چون من فکر کنم از لحاظ سنی شاید بزرگتر باشم به خودم این جسارت را دادم تا به عرض دوستان برسانم و ضمن تششششششکر از برادر بسیار عزیز و گرامی ام esi_52000 و تبریک برای خرید (برد هدر LPC 1768) من هم این برد را خریدم ولی هنوز به دستم نرسیده خواهشمندم با توجه به اصل هدف برگردیم ودر صورت امکان با مثال عملی , بازهم از همه دوستان عذرخواهی میکنم

داداش shapour کاملا باهات موافقم که این تاپیک کلا داره بیراهه میره.باور کن خودمم نمیدونم چطور شد که اینطور شد.:(:(:(:(:(:(:(:(
ولی چشم انشالله هر چه زودتر برمیگردیم سر بحث اصلی.راستی بردت مبارک.هر وقت رسید یه ندا بده.چون مثالای کاملی از تمامی قسمتها و راه اندازی خیلی از ادوات جانبی رو آماده کردم...............راستی مگه چند سالته پیرمرد:mrgreen::mrgreen::mrgreen::mrgreen::m rgreen::mrgreen::mrgreen:

Shapour_Ardebil
12-03-2012, 14:19
:mrgreen: با سلام برد من امروز رسید :o ولی نه سی دی نه هیچ چیز دیگه نداره:unh: فقط یک برگ کاغذ توش هست :x توسایتش هم چیزی نتونستم پیداکنم :( حالا از کجا شروع کنم قبلا با AVA و 8051 کار کردم ولی با Arm اولین بار است

esi_52000
12-03-2012, 14:28
:mrgreen: با سلام برد من امروز رسید :o ولی نه سی دی نه هیچ چیز دیگه نداره:unh: فقط یک برگ کاغذ توش هست :x توسایتش هم چیزی نتونستم پیداکنم :( حالا از کجا شروع کنم قبلا با ava و 8051 کار کردم ولی با arm اولین بار است

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

Shapour_Ardebil
12-03-2012, 14:29
:hi:ببخشید AVR را AVA نوشتم از ناراحتی است :mrgreen: البته خواستن توانستن است اول خدا بعدش هم دوستانی هم چون شما :wink::wink::wink::wink::wink:

Shapour_Ardebil
12-03-2012, 14:34
در برنامه نویسی برای avr و مرحوم مغفور 8051 با بیسکام کار میکنم ولی خوب برنامه نویسی برای pc را با ویژوال بیسیک و #c تقریبا خوب بلدم

esi_52000
12-03-2012, 14:46
:hi:ببخشید AVR را AVA نوشتم از ناراحتی است :mrgreen: البته خواستن توانستن است اول خدا بعدش هم دوستانی هم چون شما :wink::wink::wink::wink::wink:

داداش سلام.ببخشید اینو میگم.ولی خدارو با هیشکی جمع نبند.
امیدت اول به خدا و بعدم به خدا.
داداش میتونی چنتا نرم افزار خوب کا کنی.keil خوبه اما سخته.CoIDE عالییه اما فقط واسه CORTEX و کار با CMSIS هستش.پیشنهادم اینه که با COIDE کار کنی.میتونی از لینک زیر دانلودش کنی.اینم بگم اگه فقط میخوایی با LPC کار کنی بهترین انتخاب LPCXPRESSO هستش خیلی شبیه COIDE هستش و چیز توپیه.
Free ARM Cortex M3 and Cortex M0 IDE (You can see links before reply)

Shapour_Ardebil
12-03-2012, 17:31
با سلام , چون من با ریجستر نویسی (بصورت عملی ) زیاد آشنا نیستم :mrgreen: در ضمن قبل از شروع هم تحقیقات نسبتا خوبی راجع به میکرو کنترلر های " آرم " کردم و سری lpc را از همه بهتر یافتم و در سری lpc نیز lpc1768 , چون هم از لحاظ امکانات سخت افزاری کامل تر بود و هم با توجه به هسته Cortex که داشت و چنانچه عرض کردم تجربه عملی در ریجستر نویسی نداشتم و CMSIS برای آن معرفی شده بود را فعلا انتخاب نمودم :hi: در اینترنت راجع به CMSIS خیلی جستجو کردم ولی اطلاعاتی ( مخصوصا پایه ) پیدا نکردم تا اینکه پست های بسیار جالب وحقیقتا عالی شما را دیدم با خواندن نوشته های شما انقدر خوشحال شدم که نرم افزار " کیـل " را دانلود وبا توجه به نوشته های شما شروع کردم و در نهایت خرید هدر برد ولی با دیدن هدر برد که هیچ چیز نداشت .......
و اما راجع به نرم افزار عقیده شخصی من این است ( با توجه به تجربه قبلی من در استفاده از بیسکام :brk: ) وقتی ما به یک نرم افزار عادت میکنیم دل کندن از آن هر چند خود ما نیز در دل به اشتباه بودن آن آگاهیم سخت وحتی شاید غیر ممکن می شود لذا نرم افزار کیل هر چند ظاهری پیچیده دارد ولی در صورت عادت کردن به آن ( هرجند به اجبار ) چون سخت افزارهای زیادی را ساپورت میکند و با زمان به پیش میرود وچنانکه در سال و یا حتی ماه های آینده سری های جدید از میکروکنترلر عرضه شود من صد در صد مطمئنم که کیل آنها را نیز ساپورت میکند پس اگر ما با COIDE برای سری cortex برنامه بنویسیم و عادت کنیم باز هم مثلا برای برنامه نویسی برای سری lpc200 ویا ... دو باره باید به سراغ کیل برویم ویا بدتر از آن باید نرم افزار دیگری را انتخاب ودو باره به یادگیری محیط و عادت به آن , پس اگر موافق باشید به نظر اینجانب بهترین حالت این است که تمام انرژی خود را جهت یادگیری اصول برنامه نویسی بگذاریم تا یاد گیری محیط های جدید ( آسیبی که همه ما نیز لا اقل در چندین پست قبل نیز عملا شاهد آن بودیم ) البته این نظر حقیر می باشد و صد در صد آماده دریافت نظرات گرانمایه شما وسایر اساتید گرامی نیز می باشم :hi::hi::hi:

sigma-mx
12-03-2012, 18:47
مهندس نظرات شما درسته خب ، ولی اینجوری هم نیست که اگه فردا بریم با یه کامپایلر جدیدکار کنیم باید از صفر شروع کنیم . تو یسری از پست ها و تاپیک های اخیر ، ما دنبال بهترین و کاملترین کامپایلر بودیم که یه جمعبندی کنیم و یکی رو فعلا برای ادامه کار انتخاب کنیم . حالا یسری از بچه ها دارن با Keil کار می کنن یسری دیگه با IAR و CoIDE و ... خوشبختانه تیم ایران میکرو با یک انتخاب صحیح ، داره رو سری cortex کار می کنه که به نظر من خیلی جلو افتادیم . چون هم مثل میکرو های قبلی at91sam و lpc21xx دیگه مجبور نیستیم از صفر برای هر واحد برنامه بنویسیم و بهترین شکل کتابخانه توسط کمپانی نوشته شده (CMSIS ) . و هم دیگه دوره آرم 7و9 برای طراحی های جدید به سر رسیده و هر روز شاهد ورود یک میکروی کرتکس فوق العاده قدرتمند به بازار هستیم.
ورود شما رو هم به جمع ما تبریک میگم و امیدوارم در کنار هم مرز های ترقی رو طی کنیم .
یا حق

Shapour_Ardebil
13-03-2012, 11:56
به به داداش تبریک میگم.نگران نباش کار باهاش خیلی آسونه .فقط یه قلقی داره که رعایت نکنی اصلا کار نمیکنه.
اول بگو با چه نرم افزاری داری برنامه مینویسی تا بگم قلق کار کردنش چیه.

با سلام , ضمن تشکر از شما منتظر راهنمایی های گرانقدر شما هستم در ضمن داداش من J-Link نخریدم برای پروگرام کردن از خود بوت لودر برد میخواهم استفاده کنم و یا بنظر شما برد واسه Flash Magic درست کنم ؟

esi_52000
13-03-2012, 14:18
با سلام , ضمن تشکر از شما منتظر راهنمایی های گرانقدر شما هستم در ضمن داداش من J-Link نخریدم برای پروگرام کردن از خود بوت لودر برد میخواهم استفاده کنم و یا بنظر شما برد واسه Flash Magic درست کنم ؟

سلام داداش shapour .(داداشی راهنمایی گرانقدر چیه ما کوچیکتیم عزیز .نگو که باورمون میشه از فردا خودمونو میگیریما:mrgreen::mrgreen::mrgreen:)
داداش من شما واسه پروگرمر کردن هیچ نیازی فعلا به jlink یا flashmagic نداری ومیتونی راحت از خود بوت لودر استفاده کنی.خیلی راحته.

بین داداش واسه پرگرم کردن بردت کافیه کلیدهای 2 و 5 دیپ سوئیچت رو on کنی.در این حالت کامپیوترت خود بخود برد رو به صورت یه فلش میشناسه. فلش ایجاد شده رو باز کن و فایل توش رو delet کن.حالا فایل bin (حتما bin و نه hex) برنامت رو بردار و توی این فلش copy کن.کلید5 دیپ سوئیچت رو off کن ودکمه ریست رو بزن .برنامت شروع بکار میکنه
اما باید برنامت از خونه 0x2000 به بعد حافظه ذخیره بشه. واسه این کار من با coide بلدم .الان با keilمیخوام ور برم تا قلقش بیاد تو دستم بعد بهت میگمداداش

esi_52000
13-03-2012, 14:24
خوب داداش واسه اینکه بتونی از یه حافظه خاص در میکرو برنامه رو بریزی توی keil اینکار رو بکن.

flash ->configure flash tools

برگه target رو فعال کن IROM1 عدد 0X0 رو به 0X2000 تغییر بده .
موفق باشی

Shapour_Ardebil
13-03-2012, 18:34
با سلام من نرم افزار CoBuilder را دانلود کردم :0013: ویک نگاهکی به آن انداختم یک فیلم هم بود که آن را هم دانلود کردم lpc1313 کوچلو را هم که میتونه برای پروژه های معمولی بیشتر کاربرد داشته باشد :gop: نیز ساپورت میکنه داداش ولی من Example و یا چیزی شبیه آن ندیدم

esi_52000
13-03-2012, 21:40
با سلام من نرم افزار cobuilder را دانلود کردم :0013: ویک نگاهکی به آن انداختم یک فیلم هم بود که آن را هم دانلود کردم lpc1313 کوچلو را هم که میتونه برای پروژه های معمولی بیشتر کاربرد داشته باشد :gop: نیز ساپورت میکنه داداش ولی من example و یا چیزی شبیه آن ندیدم

داداش من coide رو گفتم دانلود کن.راستش تا حالا cobuilder رو ندیدم.
در مورد example هم باید بگم مثالها از داخل برنامه باز میشن و میتونی اون رو به برنامه اضافه کنی .
موقعی که داری یه پروژه میسازی توی هر قسمت از شما میپرسه که نیاز هست مثال هم به پروژه اضافه بشه یا نه.
کار باهاش خیلی راحته.اگه مشکلی بود در خدمتتم داداش

torabi.ieee
14-03-2012, 13:30
یاعلی (ع)
آقا دم همگی گرم

Shapour_Ardebil
14-03-2012, 18:30
داداش من coide رو گفتم دانلود کن.راستش تا حالا cobuilder رو ندیدم.
در مورد example هم باید بگم مثالها از داخل برنامه باز میشن و میتونی اون رو به برنامه اضافه کنی .
موقعی که داری یه پروژه میسازی توی هر قسمت از شما میپرسه که نیاز هست مثال هم به پروژه اضافه بشه یا نه.
کار باهاش خیلی راحته.اگه مشکلی بود در خدمتتم داداش

با سلام
من به آدرسی که شما لطف کرده بودید ( You can see links before reply ) رفتم که یک همچین متنی در اول آن بود با یک فیلم درمورد چگونگی استفاده از آن.


CoIDE is a new, free and highly-integrated software development environment for ARM cortex M3 and M0 based microcontrollers, which includes all the tools necessary to develop high-quality software solutions in a timely and cost effective manner. It integrates CoBuilder and CoDebugger for simplicity and ease of use.

ECoIDE نرم افزار جدید، رایگان و بسیار یکپارچه محیط توسعه برای میکروکنترلرهایARM بر اساس سری های M3 و M0 ، که شامل تمام ابزار لازم برای توسعه کیفیت بالا و راه حل های نرم افزار هم زمان و مقرون به صرفه است. با ادغام CoBuilder و CoDebugger برای سادگی و سهولت استفاده.

البته اگر درست فهمیده باشم انگلیسی زیاد خوبی ندارم

mjes
22-03-2012, 02:06
سلام
علی نگه دارت
دست درست.:wink::wink: عالی بود
اگه لطف کنی تاپیک ها رو به صورت pdf ارائه بدی بهتر بود
یک دنیا تشکر

bijan6328
23-03-2012, 14:40
سلام
ممنون از دوستان که معلومات خودتونو بی منت در اختیار همه میذارین.
خیلی تعطیلات خوش میگذره؟پس کجایین؟چشم به راهیم!!!
ضمنا سال نو هم مبارک.
یاعلی

mehrdad2245
24-03-2012, 17:33
سلام اگه امکان هست اموزش توابع usb قرار دهید کارهای جالبی میشه باش انجام داد . فکر کنم از hid شروع کنیم بهتر باشه مممنون

esi_52000
24-03-2012, 18:32
دوستان دمتون گرم دیگه.خوب شما هم یه کمکی بکنین دیگه.خیلی قسمتا مونده که راه انداری نشده.ممنون میشم اگه دوستان همکاری کنن و هر کس یه قسمت رو تحویل بگیره.

bijan6328
24-03-2012, 22:36
اقای طاهری من چند نمونه مثال از nxp , st دیدم هیچ وجه اشتراکی نداشتن.اینکه با cmsis میشه بین میکروها سوییچ کرد پس چه معنی داره؟

pumper
24-03-2012, 23:40
من دارم رو dma کار می کنم

esi_52000
25-03-2012, 13:48
اقای طاهری من چند نمونه مثال از nxp , st دیدم هیچ وجه اشتراکی نداشتن.اینکه با cmsis میشه بین میکروها سوییچ کرد پس چه معنی داره؟

سلام دوست خوبم.
راستش من تمام فکرم رو گذاشتم روی nxp و دنبال این مسائل نرفتم .انشالله دوستان دیگه کمک کنن و جواب رو به ما هم بدن.

esi_52000
25-03-2012, 14:01
من دارم رو dma کار می کنم


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

pumper
26-03-2012, 11:32
نه مهندس رد یه پروژه pic کار می کردم

esi_52000
30-03-2012, 12:24
سلام به همه دوستان گرامی.
ممکنه دوستان پیش خودشون بپرسن چرا یکدفعه این پست اینقده کم کار شده.
دوستان بعد نظرسنجی مشخص شده که تقریبا همه دوستان معتقدا باید مطالب رو با مثال به پیش ببریم.
در نتیجه منم شروع کردم به نوشتان کتابخانه برای درایو دستگاههای جانبی تا بشه با مثال کاربردهای هر قسمت از میکرو رو توضیح بدیم.
تا الان این لایبری ها اماده شده که همه ی اونا رو بر اساس کتابخانه ی cmsis نوشتم.
MMCcard , SDcard
کیبرد کامپیوتر(PS/2)
ال سی دی گرافیکی
ال سی دی کاراکتری
ال سی دی n96
کی پد 4*4
اگه دوستان لایبری دیگه ای به نظرشون میرسه لطف کنن و بگن.
انشالله دوستان هم لایبری خوبی اگه نوشتان بزارن تا بقیه هم استفاده کنن

pswin
05-04-2012, 18:16
تا الان این لایبری ها اماده شده که همه ی اونا رو بر اساس کتابخانه ی cmsis نوشتم.
از كجا ميتونيم دريافتشون كنيم؟

kanonyar
05-04-2012, 18:42
خسته نباشید
مخواستم ببینم کسی هست که تایمر کانتر یا ADC و طریقه را اندازیه پورت های LPC1768 Cortex-M3
راه انداخته باشه با همرا با آموزش؟

esi_52000
05-04-2012, 22:04
خسته نباشید
مخواستم ببینم کسی هست که تایمر کانتر یا ADC و طریقه را اندازیه پورت های LPC1768 Cortex-M3
راه انداخته باشه با همرا با آموزش؟

سلإم دوست عزیز.توی همین پست دنبإلش بگردی آموزش کإمل بخش تإیمر رو گفتم.
بخش adc رو هم نإ چند روز دیگه شروع میکنم.إگه سوإلی دإشتی در خدمتم

esi_52000
05-04-2012, 22:09
از كجا ميتونيم دريافتشون كنيم؟

سلإم دوست عزیز.شرمنده هنوز تإ آپ شدنش مونده.رإستش شإید رإحت نشه به همش دسترسی دإشت:mrgreen::mrgreen::mrgreen::mrgreen:

pswin
07-04-2012, 02:08
.رإستش شإید رإحت نشه به همش دسترسی دإشت
حق با شماست. اينجا (در كل كشور عزيزمون) معمولا يكي مطلب ميده و 100 نفر ديگه استفاده مي كنن و منظر همون يكي مي مونن اما خب هميشه اين بده بستانها يك طرفه نيست. مثلا شما mmc رو راه ميندازين من هم lcd حالا اگر قرار باشه كد رو از هم ديگه نگه داريم دوتامون هم بايد دوباره همين مسير رو طي كنيم ( تازه اگر به همون كارايي همديگه برسيم يه مدت زمان دوبل صرف اينكارها كرديم. در كل همكاري باعث ميشه سريعتر جواب بگيريم. مثلا اگر مجله اين سايت نبود خيلي هنوز با arm مشكل داشتن و ... اما يه پيش زمينه باعث شد كه arm هم مثل avr سريع بين بچه ها راه بيفته.

البته شما استاد ما هستي و خيلي مونده تا به شما برسم اما باز هم ...

esi_52000
07-04-2012, 16:43
حق با شماست. اينجا (در كل كشور عزيزمون) معمولا يكي مطلب ميده و 100 نفر ديگه استفاده مي كنن و منظر همون يكي مي مونن اما خب هميشه اين بده بستانها يك طرفه نيست. مثلا شما mmc رو راه ميندازين من هم lcd حالا اگر قرار باشه كد رو از هم ديگه نگه داريم دوتامون هم بايد دوباره همين مسير رو طي كنيم ( تازه اگر به همون كارايي همديگه برسيم يه مدت زمان دوبل صرف اينكارها كرديم. در كل همكاري باعث ميشه سريعتر جواب بگيريم. مثلا اگر مجله اين سايت نبود خيلي هنوز با arm مشكل داشتن و ... اما يه پيش زمينه باعث شد كه arm هم مثل avr سريع بين بچه ها راه بيفته.

البته شما استاد ما هستي و خيلي مونده تا به شما برسم اما باز هم ...

سلإم دوست عزیز.
کإملإ حق بإ شمإست .وإقعیتش إینه که زحمت زیإدی وإسه إین لإیبری هإ کشیدم .وإسه همین میخوإم درست إزش إستفإده بشه.لإیبری هإی دیگه إی هم همین إلإن آمإده شد مثل فونت فإرسی بسیإر عإلی برإی tft_lcd و إل سی دی گرإفیکی .
به زودی عکسش رو وإستون میزإرم

pswin
08-04-2012, 00:37
برإی tft_lcd و إل سی دی گرإفیکی . به زودی عکسش رو وإستون میزإرم

من روي LCD زياد كار كردم (با ili9325) و جواب نسبتا خوبي هم گرفتم. حداقل از مثالهايي كه داخل فرومهاي مختلف هست بهتر و سريعتر هست و تازگي ها يكي از دوستام من يه راهنمايي كرد كه متوحه شدم ميشه خيلي راحتر و سريعتر هم راه اندازيش كرد. من مثل شما دارم روي فونت فارسي كار ميكنم اگر بتونم اون چيزي رو كه توي زحنم هست پياده سازي بكنم خيلي خوب ميشه. ميخوام از يه نوع الگوريتم فشرده سازي چه از لحاظ تصوير و چه چيدمان استفاده كنم. اگر بتونم اينكار بكنم ميزان مصرف فلش رو حداقل چند برابر كمتر ميكنم و سرعت لود رو بيشتر

leila_enginee
18-04-2012, 11:25
ای بابا ما همه با هم داداشیم آخه چرا؟
حداقل کتابخونه lcd کاراکتری را بزار
نه؟؟؟
پس یه فایل هگز ازش بزار من بریزم رو میکرو ببینم lcd با 4 تا دیتا چشمک میزنه یا نه؟
گیرم به خدا
help me

esi_52000
18-04-2012, 12:34
ای بابا ما همه با هم داداشیم آخه چرا؟
حداقل کتابخونه lcd کاراکتری را بزار
نه؟؟؟
پس یه فایل هگز ازش بزار من بریزم رو میکرو ببینم lcd با 4 تا دیتا چشمک میزنه یا نه؟
گیرم به خدا
help me

دوست عزیز فکر کنم مطإلب پست رو کإمل نخوندیدإ. توی قسمت سورس کد برإی lpc1768 چنتإ برنإمه وإسه رإه نإدإزی lcd , glcd وجد دإره ولی إگه نتیجه نگرفتین بگین تإ من خودم لإیبری lcd رو وإستون بزإرم

leila_enginee
18-04-2012, 18:10
فکر کنم یکم تند رفتم:hi:
شرمنده اول باید تشکر کنم واسه مطالب خوبتون
من یه چند تا برنامه این ور اون ور پیدا کردم ولی نتونستم راش بندازم
اگه لایبری را بزارید و مثال هم بزارید
یک دنیا ممنون میشم:o

leila_enginee
19-04-2012, 10:43
سلام برنامه بدون خطا کامپایل شد .مشکل یک هیدر بود که باید به پروژه اضافه میشد:o

اینم یک برنامه برای rit
برنامه تغییر یافته:

#include "LPC17xx.H"
#include "SYSTEM_LPC17xx.C"
#include"lpc17xx_rit.c"
#include"lpc17xx_rit.h"
#include"lpc17xx_clkpwr.c"

#define LCD_PORT_0
#define LCD_RS 0
#define LCD_E 1
#define LCD_DB4 2
#define LCD_DB5 3
#define LCD_DB6 4
#define LCD_DB7 5
#include "lcd.h"
int i;
void RIT_IRQHandler(void)
{ i++;
lcd_gotoxy(2,1);
lcd_puts(i);
RIT_GetIntStatus(LPC_RIT);

}

int main()
{
lcd_init();
lcd_clear();
cursor_off();
lcd_gotoxy(1,1);
lcd_putsf("rit");
RIT_Init( LPC_RIT );
RIT_TimerConfig(LPC_RIT,100) ;
RIT_Cmd(LPC_RIT,ENABLE);
NVIC_EnableIRQ(RIT_IRQn);

while(1);

}


سلام ظاهرا شما lcd کاراکتری را باهاش کار کردید میشه لطفا به من کمک کنید
کتابخونش را بزارید و یه مثال بزنید؟
در ضمن پایه هاش را به چه پین هایی وصل کردید؟
برد من همین برد develop lpc1768 هست من lcd گرافیکی را برداشتم و به جاش با پین هدر به lcd کاراکتری وصل کردم ممکنه مشکل این باشه؟

leila_enginee
21-04-2012, 13:17
:(:(:(
چرا هیشکی به داد من نمیرسه آخه؟
cry::
برد من development lpc1768 هست من طبق برنامه آقای پوریا lcd گرافیکی تاچ خود برد را باز کردم و با پین هدر به lcd کاراکتری 2*16 وصل کردم
همه پایه ها را به پورت 2 وصل کردم
E به پین 2
RW به پین 3
RS به پین 1
DB4 تا DB7 به پین های 4 تا 7
فرکانس کاری میدونم باید M و N تو فایل SYSTEM_LPC تغییر داده بشه
ولی چون نحوه تغییر دادنشو بلد نبودم فایل سیستم برنامه را کپی کردم
LCD را به 5 ولت وصل کردم
برنامه ERROR نداره و فایل هگز هم روی IC ریخته میشه
ولی LCD هیچی نشون نمیده
ممکنه ایراد این باشه که تو برد از این پایه ها برای LCD تاچ استفاده شده؟
برای استفاده از LED های خود برد باید پین 21 پورت 0 (درست یادم نیست) 1 بشه
آیا اینجا هم باید همین کار انجام بشه؟
ولی تو برنامه این کار نشده
اگه کسی برنامه آقای پوریا را کار کرده
لطفا منو راهنمایی کنه
:(

sadmonew
21-04-2012, 23:59
:(:(:(
چرا هیشکی به داد من نمیرسه آخه؟
cry::
برد من development lpc1768 هست من طبق برنامه آقای پوریا lcd گرافیکی تاچ خود برد را باز کردم و با پین هدر به lcd کاراکتری 2*16 وصل کردم
همه پایه ها را به پورت 2 وصل کردم
e به پین 2
rw به پین 3
rs به پین 1
db4 تا db7 به پین های 4 تا 7
فرکانس کاری میدونم باید m و n تو فایل system_lpc تغییر داده بشه
ولی چون نحوه تغییر دادنشو بلد نبودم فایل سیستم برنامه را کپی کردم
lcd را به 5 ولت وصل کردم
برنامه error نداره و فایل هگز هم روی ic ریخته میشه
ولی lcd هیچی نشون نمیده
ممکنه ایراد این باشه که تو برد از این پایه ها برای lcd تاچ استفاده شده؟
برای استفاده از led های خود برد باید پین 21 پورت 0 (درست یادم نیست) 1 بشه
آیا اینجا هم باید همین کار انجام بشه؟
ولی تو برنامه این کار نشده
اگه کسی برنامه آقای پوریا را کار کرده
لطفا منو راهنمایی کنه
:(
سلام مهندس
نارحتي نداره :0013:
لطفا پروژه اي كه خودتون ساختين رو اينجا قرار بدين. تا بهتر بتونيم مشكلتون رو حل كنيم.
شما از كدوم ورژن نرم افزار استفاده ميكنيد؟

leila_enginee
22-04-2012, 11:42
سلام
برد من development lpc1768 هست من طبق برنامه آقای پوریا lcd گرافیکی تاچ خود برد را باز کردم و با پین هدر به lcd کاراکتری 2*16 وصل کردم
همه پایه ها را به پورت 2 وصل کردم
E به پین 2
RW به پین 3
RS به پین 1
DB4 تا DB7 به پین های 4 تا 7
فرکانس کاری میدونم باید M و N تو فایل SYSTEM_LPC تغییر داده بشه
ولی چون نحوه تغییر دادنشو بلد نبودم فایل سیستم برنامه را کپی کردم
LCD را به 5 ولت وصل کردم
برنامه ERROR نداره و فایل هگز هم روی IC ریخته میشه
ولی LCD هیچی نشون نمیده
ممکنه ایراد این باشه که تو برد از این پایه ها برای LCD تاچ استفاده شده؟
برای استفاده از LED های خود برد باید پین 21 پورت 0 (درست یادم نیست) 1 بشه
آیا اینجا هم باید همین کار انجام بشه؟
ولی تو برنامه این کار نشده
اینم برنامه خودم:

ورژن keil من 4.10 هست

لطفا کمک کنین دارم افسردگی میگیرم:(:(

leila_enginee
22-04-2012, 11:48
یه برنامه lcd دیگه که کتابخونه اش فرق میکنه هم دارم
ولی این یکی تو خود برنامه error میده
اگه به این هم یه نگاه بکنید خیلی ممنون میشم
میبخشیدا :mrgreen:
اینم فایلش:

pswin
22-04-2012, 23:49
LCD را به 5 ولت وصل کردم
اين LCD با 3.3 ولت كار ميكنه. احتمالا LCD رو سوزونديد.

براي اطمينان از درست بستن مدارتون اول با jimbo كه eca معرفي كرده تستش كنيد اگر جواب داد بريد سراغ كدينگ. داخل تاپيك زير هم برنامه راه اندازي وجود داره كه من براي اولين بار از اون استفاده كردم و نتيجه گرفتم:

You can see links before reply

موفق باشيد.

leila_enginee
23-04-2012, 09:58
اين LCD با 3.3 ولت كار ميكنه. احتمالا LCD رو سوزونديد.

براي اطمينان از درست بستن مدارتون اول با jimbo كه eca معرفي كرده تستش كنيد اگر جواب داد بريد سراغ كدينگ. داخل تاپيك زير هم برنامه راه اندازي وجود داره كه من براي اولين بار از اون استفاده كردم و نتيجه گرفتم:

N96 LCD (You can see links before reply)

موفق باشيد.


:sa::sa:
فکر کنم درست پبام منو نخونده باشین
من میخوام lcd کاراکتری راه بندازم که همیشه با 5 ولت کار کرده:sa:
و نه lcd تاچ cry::cry::

esi_52000
23-04-2012, 12:29
:sa::sa:
فکر کنم درست پبام منو نخونده باشین
من میخوام lcd کاراکتری راه بندازم که همیشه با 5 ولت کار کرده:sa:
و نه lcd تاچ cry::cry::

سلام.شما برای درایو ال سی دی از لایبری زیر استفاذه کنین جواب میگیرین.
تغذیه ال سی دی رو حتما 5 ولت بدین اما سایر پایه ها رو مستقیم به میکرو وصل کنین.

esi_52000
24-04-2012, 02:20
سلام به همه دوستان گرامی .خداییش من فکر میکردم شاید چنتا از دوستان کمک کنن و بقیه قسمتا رو هم راه بندازیم .اما گویا کسی قرار نیست زکات علمش رو بده.انشالله هر چه زوذتر قسمت پورت سریال رو شروع میکنم.ولی خدایی اصلا پایه نیستین دوستان

pumper
30-04-2012, 11:06
پایه هستیم اما نه این که فقط دو نفر پایه واسه یه صندلی هم حداقل چهار تا پایه لازمه.

به هر حال این هم آموزش gpdma که قولشو داده بودم:
این همه دانلود و فقط چهارتا تشکر ؟
بابا شما دیگه چقدر خسیسید.:(

esi_52000
30-04-2012, 14:30
پایه هستیم اما نه این که فقط دو نفر پایه واسه یه صندلی هم حداقل چهار تا پایه لازمه.

به هر حال این هم آموزش gpdma که قولشو داده بودم:

سلإم رفیق خوبی دإدإش.بإهإت موإفقم عزیز .ولی بزإر إینبإر من و شمإ بکإریم و دیگرإن بخورن
ممکنه دوستإن کم لطفی کنن إمإ إون بإلإسری حتمإ حوإسش هست دإدإش.إلبته إگه موإفقی میتونیم إز إین به بعد إطلإعإت رو بإ هم مبإدله کنیم بدون إینکه بقیه ببینن.........:mrgreen::mrgreen::mrgreen::mrg reen:نظر بقیه دوستإن چیههههههههههههههههه:0013::0013: :0013::0013::0013::0013::0013::0013:

pumper
01-05-2012, 17:32
نه به نظرم همینجوری خوبه.

Shapour_Ardebil
13-05-2012, 21:12
به نظرم برادران عزیز خسته شدند و دیگر خبری نیست و زکات علم بعضی از ما ها هم همین قدر بود :x که خود پرداخت نمودند و تنها گلایه اینکه برادر عزیز و گرامیم آقای اسماعیل طاهری را هم دلسرد کردند :hi: پس بیخودی لااقل روزی 1 بار سر نزنیم :sa: باز هم تشکر میکنم من که تازه میخواستم آرم را شروع کنم لااقل به لطف شما استارت زدم :wink: الباقی ......

smahdy
18-05-2012, 18:16
سلام داداشیا
آقا ما مشتاقانه مطالب شما رو دنبال می کنیم
منتطر ادامه آموزشاتون هستم
ممنون

esi_52000
18-05-2012, 20:23
سلام داداشیا
آقا ما مشتاقانه مطالب شما رو دنبال می کنیم
منتطر ادامه آموزشاتون هستم
ممنون

شمإ لطف دإرین عزیز.دإدإشم مإ دإریم آموزش هإ رو در یک تإپیک جدید به إسم(لإیبری هإ نوشته شده برإی 1768 )إدإمه میدم به إون پست مرإجعه کنین

esi_52000
03-07-2012, 19:48
سلإم به همه دوستإن .بعد مدتهإ دوبإره وقت آزإد پیدإ کردم و میخوإم قسمتإی بإقی مونده رو رإه بندإزم.
إلبته بإ کمک دوستإن .حیف إین پست بیکإر بمونه .إلبته إین بإر میخوإم cmsis میکروی lpc1313 رو هم توی همین پست قرإر بدم .موإفقإن و مخإلفإن عزیز نظر بدن کإر درستی هست یإ یه پست دیگه بزنیم

mahdi74
03-07-2012, 22:51
.إلبته إین بإر میخوإم cmsis میکروی lpc1313 رو هم توی همین پست قرإر بدم .موإفقإن و مخإلفإن عزیز نظر بدن کإر درستی هست یإ یه پست دیگه بزنیم


سلام دوست عزیز ما منتظر آموزشهای خوب شما هستیم.
منم میخوام lpc1313 رو شروع کنم .
البته موضوع پست "تشریح کامل دستورات cmsisبرای lpc1768" هست .


به نظر من اگر دستوراتش با هم اختلاف داره میتونید تو پست جداگانه قرار بدید .
ولی هر جور خودتون مایل بودید.
به هر حال از کار خوبتون ممنونیم ..:wink:

mahdi74
06-07-2012, 12:25
با سلام جناب طاهری
شما چندین پست قبل فرمودید


مهندس do loop .تمام مطالبی که تا الان گفتم کلا توی این محیط قابل تست هستش و راستش رو بخواهی
بر اساس همین نرم افزار دارم مطالب رو میگم.
داداش نگران آموزش نباش , اونقدر کار کردن باهاش راحته که 2 سوته یاد میگیری.
فقط یه نکته ی کلیدی :
دوستان بایستی حتما یک فایل gcc هم از سایت coocox دانلود بشه تا بتونید برنامه رو کامپایل کنین
این موضوع 2 روز منو گرفتار کرده.یا علی

حالا این فایل GCC رو من تو سایت COOCOX پیدا نکردم
میشه لطفا بگید از کدوم قسمت میتونم دانلودش کنم
یا لینک دانلودش رو برام بگذارید .
من coide رو دانلود کردم همونجوری که شما گفتید چیز خوبیه فقط نتونستم compile کنم موقع کمپایل کردن یک پنجره ای باز میشه و مسیر TOOLCAHIN PATH رو میخواد فکر کنم مشکل مال همین gcc باشه درسته ؟

sadmonew
06-07-2012, 12:38
من coide رو دانلود کردم همونجوری که شما گفتید چیز خوبیه فقط نتونستم compile کنم موقع کمپایل کردن یک پنجره ای باز میشه و مسیر TOOLCAHIN PATH رو میخواد فکر کنم مشکل مال همین gcc باشه درسته ؟
سلام مهندس
بله اون پنجره موقعي مياد كه مسير Toolchain يا همون كامپايلر، واسه COIDE مشخص نشده نباشه.
اينم لينك دانلود:
You can see links before reply

mahdi74
06-07-2012, 12:48
جناب محمدی متشکرم که سریع جواب دادید
حالا این gcc که با coide کار کنه رو از کجا میتونم دانلود کنم چون من یک toolchain بنام yagarto دانلود کردم ولی coide اونو نمیشناسه .
شایدم من بلد نیستم درست نصبش کنم .

mzarkoob
06-07-2012, 12:55
حالا این فایل GCC رو من تو سایت COOCOX پیدا نکردم
میشه لطفا بگید از کدوم قسمت میتونم دانلودش کنم
یا لینک دانلودش رو برام بگذارید .

صفحه دانلود:
Free ARM Cortex M3 and Cortex M0 IDE (You can see links before reply)
لینکش در این صفحه است GCC ARM Embedded (You can see links before reply)
این باید دانلود بشه: arm-none-eabi-gcc-4_6-20111208.exe (You can see links before reply)

soodi
06-07-2012, 14:00
سلام

مشتاقانه منتظر آموزش های شما هستیم
به خصوص که اگر مثال هم بزنید که عالی میشه
آموزش های شما خیلی ساده و روان هست برای همین همه یاد میگیرن ، خیلی خیلی ازتون ممنونم
الان کامپایلر Coide رو دانلود کردم
می خواهم با سیمولاتور آموزش هایتان را دنبال کنم
لطفا ادامه بدید ، واقعا این CMSIS خیلی عالی هست

esi_52000
07-07-2012, 12:29
سلإم به همه دوستإن خوبم.
إلوعده وفإ .
إینم آموزش قسمت i2c میکروی lpc 1768 که توی إین قسمت هیچ تفإوتی بإ 1313 ندإره .
دوستإن إگه سوإلی دإشتین من در خدمتم.توی پست بعد إنشإلله پورت سریإل رو شروع میکنیم.
رإستی إگه زحمتی نیست إگه خوشتون إومد یه دعإی خیر وإسه مإ بکنین ممنون میشم.(دمتون گرم دوستإن )

Mortezai
23-07-2012, 20:48
سلام به همه دوستان و اساتید عزیز

من میخواستم بدونم دقیقا برای ارسال و دریافت یک عدد مثلا 32 بیت روش ارسال به spi در مود مستر توی 1768 با استفاده از توابع cmsis چطور هست ؟؟

با تشکر

esi_52000
25-07-2012, 10:41
سلام به همه دوستان و اساتید عزیز

من میخواستم بدونم دقیقا برای ارسال و دریافت یک عدد مثلا 32 بیت روش ارسال به spi در مود مستر توی 1768 با استفاده از توابع cmsis چطور هست ؟؟

با تشکر

سلام داداشم.شما توی مد spi هایتا میتونی 16 بیت داده رو ارسال کنی .اما اگر داده رو توی 2 واحد 16 بیتی قرار بدی میتونی ارسالش کنی

Mortezai
25-07-2012, 14:40
سلام داداشم.شما توی مد spi هایتا میتونی 16 بیت داده رو ارسال کنی .اما اگر داده رو توی 2 واحد 16 بیتی قرار بدی میتونی ارسالش کنی

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

مثلا متغیر unit16_t sp_send برای ارسال

و متغیر unit16_t sp_recieve برای دریافت

با تشکر

saeidhp
25-07-2012, 15:02
آقای طاهری چرا دیگه آموزشو ادامه نمیدید ؟

مطالب به خوبی و کاربردی نوشتید مطمئن باشید هرکی میخونه دعا میکنه لطفا به کارتون با قدرت ادامه بدید

esi_52000
27-07-2012, 14:21
سلام ممنون از جوابتون
لطفا اگه ممکنه روش فرستادن و گرفتن رو بصورت کد بنویسید

مثلا متغیر unit16_t sp_send برای ارسال

و متغیر unit16_t sp_recieve برای دریافت

با تشکر

سلام دوست عزیز.شرمنده که من این چند روزه زیاد به اینترنت دسترسی نداشتم و نمیتونستم جواب بدم .یه مثال براتون گذاشتم تا انشالله مشکلتون حل بشه



SPI_DATA_SETUP_Type SpiData;
SPI_CFG_Type spicfg;
unsigned short int data_transfer[2];
SPI_ConfigStructInit(&spicfg);
spiData.tx_data=data_transfer;
spiData.rx_data=NULL;
spiData.length=2;
SPI_ReadWrite(LPC_SPI,&spiData,SPI_TRANSFER_POLLING);


انشالله که مشکل حل بشه با این دستورات.اگه نشد من در خدمتتونم

esi_52000
27-07-2012, 14:29
آقای طاهری چرا دیگه آموزشو ادامه نمیدید ؟

مطالب به خوبی و کاربردی نوشتید مطمئن باشید هرکی میخونه دعا میکنه لطفا به کارتون با قدرت ادامه بدید

از لطف شما و بقیه دوستان واقعا ممنونم داداشم.
اگه توجه کرده باشین خیلی از قسمتها راه اندازی شده و فقط 4 یا 5 قسمت دیگه مونده که اونها رو هم دارم آماده میکنم .انشالله قسمت بعدی ژورت سریاله.اما این قسمت اونقده مطلب داره که چند روز دیگه طول میکشه داداشم.کاش شما هم کمکی میکردین و یه قسمت رو راه مینداختین دوست عزیزم.

esi_52000
27-07-2012, 14:30
آقای طاهری چرا دیگه آموزشو ادامه نمیدید ؟

مطالب به خوبی و کاربردی نوشتید مطمئن باشید هرکی میخونه دعا میکنه لطفا به کارتون با قدرت ادامه بدید

از لطف شما و بقیه دوستان واقعا ممنونم داداشم.
اگه توجه کرده باشین خیلی از قسمتها راه اندازی شده و فقط 4 یا 5 قسمت دیگه مونده که اونها رو هم دارم آماده میکنم .انشالله قسمت بعدی پورت سریاله.اما این قسمت اونقده مطلب داره که چند روز دیگه طول میکشه داداشم.کاش شما هم کمکی میکردین و یه قسمت رو راه مینداختین دوست عزیزم. مثلا قسمت dac.

esi_52000
27-07-2012, 14:44
با توجه به مطالب کاملی که در این پست در مورد راه اندازی قسمتهای مختلف lpc 1768 گفته شده کاش مسولین محترم سایت زحمت میکشیدن این پست رو به قسمت پستای کاربردی پین میکردن تا همیشه در دسترس دوستان باشه.ممنون

Mortezai
27-07-2012, 14:47
سلام دوست عزیز.شرمنده که من این چند روزه زیاد به اینترنت دسترسی نداشتم و نمیتونستم جواب بدم .یه مثال براتون گذاشتم تا انشالله مشکلتون حل بشه



spi_data_setup_type spidata;
spi_cfg_type spicfg;
unsigned short int data_transfer[2];
spi_configstructinit(&spicfg);
spidata.tx_data=data_transfer;
spidata.rx_data=null;
spidata.length=2;
spi_readwrite(lpc_spi,&spidata,spi_transfer_polling);

انشالله که مشکل حل بشه با این دستورات.اگه نشد من در خدمتتونم





دوست عزیز
خیلی ممنون از کمکت

فقط اگه زحمتی نیست کد مربوط به دریافت رو هم بزارید فکر کنم این مورد فقط برای ارسال باشه

با تشکر فراوان

sadmonew
27-07-2012, 15:02
با توجه به مطالب کاملی که در این پست در مورد راه اندازی قسمتهای مختلف lpc 1768 گفته شده کاش مسولین محترم سایت زحمت میکشیدن این پست رو به قسمت پستای کاربردی پین میکردن تا همیشه در دسترس دوستان باشه.ممنون
سلام مهندس طاهري گل
انجام شد.
موفق باشيد.

esi_52000
27-07-2012, 19:38
سلام مهندس طاهري گل
انجام شد.
موفق باشيد.

سلام مهندس جان .خیلی ممنونم داداشم.اینطوری دسترسی دوستان به این پست هم سریعتر انجام میشه.دستتون دردنکنه داداشم

esi_52000
27-07-2012, 19:45
برای دریافت خالی فقط کافیه قسمت spi_data.tx=NULL قرار بگیره .یعنی بنویسی

<div align="left">

SPI_DATA_SETUP_Type SpiData;
SPI_CFG_Type spicfg;
unsigned short int data_reciver[2];
SPI_ConfigStructInit(&spicfg);
SPI_Init(LPC_SPI,&spicfg);
spiData.tx_data=NULL;
spiData.rx_data=data_reciver;
spiData.length=2;
SPI_ReadWrite(LPC_SPI,&spiData,SPI_TRANSFER_POLLING);
برای ارسال و دریافت هم زمان هم میتونید بنویسسید



SPI_DATA_SETUP_Type SpiData;
SPI_CFG_Type spicfg;
unsigned short int data_reciver[2],data_transfer[2];
SPI_ConfigStructInit(&spicfg);
SPI_Init(LPC_SPI,&spicfg);
spiData.tx_data=data_transfer;
spiData.rx_data=data_reciver;
spiData.length=2;
SPI_ReadWrite(LPC_SPI,&spiData,SPI_TRANSFER_POLLING);

Mortezai
28-07-2012, 06:31
سلام
از پاسختون ممنونم

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


چرا از دستور spi_send_data و یا spi_recieve_data استفاده نمیکنیم؟؟

و دوم اینکه برای دریافت چرا spiData.rx_data=data_reciver
استفاده میشه و برعکس نمینویسیم؟ یعنی data_reciever=spidata.rx_data
مگر نه اینکه ما میخواهیم یک مقدار رو از بافر بخونیم و در متغییر خودمون بریزیم؟!
همین موضوع هم من رو کمی گیج کرده و در مثالهای خود فیلیپس هم این روش استفاده شده !!


با تشکر فراوان

esi_52000
29-07-2012, 01:24
سلام
از پاسختون ممنونم

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


چرا از دستور spi_send_data و یا spi_recieve_data استفاده نمیکنیم؟؟

و دوم اینکه برای دریافت چرا spiData.rx_data=data_reciver
استفاده میشه و برعکس نمینویسیم؟ یعنی data_reciever=spidata.rx_data
مگر نه اینکه ما میخواهیم یک مقدار رو از بافر بخونیم و در متغییر خودمون بریزیم؟!
همین موضوع هم من رو کمی گیج کرده و در مثالهای خود فیلیپس هم این روش استفاده شده !!


با تشکر فراوان


ببینید دوست عزیز spiData.rx_data در حقیقت یک اشاره گر به بافر دریافت شماست.
شما در حقیقت زمانی که دارین متغیر spiData رو از نوع SPI_DATA_SETUP_Type معرفی میکنین دارین اشاره گری از نوع STRUCT رو تعریف میکنین که به یک آرایه جهت دریافت و یک آرایه جهت ارسال
اشاره میکنه.من نمی دونم شما تا چه حد به زبان C آشنایی دارین(خدایی من قصد جسارت ندارما.من خودم جوجه برنامه نویسم داداشم).اما اگه بخواهین به صورت کامل با مبحث اشارهگر ها آشنا بشین به منابع زبان سی مراجعه کنین اینن مبحث کامل براتون حل میشه.

aminnima2
29-07-2012, 01:25
سلام
برای من سوال شده چرا دوستان با iar کار نمیکنن
تنها دلیلی که میگن نبود نرم افزار ه اما با یه سرچ سطحی اخرین ورژنش گیر میاد

iar کامپایلریه که تمام تراشه ها رو پشتیبانی میکنه و بهترین کد رو داره
قیمتش هم که در مقایسه با بقیه کامپایلر ها خیلی بالاتره و این به خاطر قدرتشه

esi_52000
29-07-2012, 01:37
سلام
برای من سوال شده چرا دوستان با iar کار نمیکنن
تنها دلیلی که میگن نبود نرم افزار ه اما با یه سرچ سطحی اخرین ورژنش گیر میاد

iar کامپایلریه که تمام تراشه ها رو پشتیبانی میکنه و بهترین کد رو داره
قیمتش هم که در مقایسه با بقیه کامپایلر ها خیلی بالاتره و این به خاطر قدرتشه

سلام دوست عزیز.
بحثایی که تا حالا مطرح شده به هیچ کامپایلر خاصی وابسته نیست و شما با هر کامپایلری بخوایین کار کنین اگه قصد استفاده از cmsis رو داشته باشین بایستی با همین دستورات برنامه بنویسین.از طرفی کامپایلر هایی مثل iar از میکرو هایی پشتیبانی میکنن که خیلی از اونا تا 100 سال آینده هم وارد ایران نمیشن و اصلا نیازی نیست واسه کار با کرتکس شما برین و با کامپایلری با اون گستردکی کار کنین.من خودم با coide کار میکنم که فقط از cortex m پشتیبانی میکنه و کاملا هم راضی هستم .بقیه دوستان هم اکثرا از keil استفاده میکنن.بهتر وارد بحث کامپایلر نشیم عزیز

Mortezai
29-07-2012, 14:24
ببینید دوست عزیز spiData.rx_data در حقیقت یک اشاره گر به بافر دریافت شماست.
شما در حقیقت زمانی که دارین متغیر spiData رو از نوع SPI_DATA_SETUP_Type معرفی میکنین دارین اشاره گری از نوع STRUCT رو تعریف میکنین که به یک آرایه جهت دریافت و یک آرایه جهت ارسال
اشاره میکنه.من نمی دونم شما تا چه حد به زبان C آشنایی دارین(خدایی من قصد جسارت ندارما.من خودم جوجه برنامه نویسم داداشم).اما اگه بخواهین به صورت کامل با مبحث اشارهگر ها آشنا بشین به منابع زبان سی مراجعه کنین اینن مبحث کامل براتون حل میشه.
متشکرم دوست عزیز
دقیقا درست میگین این بر میگرده به ناشی بودن من و عدم تسلط به c من بیشتر با vb و basic کار کردم .

shayanmelody
31-07-2012, 02:14
:hi:
لطفا يكي از دوستان بگه چطوري بايد با اين استراكچر كار كنم ؟




/************************************************** ******************//**
* @brief UART Configuration Structure definition
************************************************** ********************/
typedef struct {
uint32_t Baud_rate; /**< UART baud rate */
UART_PARITY_Type Parity; /**< Parity selection, should be:
- UART_PARITY_NONE: No parity
- UART_PARITY_ODD: Odd parity
- UART_PARITY_EVEN: Even parity
- UART_PARITY_SP_1: Forced "1" stick parity
- UART_PARITY_SP_0: Forced "0" stick parity
*/
UART_DATABIT_Type Databits; /**< Number of data bits, should be:
- UART_DATABIT_5: UART 5 bit data mode
- UART_DATABIT_6: UART 6 bit data mode
- UART_DATABIT_7: UART 7 bit data mode
- UART_DATABIT_8: UART 8 bit data mode
*/
UART_STOPBIT_Type Stopbits; /**< Number of stop bits, should be:
- UART_STOPBIT_1: UART 1 Stop Bits Select
- UART_STOPBIT_2: UART 2 Stop Bits Select
*/
} UART_CFG_Type;



اگه يه مثال با تنظيمان معمول پورت سريال هم تهش بزاري كه ديگه خيلي بيشتر لطف ميكنين
كارم فوريه و لنگم :(

esi_52000
31-07-2012, 15:16
سلام مهندس شایان.این مطلبی که گذاشتین برای پیکربندی پورت سریال شماست.من مطالب آموزشی اون رو دارم آماده میکنم و تا یه مدت دیگه میزارم توی همین فروم.اما واسه اینکه کارتون ران بیفته میتونید از قسمت زیر استفاده کنین.



unsigned char data_transfer[4],data_recive[4];
UART_CFG_Type uartcfg متغییری برای پیکر بندی پورت سریال
UART_FIFO_CFG_Type fifocfg متغییری برای پیکربندی فیفو پورت سریال
uartcfg.Baud_rate=9600 نرخ ارسال 9600 بیت بر ثانیه
uartcfg.Parity=UART_PARITY_NONE یعتی بیت توازن رو لازم ندارم و غیر فعال باشه
uartcfg.Databits=UART_DATABIT_8 ارسال به صورت 8 بیتی باشه .
uartcfg.Stopbits=UART_STOPBIT_1 در آخر ارسال تنها یک بیت پایان ارسال گردد .

حالا باید متغییر ی که تعریف کردی رو به یکی از پورتهای سریال نسبت بدی.مثلا پورت 0
UART_Init(LPC_UART0,&uartcfg);

برای پیکربندی فیفو از دستور زیر استفاده کنین
UART_FIFOConfigStructInit(&fifocfg);
حالا باید پایه ارسال پورت رو فعال کنین
UART_TxCmd(LPC_UART0,ENABLE);
حالا برای ارسال یک آرایه 4 بایتی بنویسین
UART_Send(LPC_UART0,data_transfer,4,BLOCKING);
:باعث میشه میکرو داده قبلی رو کامل ارسال کنه و بعد بره سراغ ارسال داده بعدBLOCKING
برای دریافت داده هم بنویسین
UART_Recive(LPC_UART0,data_recive,4,BLOCKING)

برای دریافت و ارسال با وقفه خیلی مطلب داره که انشالله توی آموزش کامل توضیح میدم
انشالله بدردتون بخوره این مطالب .




ب

shayanmelody
31-07-2012, 16:13
سلام مهندس شایان.این مطلبی که گذاشتین برای پیکربندی پورت سریال شماست.من مطالب آموزشی اون رو دارم آماده میکنم و تا یه مدت دیگه میزارم توی همین فروم.اما واسه اینکه کارتون ران بیفته میتونید از قسمت زیر استفاده کنین.



unsigned char data_transfer[4],data_recive[4];
uart_cfg_type uartcfg متغییری برای پیکر بندی پورت سریال
uart_fifo_cfg_type fifocfg متغییری برای پیکربندی فیفو پورت سریال
uartcfg.baud_rate=9600 نرخ ارسال 9600 بیت بر ثانیه
uartcfg.parity=uart_parity_none یعتی بیت توازن رو لازم ندارم و غیر فعال باشه
uartcfg.databits=uart_databit_8 ارسال به صورت 8 بیتی باشه .
Uartcfg.stopbits=uart_stopbit_1 در آخر ارسال تنها یک بیت پایان ارسال گردد .

حالا باید متغییر ی که تعریف کردی رو به یکی از پورتهای سریال نسبت بدی.مثلا پورت 0
uart_init(lpc_uart0,&uartcfg);

برای پیکربندی فیفو از دستور زیر استفاده کنین
uart_fifoconfigstructinit(&fifocfg);
حالا باید پایه ارسال پورت رو فعال کنین
uart_txcmd(lpc_uart0,enable);
حالا برای ارسال یک آرایه 4 بایتی بنویسین
uart_send(lpc_uart0,data_transfer,4,blocking);
:باعث میشه میکرو داده قبلی رو کامل ارسال کنه و بعد بره سراغ ارسال داده بعدblocking
برای دریافت داده هم بنویسین
uart_recive(lpc_uart0,data_recive,4,blocking)

برای دریافت و ارسال با وقفه خیلی مطلب داره که انشالله توی آموزش کامل توضیح میدم
انشالله بدردتون بخوره این مطالب .




ب







ممنون مهندس
منم همين كارا رو ميكردم ، اما كلي ارور ازم گرفت ،‌گفتم شايد اشتباه عمل كردم
كل پروژه رو ميزارم اگه وقت داري يه نگاه بهش بنداز

esi_52000
31-07-2012, 18:38
مهندس جان من خودم از coide استفاده میکنم و keil ندارم .اما من فایل main شما رو باز کردم و دیدم شما اصلا پینهای رپورت سریال رو برای ارسال و دریافت آماده نکردین.بایستی از لایبری pinsel استفاده کنین.اول برنامه هم باید حتما لایبری مربوط به clk , power رو فراخونی کنین .البته اگه coide دارین این برنامه رو توی اون اجرا کنین تا ارورهای واقعی رو بهتون بگه .شرمنده من با keil کار نکردم و زیاد وارد نیستم داداشم

راستی این خط رو هم حتما به برنامه اضافه کنین که من یادم رفته بود بنویسم



UART_FIFOConfig(LPC_UART2,&fifocfg);
;

shayanmelody
31-07-2012, 22:04
مهندس جان من خودم از coide استفاده میکنم و keil ندارم .اما من فایل main شما رو باز کردم و دیدم شما اصلا پینهای رپورت سریال رو برای ارسال و دریافت آماده نکردین.بایستی از لایبری pinsel استفاده کنین.اول برنامه هم باید حتما لایبری مربوط به clk , power رو فراخونی کنین .البته اگه coide دارین این برنامه رو توی اون اجرا کنین تا ارورهای واقعی رو بهتون بگه .شرمنده من با keil کار نکردم و زیاد وارد نیستم داداشم

راستی این خط رو هم حتما به برنامه اضافه کنین که من یادم رفته بود بنویسم



UART_FIFOConfig(LPC_UART2,&fifocfg);
;




درسته مهندس ،‌نقش پين ها مشخص نشده بود ، اما دليلي بر ارور دادن تو كامپايل نيست.تو عمل كار نميكنه !
موقع كامپايل از متغيير هايي كه از دو نوع ساختار تعريف كردم ارور ميگيره
همچين اروري هم تو بخش rtc داشتم.فكر كنم بايد با coide هم يه تست بگيرم ببينم قضيه از كجاست

mzarkoob
02-08-2012, 20:53
با سلام
من تمام این پست های این قسمت را خوندم در نهایت گفتم یه جمع بندی تا الان داشته باشم.
اول اینکه تایپیک بسیار مفیدیه و به سایر دوستان توصیه می کنم ازش استفاده کنند.
مطالب حاشیه در آن زیاد مطرح شده برای همین اون قسمت هایی که برای راه اندازی آن شرحی داده شده را لینک می ذارم:
1- gpio به همراه وقفه آن ، در اینجا (You can see links before reply)
2- pinsell انتخاب پایه در اینجا (You can see links before reply)
3- تایمر RIT در اینجا (You can see links before reply)
لایبری ها و مثالهای خود nxp در اینجا (You can see links before reply) لینکشه
pdf مطالب گذشته در اینجا (You can see links before reply)
4- مد SPI در اینجا (You can see links before reply)
5- مد تایمر و کانتر قسمت1 (You can see links before reply) ، قسمت2 (You can see links before reply) ، قسمت3 (You can see links before reply)
6- مد GODMA در اینجا (You can see links before reply)
7- مد I2C در اینجا (You can see links before reply)


آقای طاهری فرمودند مدهای ADC، SYSTICK, RTC, WDT هم هست که من پیدا نکردم!!

soodi
03-08-2012, 00:51
سلام

میگم اگر ممکنه adc و usart و isp هم بزارید

esi_52000
03-08-2012, 01:42
با سلام
من تمام این پست های این قسمت را خوندم در نهایت گفتم یه جمع بندی تا الان داشته باشم.
اول اینکه تایپیک بسیار مفیدیه و به سایر دوستان توصیه می کنم ازش استفاده کنند.
مطالب حاشیه در آن زیاد مطرح شده برای همین اون قسمت هایی که برای راه اندازی آن شرحی داده شده را لینک می ذارم:
1- gpio به همراه وقفه آن ، در اینجا (You can see links before reply)
2- pinsell انتخاب پایه در اینجا (You can see links before reply)
3- تایمر RIT در اینجا (You can see links before reply)
لایبری ها و مثالهای خود nxp در اینجا (You can see links before reply) لینکشه
pdf مطالب گذشته در اینجا (You can see links before reply)
4- مد SPI در اینجا (You can see links before reply)
5- مد تایمر و کانتر قسمت1 (You can see links before reply) ، قسمت2 (You can see links before reply) ، قسمت3 (You can see links before reply)
6- مد GODMA در اینجا (You can see links before reply)
7- مد I2C در اینجا (You can see links before reply)


آقای طاهری فرمودند مدهای ADC، SYSTICK, RTC, WDT هم هست که من پیدا نکردم!!






سلام مهندس مهدی .من تمام این قسمتهایی که فرمودین رو بلافاصله بعد از تست رو برد خودم گداشته بودم برای دوستان .اگه لطف کننین و دوباره نگاه کنین حتما پیدا میکنین .
در جواب دوست خوبم آقای soodi هم باید بگم که قسمت adc رو قبلا گذاشتم و قسمت
پورت سریال چون مطالبش خیلی زیاده یه مدت طول میکشه تا آماده بشه.

راستی دوستان در حال جمع آوری مطالب هستم تا تمام قسمتها رو در قالب یه کتاب انشالله
چاپ کنم . به نظرتون استقبال میشه دوستان ؟

mzarkoob
03-08-2012, 06:24
من تمام این قسمتهایی که فرمودین رو بلافاصله بعد از تست رو برد خودم گداشته بودم برای دوستان .اگه لطف کننین و دوباره نگاه کنین حتما پیدا میکنین .
در جواب دوست خوبم آقای soodi هم باید بگم که قسمت adc رو قبلا گذاشتم
سلام
آقا نذاشتی من نگاه کردم :sa: اگه هست خوب لینک بدید ... فقط اینجا (You can see links before reply)گفته شده میذارید!

soodi
03-08-2012, 13:24
سلام

اگر تمامی مطالب شما ساماندهی شده بشه و فهرست بندی و ... انجام بشه
می توانید در قالب کتاب یا pdf به فروش برسونید ، به نظر من به صورت pdf در بیارید و به فروش برسونید
مطمئن باشید که با فروش بسیار بالایی مواجه می شوید من هم اولین نفری هستم که ازتون می خرم

mzarkoob
04-08-2012, 16:38
قسمت پورت سریال چون مطالبش خیلی زیاده یه مدت طول میکشه تا آماده بشه.
سلام
بله مطالب پورت سریال زیاده. برای شروع من تمام دستورات را فعلا میذارم اینجا:

uart_set_divisors(LPC_UART_TypeDef *UARTx, uint32_t baudrate)

UART_ConfigStructInit(UART_CFG_Type *UART_InitStruct)

UART_Init(LPC_UART_TypeDef *UARTx, UART_CFG_Type *UART_ConfigStruct)

UART_SendByte(LPC_UART_TypeDef* UARTx, uint8_t Data)

UART_ReceiveByte(LPC_UART_TypeDef* UARTx)

UART_Send(LPC_UART_TypeDef *UARTx, uint8_t *txbuf, uint32_t buflen, TRANSFER_BLOCK_Type flag)

UART_Receive(LPC_UART_TypeDef *UARTx, uint8_t *rxbuf, \uint32_t buflen, TRANSFER_BLOCK_Type flag)

UART_IntConfig(LPC_UART_TypeDef *UARTx, UART_INT_Type UARTIntCfg, FunctionalState NewState)

UART_GetLineStatus(LPC_UART_TypeDef* UARTx)

UART_GetIntId(LPC_UART_TypeDef* UARTx)

UART_CheckBusy(LPC_UART_TypeDef *UARTx)

UART_FIFOConfigStructInit(UART_FIFO_CFG_Type *UART_FIFOInitStruct)

UART_FIFOConfig(LPC_UART_TypeDef *UARTx, UART_FIFO_CFG_Type *FIFOCfg)

UART_ABCmd(LPC_UART_TypeDef *UARTx, UART_AB_CFG_Type *ABConfigStruct, \FunctionalState NewState)

UART_ABClearIntPending(LPC_UART_TypeDef *UARTx, UART_ABEO_Type ABIntType)

UART_TxCmd(LPC_UART_TypeDef *UARTx, FunctionalState NewState)

UART_IrDAInvtInputCmd(LPC_UART_TypeDef* UARTx, FunctionalState NewState)

UART_IrDACmd(LPC_UART_TypeDef* UARTx, FunctionalState NewState)

UART_IrDAPulseDivConfig(LPC_UART_TypeDef *UARTx, UART_IrDA_PULSE_Type PulseDiv)

UART_DeInit(LPC_UART_TypeDef* UARTx)

iaun
05-08-2012, 23:28
#include "LPC13xx.h" /* LPC13xx definitions */
#include "timer16.h"
#include "clkconfig.h"
#include "gpio.h"
یکی اینها را توضیح بده لطفا ؟چرا بعضی وقتها فرق دارن؟
#include "lpc13xx_tmr.h"
#include "lpc13xx_syscon.h"
این چیه؟
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<6);

iaun
05-08-2012, 23:31
من با فایل هایی که اول برنامه می نویسیم مشکل دارم مثل اونایی که بالا گفتم لطفا کمک کنید
SYSCON_AHBPeriphClockCmd(SYSCON_AHBPeriph_GPIO, ENABLE);

iaun
05-08-2012, 23:34
از دستورات cmsis و کامپایلر coide خوشم امده ولی برای اول برنامه نویسی برای include ها مشکل دارم راهنمایی کنید لطفا؟

esi_52000
06-08-2012, 18:56
داداشم شما مشخص نکردین با چه قسمتی مشکل دارین .شما اول بفرمایین توی کدوم مبحث مشکل دارین تا بشه مشکل رو پیدا کرد

iaun
06-08-2012, 21:25
داداش با دستورات قبل از main برنامه نویسی مشکل دارم که با hnclude ها شروع میشه نمی فهممشون مثلا
[SystemCoreClockUpdate();][/#include "timer16.h"
#include "clkconfig.h"]
[extern volatile uint32_t timer16_0_counter;
extern volatile uint32_t timer16_1_counter;][/PHP]

iaun
06-08-2012, 21:28
[CLKOUT_Setup( CLKOUTCLK_SRC_MAIN_CLK );]
[/ LPC_SYSCON->SYSAHBCLKCTRL |= (1<<6);]
اینها را نمی فهمم لطفا یه توضیح کامل بدین برنامه نویسی c را مشکل ندارم

esi_52000
06-08-2012, 22:08
داداش با دستورات قبل از main برنامه نویسی مشکل دارم که با hnclude ها شروع میشه نمی فهممشون مثلا
[SystemCoreClockUpdate();][/#include "timer16.h"
#include "clkconfig.h"]
[extern volatile uint32_t timer16_0_counter;
extern volatile uint32_t timer16_1_counter;][/PHP]


این توابع که شما نوشتین مربوط به cmsis میکروی lpc1313 هستش .
برای درک کامل این توابع میبایست حتما به دیتاشیت میکرو یه نگاهی بندازین.
مطمئن باشین با اولین نگاه متوجه توابع مربوطه میشین

اما اگه قصدتون کار با lpc1768 هستش میتونید مطالب همین پست رو از اول مرور کنین .حتما مطالب مرربوط به تایمر ها رو پیدا میکنین.

asdfghj18184
26-08-2012, 19:07
سلام به همه دوستان واقعا خسته نباشد.دم همتون گرم به خصوص اسی جان که برای این پست خیلی زحمت کشده..................اما چرا یهو همه سرد شدن من مشتاقانه منتظر ادامه آموزش cims هستم بخصوص قسمت uart
راستی من با نرم افزار coide یه مشکل دارم اونم اینه که وقتی برنامه رو کامپایل می کنم این پیغامو میده دلیلش چیه:




BUILD FAILED
Could not launch C:\CooCox\CoIDE\bin\target_desc\arm-none-eabi-gcc: java.io.IOException: Cannot run program "C:\CooCox\CoIDE\bin\target_desc\arm-none-eabi-gcc" (in directory "C:\CooCox\CoIDE\workspace\tmel\Debug\obj"): CreateProcess error=2, The system cannot find the file specified
Total time: 1 second

esi_52000
27-08-2012, 12:57
سلام به همه دوستان واقعا خسته نباشد.دم همتون گرم به خصوص اسی جان که برای این پست خیلی زحمت کشده..................اما چرا یهو همه سرد شدن من مشتاقانه منتظر ادامه آموزش cims هستم بخصوص قسمت uart
راستی من با نرم افزار coide یه مشکل دارم اونم اینه که وقتی برنامه رو کامپایل می کنم این پیغامو میده دلیلش چیه:




BUILD FAILED
Could not launch C:\CooCox\CoIDE\bin\target_desc\arm-none-eabi-gcc: java.io.IOException: Cannot run program "C:\CooCox\CoIDE\bin\target_desc\arm-none-eabi-gcc" (in directory "C:\CooCox\CoIDE\workspace\tmel\Debug\obj"): CreateProcess error=2, The system cannot find the file specified
Total time: 1 second

سلام دئست عزیز و ممنون از ابراز محبتتون.
انشالله بقیه آموزشا به محض آماده شدن میرسه به دستتون.
در مورد مشکل کامپایلر تون باید بگم شما toolchin رو اضافه نکردین.شما فایل gcc رو در محل نصب coide کپی کنین و بعد نرم افزار رو باز کنین.از قسمت project گزینه select toolchin path رو انتخاب و مسیر رو بهش بدین تا کامپایلر فعال بشه

zoz_zozm
27-08-2012, 14:21
با تشکر از دوست عزیز اسی جان، ما منتظر سری بعدی آموزش های خوب شما هستیم. مخصوصا UART.
:hi::018::018::018::018::018::018::hi:

mahdi74
27-08-2012, 21:59
جناب طاهری
ما همه منتظر بقیه آموزشهای خوبتون هستیم

avr_rva
05-09-2012, 12:05
اسی بیسی (20)

esi_52000
05-09-2012, 19:00
اسی بیسی (20)
ما چاکر داش مجتبی و بقیه دوستان هستیم.شما همگی لطف دارین دوستان .ممنونم.مخصوصا داش مجتبی

kheiri.saeid
06-09-2012, 02:18
وای ببین چکار کردی اقا اسی
خدا خیرت بده انشااله

alamdar
27-10-2012, 20:17
چرا این تاپیک خاطره شده؟

دوستان آموزش ها در تاپیک دیگه ای دنبال میشه یا همه چیز نغطیل شده؟

کتابی که قرار بود چاپ کنید به کجا رسید؟


راستی منم لازم دونستم از آقای طاهری و دوستان دیگه که آموزش قرار دادند و یا لینک های کمکی و دسته بندی مطالب و ... تشکر کنم

ای کاش ادامه پیدا کنه

alamdar
27-10-2012, 20:34
این فایل (فیلم آمورشی) مفید رو هم برای کسانی که برای اولین بار میخوان کار با این کتابخونه رو داخل محیط Keil شروع کنند قرار میدم : (کم حجم ، مختصر و مفید)

You can see links before reply


منبع : NXP - دلـم می‌گیرد! وقتی از "تو" می‌نویسم و "همه" می‌خوانند به جز "تو"… (You can see links before reply)

samaneh43
15-11-2012, 15:28
سلام
واقعا خسته نباشید میگم ب شما.
خیلی زحمت کشیدید واسه این تاپیک
خواهش میکنم ادامه بدبد

rebia
20-11-2012, 13:24
منم از بچه هایی که برای این پست زحمت کشیدن ممنونم به خصوص آقا اسی گل. برای منم خیلی مفید بود.

samaneh43
17-12-2012, 20:52
سلام
کسی هست که برنامه coide رو با jlink پروگرم بکنه؟
من به مشکل برخوردم! کسی هست بتونه کمک کنه؟

shahrzad
18-12-2012, 22:38
بسیار بسیار سپاسگزارم از شما آقای طاهری
من که خیلی لذت بردم
خسته نباشید

mansoory
22-12-2012, 11:12
سلام به دوستان lpc کار.
تو چند روزی که از گفتن مطالب تایمر گذشته من منتظر بودم که ببینم کسی سوالی واسش پیش نمیاد .خداییش یعنی مطالب آسون بوده یا همه گفتن بیخیال این میکرو .؟آخه من 10 بار از روی این قسمتا خوندم تا فهمیدم چی به چیه.دوستان اگه مشکلی نیست من قسمت adc رو شروع کنم.یا اگه دوس دارین مثال بزنیم؟آخه بردlpc1768 منم رسیده و متونم مثال بگم.منتظرم دوستان :wink:


من هنوز تو gpio دارم دست و پا میزنم.

mansoory
22-12-2012, 12:29
ببخشید مثل اینکه خوب نوشته نشده
فایل زیر رو دانلود کنید بهتره دوستان
قدم بعدی کتابخونه ی pinsel هستش .البته اگه دوستان استقبال کنن. اونایی که مایلن ادامه بدم یه
یا علی مدد بگن .منتظرم.

ببخشید اسی جان یه سوالی دارم
Manual LPC1768 رو خوندم. 1768کلا 4 تا وقفه خارجی داره درسته؟ فقط میشه اون چهار تا رو روی هرپین که خواستیم ست کنیم. اگه بیشتر لازم شد تکلیف چیه؟ مثلا 16 تا وقفه خارجی لازم داشتم چیکار کنم؟

esi_52000
22-12-2012, 14:07
[QUOTE=mansoory;58573]ببخشید اسی جان یه سوالی دارم
Manual LPC1768 رو خوندم. 1768کلا 4 تا وقفه خارجی داره درسته؟ فقط میشه اون چهار تا رو روی هرپین که خواستیم ست کنیم. اگه بیشتر لازم شد تکلیف چیه؟ مثلا 16 تا وقفه خارجی لازم داشتم چیکار کنم؟[/QUOTE

سلام دوست عزیز.شما میتونین بیش تر از 40 تا اینتراپت خارجی رو روی پایه های 0 تا 31 پورت 0 و روی پایه های 0 تا 13 پورت 2 داشته باشین .تازه میتونین مشخص کنین که هر کدوم به چه لبه ای حساس باشه.پیشنهاد میکنم بخش gpio رو کامل بخونین .من در خدمتم عزیز

mansoory
23-12-2012, 09:46
اسی جان، این جمله که گفتید یعنی چی:
لازم اینم بگم که وقفه پورت میکرو روی وقفه خارجی 3 تنظیم شده.پس بایستی حتما اینم بنویسید که
NVIC_EnableIRQ(EINT3_IRQn);

روی وقفه خارجی 3!!!! وقفه خارجی 0 تا 2 چیه؟

mansoory
23-12-2012, 11:43
اسی جان اولا یا علی ! ثانیا برای اینکه کد هات درست نمایش داده بشن اونا رو بین تگ php که دکمش تو ویرایشگر هست بزار . مثل این ...

#include <lpc17xx_gpio.h>
//----------------------------------------------
void delay(void);
void eint3_irqhandler(void);
//----------------------------------------------
int main(void)
{
gpio_setdir(1,0xffffffff,1);
gpio_clearvalue(1,0xffffffff);
gpio_intcmd(0,0xffffffff,1);
nvic_enableirq(eint3_irqn);
while(1);
return 0;
}
//---------------------------------------------
void delay(void)
{
long int i;
for(i=0;i<400000;i++);
}
//---------------------------------------------
void eint3_irqhandler(void)
{
char esi;
for(esi=0;esi<32;esi++)
{
if(gpio_getintstatus(0,esi,1))
{
gpio_clearint(0,1<<esi);
gpio_setvalue(1,1<<esi);
delay();
gpio_clearvalue(1,1<<esi);
delay();
}
}
}

اسی جان یه سوال دیگه برای من پیش اومد:
الان شما دریک روال وقفه همه پین ها رو چک می کنید. نمیشه هر پین یه روال وقفه مجزا داشته باشه؟ مثل avr

mansoory
23-12-2012, 15:48
سلام. کتابخانه CMSIS در فایل lpc17xx_rit.c تابعRIT_TimerClearCmd رو نیاورده ولی در هدر فایل هست. این دستور کارش اینه که به تایمر دستور بده بلافاصله پس از اینکه مقدارش با مقدار PRESCALER برابرشد بصورت سخت افزاری تایمر رو صفر کنه.
لطفا این کد رو در فایل lpc17xx_rit.c اضافه کنید:


//************************************************** ****************************//
* @brief Enables setting to Clear Timer when it reaches to interval
* @param[in] RITx is RIT peripheral selected, should be: LPC_RIT
* @NewState New status, could be: ENABLE/DISABLE
************************************************** *****************************//
void RIT_TimerClearCmd(LPC_RIT_TypeDef *RITx, FunctionalState NewState)
{
CHECK_PARAM(PARAM_RITx(RITx));
CHECK_PARAM(PARAM_FUNCTIONALSTATE(NewState));

if(NewState==ENABLE)
{
RITx->RICTRL|=RIT_CTRL_ENCLR;
}
else
{
RITx->RICTRL&= ~RIT_CTRL_ENCLR;
}
}





نکته مهمش اینه که اگر از سرویس وقفه استفاده می کنید،در تابع وقفه باید پرچم وقفه رو بصورت دستی ریست کنید وگرنه بعد از اولین سر ریز تایمر تابع وقفه بصورت متوالی اجرا میشه:



void RIT_IRQHandler(void)
{
RIT_GetIntStatus(LPC_RIT);// This command will reset ISR Flag too
//Write your code here

}

mansoory
17-01-2013, 12:05
درباره غیرفعال کردن وقفه GPIO برای من یه سوال پیش اومده.

میدونیم که برای تعریف کردن وقفه یک پین از GPIO_CmdInt استفاده میشه که برای هر پین باید این دستورجداگانه نوشته بشه.
بعدش با دستور NVIC_EnableIRQ(EINT3_IRQn( وقفه های GPIO فعال میشه.
فرض کنید روی پورت صفر، برای پین 3 و5 وقفه تعریف کرده ایم. ولی حین برنامه در محلی لازم بشه که وقفه پین 3 موقتا غیرفعال بشه. راه حل چیه؟

mzarkoob
17-01-2013, 22:49
درباره غیرفعال کردن وقفه gpio برای من یه سوال پیش اومده.

میدونیم که برای تعریف کردن وقفه یک پین از gpio_cmdint استفاده میشه که برای هر پین باید این دستورجداگانه نوشته بشه.
بعدش با دستور nvic_enableirq(eint3_irqn( وقفه های gpio فعال میشه.
فرض کنید روی پورت صفر، برای پین 3 و5 وقفه تعریف کرده ایم. ولی حین برنامه در محلی لازم بشه که وقفه پین 3 موقتا غیرفعال بشه. راه حل چیه؟
سلام
در دستورات چیزی به ذهنم فعلا نمی رسه که این جور عمل کنه و شایدم چنین چیزی پیش بینی نشده ! اگه این جور باشه با رجیستر کارتون را راه بندازید.:0013:

hadiabdi
19-01-2013, 22:47
سلام دوستان من با تايمر و كپچر كار كردم ولي نتونستم تو مد كانتر ازش كار بكشم كسي ميتونه به من كمكي كنه نكته جالب اين هست كه تو حالت كپچر فقط تو كانال صفر كار ميكنه و كنال 1 اصلا كار نميكنه تو كامپايلر coide خيلي ممنون ميشم اگر كمك كنيد در اين زمينه

vahid.t
20-01-2013, 12:09
سلام اسی جان شرمنده من تازه ارم رو شروع کردم و با ارم اتمل دارم کار میکنم و طبق گفته خودتون نمی خوام از این میکرو به اون میکرو بپرم اگه لطف کنید و بگید cmsis برای ارم اتمل رو چطوری دانلود کنم ممنون می شم

esi_52000
20-01-2013, 17:55
سلام دوست خوبم. شما اگه از کامپایلر coide استفاده کنین دیگه نیاز به دانلود ندارین .چمن خودش داره.
البته اینم بگم cmsis فقط برای cortex هستش نه at91sam 7.

Amirkhan_0o0
20-01-2013, 23:00
سلام اسی جان می شه مرجع آموزشی رو که cmsis رو از اون ترجمه می کنید بگذارید؟
چون من می خوام motorpwm استفاده کنم و رجیستر نویسی برام سخت می شه

balabe
21-01-2013, 02:13
سلام ، یه سوال غیر فنی lcd 16*2 رو چجوری میشه با coide راه انداخت وقتی هدر های keil را add می کنم ارور می گیره لطفا منو راهنمایی کنید

mansoory
21-01-2013, 09:30
سلام
در دستورات چیزی به ذهنم فعلا نمی رسه که این جور عمل کنه و شایدم چنین چیزی پیش بینی نشده ! اگه این جور باشه با رجیستر کارتون را راه بندازید.:0013:

در رجیسترها هم گشتم. چیزی ندیدم که بتونه وقفه فعال شده gpio یکی از پینها رو غیرفعال کنه

mzarkoob
21-01-2013, 23:44
در رجیسترها هم گشتم. چیزی ندیدم که بتونه وقفه فعال شده gpio یکی از پینها رو غیرفعال کنه

LPC_GPIOINT->IO2IntEnF &= ~(1 << 3);

mzarkoob
21-01-2013, 23:53
سلام دوستان من با تايمر و كپچر كار كردم ولي نتونستم تو مد كانتر ازش كار بكشم
فکر کنم در مد کانتر نمی توان از دستورات cmsis استفاده کرد. جالبه که در فایل lpc17xx_timer.c هیچ جایی رجیستر :

LPC_TIM1->CTCR = 0x01; // set T/C for Counter Rising edge; استفاده نشده که از روی این بتونیم بفهمیم .

Amirkhan_0o0
22-01-2013, 22:37
سلام اسی جان می شه مرجع آموزشی رو که cmsis رو از اون ترجمه می کنید بگذارید؟
چون من می خوام motorpwm استفاده کنم و رجیستر نویسی برام سخت می شه
سلام جناب زرکوب با توجه به این که اسی جان احتمالا در حال درس خواندن برای امتحاناته شما نمی تونید راجع به سوالم کمکم کنید؟؟

mzarkoob
23-01-2013, 00:00
سلام جناب زرکوب با توجه به این که اسی جان احتمالا در حال درس خواندن برای امتحاناته شما نمی تونید راجع به سوالم کمکم کنید؟؟
سلام
مرجع آموزش من ندیدم. در هر کتابخونه ای اولش یه توضیحاتی داده که به جای این پارامترها چی بذارید. در سمپل ها هم از دستورات استفاده کرده که باید دید چطوری این کار را کرده. البته نقص و جای ابهام زیاد داره ...

Amirkhan_0o0
23-01-2013, 00:25
سلام
مرجع آموزش من ندیدم. در هر کتابخونه ای اولش یه توضیحاتی داده که به جای این پارامترها چی بذارید. در سمپل ها هم از دستورات استفاده کرده که باید دید چطوری این کار را کرده. البته نقص و جای ابهام زیاد داره ...
پس مثل پسر خوب برم سراغ رجیسترنویسی و از دیتاشیت بخونمش!!!
البته یه فایل هم درباره 2378 گذاشته بودید که هنوز نخوندمش. برای شروع باید از متن شما شروع کنم.
ممنون

mehdi_nxp
05-02-2013, 14:57
سلام به همگی :hi:
ضمن تشکر از آقای طاهری.
اگه امکانش هست در مورد تنظیم PLL در کمپایلر CoIDE برای LPC1768 یه توضیحی بدید.aa)

mzarkoob
05-02-2013, 22:48
اگه امکانش هست در مورد تنظیم PLL در کمپایلر CoIDE برای LPC1768 یه توضیحی بدید.aa)
سلام
اینا که دیدم یاد یه چیزی افتادم. جالبه در هدر lpc17xx_clkpwr.c دستورات برای تنظیم pll و انتخاب منبع کلاک نبود ! پس کجاست؟

zmxsoft
05-02-2013, 23:45
سلام دوستان. من خیلی تازه کارم. تازه برد آموزشی به دستم رسیده و شروع کردم. مساله ای که باهاش مواجه هستم اینه که توابعی که اینجا معرفی شده اصلا هیچ شباهتی به مثالهای همراه برد آموزشی نداره. آیا ورژن متفاوته؟