سلام
اینم کد تبدیل شده از مثال شرکت nxp برای میکروهای avr
فکر کنم بهترین و کاملترین نمونه برای میکروهای avr باشه
سلام
اینم کد تبدیل شده از مثال شرکت nxp برای میکروهای avr
فکر کنم بهترین و کاملترین نمونه برای میکروهای avr باشه
پروژه های مهم من در ایران میکرو:
" انتقال اطلاعات با SIM900 " ، " آموزش پورت USB " ، " راه اندازی MFRC522 " ، " راه اندازی SLE4442 " ، ""
میشه این برنامه رو واسه راه اندازی با usart تغییر داد؟
باتشکر
میشه تغییر داد. باید در توابع خواندن و نوشتن رجیسترها تغییرات بدین. همون توابعی که spi دارن.
پروژه های مهم من در ایران میکرو:
" انتقال اطلاعات با SIM900 " ، " آموزش پورت USB " ، " راه اندازی MFRC522 " ، " راه اندازی SLE4442 " ، ""
با عرض سلام و خسته نباشید
اقا من این پروژه رو اجرا کردم ، چند تا مشکل داشتم :
اول اینکه یه وارنینگ میده که در تابع pcfhalt ، متغیر status را استفاده ای ازش نکردیم ؟!؟!؟!
دوم اینکه وقتی ریختمش روی میکرو و مدار رو بستم میکرو وقتی به اولین دستور spi در توابع (یعنی ارسال داده ها به مایفر) میرسد ، ریست می شود ؟!؟! اگه میشه لطف کنید و بهم کمک کنید که چرا میکرو ریست میشه
با عرض معذرت میشه یه توضیحی در مورد یکی از توابع مثلا pcdrequest بدهین ؟
بازم ممنونم ازتون چون که به جرات می تونم بگم کمتر کسی رفته دمبال این مطلب با زبون سی برای کدویژن و ما باید از شما ممنون باشیم
سلام ممنون
اون وارنینگ مهم نیست.
نمیدونم چرا میکرو ریست میشه!!! اصولا اگر برنامه مشکل داشته باشه میکرو قفل میکنه، ریست نمیشه
طبق دیتا شیت کارتهای مایفر تابع pcdrequest مرحله ی شناسایی کارت رو انجام میده و اولین مرحله ی دسترسی به کارت هست که شماره سریال کارت رو بر میگردونه. باید دیتاشیت ماژول و کارت مایفر رو بخونید تا سر در بیارید
پروژه های مهم من در ایران میکرو:
" انتقال اطلاعات با SIM900 " ، " آموزش پورت USB " ، " راه اندازی MFRC522 " ، " راه اندازی SLE4442 " ، ""
سلام
اقا من هنوز هم نتونستم این مدار رو راه اندازی کنم ، درخواستم از شما اینه که اگه میشه یه شماتیک از مدارتون قرار بدین .
بعد اینکه اگه من فرکانس رو تغییر بدم و مثلا 8 مگ بگذارم مشکلی بوجود میاد؟
اگه میشه کمکم کنید این کار واسه من شده یه کابوووووووس . بازم ممنون
راستی میشه خواهش کنم تا این برنامه رو ، با هم آنالیز کنیم .آخه من یوزر منوآلی از این ماژول ندیدم و اگه کسی بخاد واسش برنامه بنویسه حتما باید طرز کار کلی ماژول رو بدونه . اگه شما کمک کنید ، به خیلی ها مث من کمک کردین ؛ بازم ممنون
سلام کسی نیسسسسسس کمک کنه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
ارور -2 واسه چیه؟؟؟؟؟؟؟؟؟؟؟؟
چرا ارور mi_err رو میفرسته؟
سلام
ممنونم بابت اینکه برنامه خوبتون رو اینجا در اختیار همه گذاشتید
اگه ممکنه یک بار الگوریتم کار برنامه رو بگید مرحله به مرحله (منظورم توضیح خط به خط برنامه نیست ) تا بدونیم برای دسترسی به کارت چه مراحلی باید انجام بشه
ممنون
پروژه های مهم من در ایران میکرو:
" انتقال اطلاعات با SIM900 " ، " آموزش پورت USB " ، " راه اندازی MFRC522 " ، " راه اندازی SLE4442 " ، ""
سلام
با تشکر از esisafa عزیز
این یه نمونه برای کامپایلر mbed هستش که یه کامپایلر آنلاینه
تقریبا همه این سمپلا از یه مثال چینی برای آردوینو مشتق شدن
خوبی این مثال اینه که توضیحات کاملی داره که حتی از خوندن دیتا شیت هم بی نیاز میکنه
البته من خودم هم دارم روش کار میکنم
اگه به نتیجه ای رسیدین ما رو هم بی نصیب نزارید
http://up.persianscript.ir/uploads/20c7-Dizgah.rar
ویرایش توسط dizgah : 05-09-2014 در ساعت 22:57
به درخواستهای مکرر توصیحاتی از توابع کتابخونه رو اینجا قرار میدم.
در داخل کتابخونه ای که بنده قرار دادم و برای کدویژن تغییر داده شده
ابتدا باید پایه ی sda رو تعریف کنید. خروجی و مقدار اولیه 1
برای ریست کردن ماژول از این تابع استفاده میشه که مقدار تمام رجیسترها رو به مقدار اولیه برمیگردونهکد://////////// PORTB.1 is ss (sda)(nss) pin#define cs_set PORTB.0=1 #define cs_clr PORTB.0=0
بعد باید آنتن روشن بهشهکد:char PcdReset(void);
حالا میرسیم به مراحل شناسایی کارت. این دستور وقتی کارت در میدان ماژول قرار بگیره شماره سریال کارت رو در buffer برمیگردونهکد:void PcdAntennaOn(void);
مرحله بعد انتخاب کارت هست که این دستورشه و سریال کارت مورد نظر ورودیش هست.کد:status = PcdRequest(PICC_REQALL,buffer);
کد:status = PcdAnticoll(buffer);تا اینجا کارت انتخاب شده حالا برای انجام هر عملیاتی باید ابتدا کدهای امنیتی هر سکتور وارد بشه که از دستورPcdAuthState استفاده میشه.کد:status = PcdSelect(buffer);
بعد توابع خواندن و نوشتن و ... هست.
اگر بعد از مرحله ی PcdAuthState هیچ عملی انجام نشود حتما باید از PcdHalt استفاده بشه.
بقیه ی دستورات هم لازم نیست چون در داخل همین توابع استفاده شده.
با این توصیحاتی که دادم، اگر دیتاشیت رو بخونید دیگه مشکلی ندارید.
پروژه های مهم من در ایران میکرو:
" انتقال اطلاعات با SIM900 " ، " آموزش پورت USB " ، " راه اندازی MFRC522 " ، " راه اندازی SLE4442 " ، ""
با سلام خدمت دوستان انجمن
من چند وقتی میشه دارم رو این ماژول کار میکنم . از همین کتابخونه استفاده کردم هر کارتی و میزنم فقط یه عدد 170 و یا 17a رو بهم نشون میده؟بعدشم شماره سریال کارت و هم تو بافر نشون نمیده؟
لطفا کمکم کنید چیکار کنم
while (1)
{
status = PcdRequest(PICC_REQALL, buffer);
if(!status){ //age karti zade shod in tabe ejra mishavad
beep;
PORTA.0=!PORTA.0;
lcd_clear();
//sprintf(line,"%X",buffer);
//lcd_puts(line);
}
/*if (status != MI_OK)//yani hich karti zade nashod
{
PcdReset();
delay_ms(1);
PcdAntennaOff();
delay_ms(1);
PcdAntennaOn();
delay_ms(1);
continue;
}*/
// delay_ms(300);
//*********************************************
status = PcdAnticoll(buffer);
if (status != MI_OK)continue;
/*for(i=0;i<4;i++)
{
temp=buffer[i];
printf("%X",temp);
} */
if(!status){
PORTA.2=!PORTA.2;
lcd_gotoxy(5,0);
sprintf(line,"%X",buffer);
lcd_puts(line);
puts(line);
}
status = PcdSelect(buffer);
if (status != MI_OK)continue;
PcdHalt();
/*
status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf);
if (status != MI_OK) continue;
status = PcdValue(PICC_DECREMENT,1,data2);
if (status != MI_OK) continue;
status = PcdBakValue(1, 2);
if (status != MI_OK)continue;
status = PcdRead(2, g_ucTempbuf);
if (status != MI_OK)continue;
if(!status){
sprintf(line,"%X",g_ucTempbuf);
lcd_puts(line);
}
اینا هم کدهای بوده که استفاده کردم
من خودم دارم از این کتابخونه استفاده میکنم و خواندن و نوشتن روی کارت بدون مشکل انجام میشه.البته افزایش و کاهش رو امتحان نکردم.
پروژه های مهم من در ایران میکرو:
" انتقال اطلاعات با SIM900 " ، " آموزش پورت USB " ، " راه اندازی MFRC522 " ، " راه اندازی SLE4442 " ، ""
با عرض سلام اقای مهندس صفا منش من همین کتابخونه رو پروگ کردم جواب نمیده البته فرکانسشم 8 انتخاب کردم
فرکانس میکرو مهم نیست. مد mode spi باید 0 باشه. سرعت هم 100 تا 500 کیلو استفاده کردم. پایه sda هم باید جدا تنظیم بشه و پیش فرض مقدار 1 داشته باشه. این پایه در کتابخونه هم باید مشخص بشه همونطور که قبلا گفتم. خودم کلی دردسر کشیدم اولش شروع کردم به تست کردن ماژول و self test کردم و دیدم جواب میده. اعصابم که کاملا داغون شده بود تماس گرفتم با فروشنده و ایشون گفتن بعضی از کارتهای همراه ماژول خراب هستن ولی خود ماژول سالمه. بعد با کارت اتوبوس امتحان کردم و از تابع request جواب گرفتم. بله هیچ چیز به این راحتی بدست نمیاد و خودم مدتی درگیر بودم اونم بخاطر اینکه هر دو تک همراه از شانس خوبم!!!! خراب بودن.
جدیدا هم جنس آشغال وارد کردن. سری اول که از این ماژول خریدم تا فاصله 5 سانت با هر کارتی کار میکرد و مشخص بود که کیفیتش عالیه ولی بعدا که خریدم ارزونتر شده بود ولی با قبلی فرق میکرد و فاصله شناسایی کارت شد 2 سانتیمتر. کلی اذیت شدم. از سری دوم نتیجه قابل اعتمادی گرفته نشد ولی سری اول با 100 درصد عملکرد صحیح بود.
پروژه های مهم من در ایران میکرو:
" انتقال اطلاعات با SIM900 " ، " آموزش پورت USB " ، " راه اندازی MFRC522 " ، " راه اندازی SLE4442 " ، ""
اقای صفامنش سلام توضیحات خوبی بود. میخواستم بدونم شما تونستید با همین کتابخونه شماره سریال کارت رو بخونید . ویا داخل سکتورهای کارت بتونید چیزی ذخیره کنید و دوباره بخونید ؟ میخواستم بدونم ما باید کتابخونه هم تغییر بدیم یا نه به کتابخونه کاری نداریم فقط باید برنامه t10 تغییر بدیم برای اون برنامه ای که میخوایم بنویسینم ؟
اقای صفامنش این قسمت از برنامه دقییقا چکار میکنه ؟ شماره سریال کارت رو پرینت میکنه؟
شما این ماژول رو به پورت سریال متصل کردید و شماره سریال رو داخل کامپیوتر دیدید یا روی lcf ?
[status = PcdRead(2, g_ucTempbuf)
if (status != MI_OK)continue
printf("print3
(for(i=0;i<16;i++)
[ temp=g_ucTempbuf [i
( printf("%X",temp
طبق برنامه ای که خودم گذاشتم تابع pcdrequest سریال نامبر 4 بایتی کارت رو بر میگردونه. این تابع باید در همون ابتدا اجرا بشه تا شما سریال کارت رو بدست بیارید و سپس کارت رو انتخاب کنید.
بله خودم کامل جواب گرفتم.
کتابخونه هم باید تغییر بدید. گفتم که باید پایه ss یا sda رو مشخص کنید. همون پایه io میکرو که به پایه ی sda ماژول وصل میشه.
در اینجا گفتیم که پین 0 از پورت B به پایه ی sda وصل شده. دیگه پایه ss میکرو باید آزاد باشه. البته جدیدا فهمیدم که وقتی در avr واحد spi به صورت مستر انتخاب بشه کنترل پایه ss تحت کنترل کاربر هست یعنی میشه همون پایه ss رو به sda وصل کنید و در کتابخونه معرفی کنید.کد://////////// PORTB.0 is ss (sda)(nss) pin #define cs_set PORTB.0=1 #define cs_clr PORTB.0=0
ویرایش توسط esisafa : 02-01-2015 در ساعت 14:37
پروژه های مهم من در ایران میکرو:
" انتقال اطلاعات با SIM900 " ، " آموزش پورت USB " ، " راه اندازی MFRC522 " ، " راه اندازی SLE4442 " ، ""
با سلام خدمت مهندس صفا منش
من تابع pcdrequest و اجرا میکنم ولی سریالی بهم بر نمیگردونه؟