PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : راه اندازی ماژول MFRC522 با میکرو AVR و کامپایلر codevision



esisafa
23-06-2014, 19:30
سلام
اینم کد تبدیل شده از مثال شرکت nxp برای میکروهای avr
فکر کنم بهترین و کاملترین نمونه برای میکروهای avr باشه

ghaderiaram
14-07-2014, 00:53
میشه این برنامه رو واسه راه اندازی با usart تغییر داد؟
باتشکر

esisafa
14-07-2014, 08:27
میشه تغییر داد. باید در توابع خواندن و نوشتن رجیسترها تغییرات بدین. همون توابعی که spi دارن.

mamadelectron
08-08-2014, 14:40
با عرض سلام و خسته نباشید
اقا من این پروژه رو اجرا کردم ، چند تا مشکل داشتم :
اول اینکه یه وارنینگ میده که در تابع pcfhalt ، متغیر status را استفاده ای ازش نکردیم ؟!؟!؟!
دوم اینکه وقتی ریختمش روی میکرو و مدار رو بستم میکرو وقتی به اولین دستور spi در توابع (یعنی ارسال داده ها به مایفر) میرسد ، ریست می شود ؟!؟! اگه میشه لطف کنید و بهم کمک کنید که چرا میکرو ریست میشه
با عرض معذرت میشه یه توضیحی در مورد یکی از توابع مثلا pcdrequest بدهین ؟
بازم ممنونم ازتون چون که به جرات می تونم بگم کمتر کسی رفته دمبال این مطلب با زبون سی برای کدویژن و ما باید از شما ممنون باشیم

esisafa
08-08-2014, 19:26
سلام ممنون
اون وارنینگ مهم نیست.
نمیدونم چرا میکرو ریست میشه!!! اصولا اگر برنامه مشکل داشته باشه میکرو قفل میکنه، ریست نمیشه
طبق دیتا شیت کارتهای مایفر تابع pcdrequest مرحله ی شناسایی کارت رو انجام میده و اولین مرحله ی دسترسی به کارت هست که شماره سریال کارت رو بر میگردونه. باید دیتاشیت ماژول و کارت مایفر رو بخونید تا سر در بیارید

mamadelectron
22-08-2014, 14:47
سلام
اقا من هنوز هم نتونستم این مدار رو راه اندازی کنم ، درخواستم از شما اینه که اگه میشه یه شماتیک از مدارتون قرار بدین .
بعد اینکه اگه من فرکانس رو تغییر بدم و مثلا 8 مگ بگذارم مشکلی بوجود میاد؟
اگه میشه کمکم کنید این کار واسه من شده یه کابوووووووس . بازم ممنون
راستی میشه خواهش کنم تا این برنامه رو ، با هم آنالیز کنیم .آخه من یوزر منوآلی از این ماژول ندیدم و اگه کسی بخاد واسش برنامه بنویسه حتما باید طرز کار کلی ماژول رو بدونه . اگه شما کمک کنید ، به خیلی ها مث من کمک کردین ؛ بازم ممنون

mamadelectron
28-08-2014, 20:33
سلام کسی نیسسسسسس کمک کنه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
ارور -2 واسه چیه؟؟؟؟؟؟؟؟؟؟؟؟
چرا ارور mi_err رو میفرسته؟

full_job
04-09-2014, 11:53
سلام
ممنونم بابت اینکه برنامه خوبتون رو اینجا در اختیار همه گذاشتید
اگه ممکنه یک بار الگوریتم کار برنامه رو بگید مرحله به مرحله (منظورم توضیح خط به خط برنامه نیست ) تا بدونیم برای دسترسی به کارت چه مراحلی باید انجام بشه
ممنون

esisafa
05-09-2014, 11:40
سلام
ممنونم بابت اینکه برنامه خوبتون رو اینجا در اختیار همه گذاشتید
اگه ممکنه یک بار الگوریتم کار برنامه رو بگید مرحله به مرحله (منظورم توضیح خط به خط برنامه نیست ) تا بدونیم برای دسترسی به کارت چه مراحلی باید انجام بشه
ممنون
هم ماژول و هم کارت دیتاشیت داره. توضیحات فارسی هم پیدا میشه. شما دیتاشیت کارت مایفر 1 کیلو رو که بخونید میدونید که مراحل چیا هستن

dizgah
05-09-2014, 22:53
سلام
با تشکر از esisafa (You can see links before reply) عزیز
این یه نمونه برای کامپایلر mbed هستش که یه کامپایلر آنلاینه
تقریبا همه این سمپلا از یه مثال چینی برای آردوینو مشتق شدن
خوبی این مثال اینه که توضیحات کاملی داره که حتی از خوندن دیتا شیت هم بی نیاز میکنه
البته من خودم هم دارم روش کار میکنم
اگه به نتیجه ای رسیدین ما رو هم بی نصیب نزارید
You can see links before reply

Shapour_Ardebil
06-09-2014, 12:07
سلام
ممنونم بابت اینکه برنامه خوبتون رو اینجا در اختیار همه گذاشتید
اگه ممکنه یک بار الگوریتم کار برنامه رو بگید مرحله به مرحله (منظورم توضیح خط به خط برنامه نیست ) تا بدونیم برای دسترسی به کارت چه مراحلی باید انجام بشه
ممنون

با سلام

1. بايد اينيشيالايزش init کنيم.
2. بعد از راه اندازي اوليه اون ، بايد آنتنش رو روشن کنيم
3. سپس چک کنيم که کارتي موجود هست يا نه ؟؟!؟!؟!
4. هر موقع کارتي پيدا کرديم
5. کد کارت ها رو بخونيم
6. رمز کارت رو بديم و داده هاي اون رو بخونيم و يا تغييرشون بديم .

esisafa
30-12-2014, 12:39
به درخواستهای مکرر توصیحاتی از توابع کتابخونه رو اینجا قرار میدم.
در داخل کتابخونه ای که بنده قرار دادم و برای کدویژن تغییر داده شده
ابتدا باید پایه ی sda رو تعریف کنید. خروجی و مقدار اولیه 1

//////////// PORTB.1 is ss (sda)(nss) pin#define cs_set PORTB.0=1
#define cs_clr PORTB.0=0
برای ریست کردن ماژول از این تابع استفاده میشه که مقدار تمام رجیسترها رو به مقدار اولیه برمیگردونه

char PcdReset(void);
بعد باید آنتن روشن بهشه

void PcdAntennaOn(void);

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

status = PcdRequest(PICC_REQALL,buffer);

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

status = PcdAnticoll(buffer);

status = PcdSelect(buffer);

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

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

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

alielec8991
30-12-2014, 20:08
با سلام خدمت دوستان انجمن
من چند وقتی میشه دارم رو این ماژول کار میکنم . از همین کتابخونه استفاده کردم هر کارتی و میزنم فقط یه عدد 170 و یا 17a رو بهم نشون میده؟بعدشم شماره سریال کارت و هم تو بافر نشون نمیده؟

لطفا کمکم کنید چیکار کنم

alielec8991
30-12-2014, 20:14
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);

}
اینا هم کدهای بوده که استفاده کردم

esisafa
31-12-2014, 20:59
من خودم دارم از این کتابخونه استفاده میکنم و خواندن و نوشتن روی کارت بدون مشکل انجام میشه.البته افزایش و کاهش رو امتحان نکردم.

alielec8991
01-01-2015, 22:45
با عرض سلام اقای مهندس صفا منش من همین کتابخونه رو پروگ کردم جواب نمیده البته فرکانسشم 8 انتخاب کردم

esisafa
01-01-2015, 23:29
فرکانس میکرو مهم نیست. مد mode spi باید 0 باشه. سرعت هم 100 تا 500 کیلو استفاده کردم. پایه sda هم باید جدا تنظیم بشه و پیش فرض مقدار 1 داشته باشه. این پایه در کتابخونه هم باید مشخص بشه همونطور که قبلا گفتم. خودم کلی دردسر کشیدم اولش شروع کردم به تست کردن ماژول و self test کردم و دیدم جواب میده. اعصابم که کاملا داغون شده بود تماس گرفتم با فروشنده و ایشون گفتن بعضی از کارتهای همراه ماژول خراب هستن ولی خود ماژول سالمه. بعد با کارت اتوبوس امتحان کردم و از تابع request جواب گرفتم. بله هیچ چیز به این راحتی بدست نمیاد و خودم مدتی درگیر بودم اونم بخاطر اینکه هر دو تک همراه از شانس خوبم!!!! خراب بودن.
جدیدا هم جنس آشغال وارد کردن. سری اول که از این ماژول خریدم تا فاصله 5 سانت با هر کارتی کار میکرد و مشخص بود که کیفیتش عالیه ولی بعدا که خریدم ارزونتر شده بود ولی با قبلی فرق میکرد و فاصله شناسایی کارت شد 2 سانتیمتر. کلی اذیت شدم. از سری دوم نتیجه قابل اعتمادی گرفته نشد ولی سری اول با 100 درصد عملکرد صحیح بود.

rezamzavr
02-01-2015, 13:49
اقای صفامنش سلام توضیحات خوبی بود. میخواستم بدونم شما تونستید با همین کتابخونه شماره سریال کارت رو بخونید . ویا داخل سکتورهای کارت بتونید چیزی ذخیره کنید و دوباره بخونید ؟ میخواستم بدونم ما باید کتابخونه هم تغییر بدیم یا نه به کتابخونه کاری نداریم فقط باید برنامه 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

esisafa
02-01-2015, 14:31
طبق برنامه ای که خودم گذاشتم تابع pcdrequest سریال نامبر 4 بایتی کارت رو بر میگردونه. این تابع باید در همون ابتدا اجرا بشه تا شما سریال کارت رو بدست بیارید و سپس کارت رو انتخاب کنید.
بله خودم کامل جواب گرفتم.
کتابخونه هم باید تغییر بدید. گفتم که باید پایه ss یا sda رو مشخص کنید. همون پایه io میکرو که به پایه ی sda ماژول وصل میشه.

//////////// PORTB.0 is ss (sda)(nss) pin
#define cs_set PORTB.0=1
#define cs_clr PORTB.0=0
در اینجا گفتیم که پین 0 از پورت B به پایه ی sda وصل شده. دیگه پایه ss میکرو باید آزاد باشه. البته جدیدا فهمیدم که وقتی در avr واحد spi به صورت مستر انتخاب بشه کنترل پایه ss تحت کنترل کاربر هست یعنی میشه همون پایه ss رو به sda وصل کنید و در کتابخونه معرفی کنید.

alielec8991
02-01-2015, 17:09
با سلام خدمت مهندس صفا منش
من تابع pcdrequest و اجرا میکنم ولی سریالی بهم بر نمیگردونه؟

esisafa
02-01-2015, 17:21
با سلام خدمت مهندس صفا منش
من تابع pcdrequest و اجرا میکنم ولی سریالی بهم بر نمیگردونه؟

طبق این تابع

status = PcdRequest(PICC_REQALL,buffer);
buffer یک آرایه از نوع کاراکتر هست. بعد از اجرای این تابع 4 بایت اول آرایه buffer سریال نامبر خواهد بود.
اگر همه چیز درست راه اندازی شده باشه حتما کار میکنه.

alireza_
09-01-2015, 17:18
با سلام
من سوالاتی داشتم جناب مهندس صفامنش،

1- شما با ماژول این RC522 کار کردید، نه خود آی سی. درسته؟
2- اگر بله، ماژولی که شما استفاده کردید همین ماژول موجود در بازاره دیگه؟
عکس ماژول:
You can see links before reply



3- و یه سوال دیگه، اگر از همین ماژول استفاده کردید، فرکانس SPI را چرا 125 کیلوهرتز تنظیم نکردید؟ همه ی جاها نوشتن این ماژول با 125 کیلوهرتز کار میکنه

4- و یه سوال دیگه (ببخشید این سوال دیگه خیلی مبتدیه اما برای راحت شدن خیالم میپرسم :) ) ولتاژ این آی سی و این ماژول 3.3 ولته، برای خطوط دیتای ورودی از میکرو مثل MOSI یا SCK که سطح ولتاژ 5 ولت دارن، آیا از تقسیم مقاومتی استفاده کردید یا این که مستقیما متصل کردید؟

در آخر یه تشکر بسیار ویژه هم از جنابعالی دارم که اطلاعاتتون را در خدمت ما گذاشتید
بسیار ممنون و متشکر

esisafa
10-01-2015, 14:34
بله از همین ماژول استفاده کردم. ولی شاید همشون یک مدل نباشن و ظاهر یکسان داشته باشن
من با فرکانسهای کمتر و بیشتر هم جواب گرفتم دیتاشیت ایسی گفته تا 10 مگابیت.
برای ارتباط با ماژول باید تطبیق ولتاژ انجام داد. یا میکرو با 3.3 کار کنه یا تقسیم مقاومتی.
خواهش میکنم

rezamzavr
22-01-2015, 11:53
اقای صفامنش میخواستم بدونم برنامه ای که شما گذاشتدید اخرین بار که کامپایل شد دقیقا چه کاری انجام میداد ؟ درواقع میخواستم بدونم این فایل دقیقا الان من عملی اجرا کنم چه جوابی میده ؟ شماره سریال فقط نشون میده یا نه کار دیگری هم انجام میده ؟

rezamzavr
22-01-2015, 12:12
سوال از ماژول rc522 (You can see links before reply %DA%98%D9%88%D9%84_rc522.mp4.html)
آقای صفامنش خواهشا این فیلم رو ببینید و نظرتون رو بگید

esisafa
22-01-2015, 20:08
بنده برنامه یک مثال آماده رو تبدیل کردم به کدویژن و محل استفاده از توابع ریست و آنتن مربوط به اون برنامه بوده و لازم نیست همیشه استفاده بشن. کافیه هر کدوم در جای مناسب استفاده بشه.
تابع printf هم برای ارسال روی پورت سریال هست و لازم نیست استفاده بشه. برای مانیتور کردن بود.
بقیه دستورها خودشون در توابع توضیح داده شده استفاده شدن که لازم نیست استفاده کنیم.
کدهای امنیتی هم منظور 6 بایت که keya نامیده میشه و باید درنهایت عوض بشن ولی پیشفرض تمام بیتها 1 هستن.

rezamzavr
22-01-2015, 22:08
اقای صفامنش باتشکر از پاسخ شما
من از امروز میخوام ماژول رو به صورت عملی ببندم و روش کار کنم مراحلی که میخوام انجام بدم به این شکله :
مرحله ابتدایی :
1- وقتی کارت نزدیک ماِژول بشود یک led روشن بشه
2- وقتی کارت نزدیک بشه شماره سریال روی lcd نمایش داده بشه
مرحله پیشرفته :
3-دسترسی به ریجیستر های کارت
4- نوشتن یک نام در یکی از سکتورهای کارت
و...........
آقای صفامنش من میخوام از مرحله اول شروع کنم آیا باید وارد کد های امنیتی کارت بشوم یا نیازی نیست ماژول هر کارتی نزدیکش کنی یک پایه رو یک میکنه ؟ اون پایه کدوم پایه است ؟ پایه وقفه ماژول کارش چیه ؟
الان همین برنامه رو من کامپایل کنم و بافر رو روی lcd نمایش بدم شماره سریال رو به من نشون میده ؟ یا نه طبق صحبتی که در بالا انجام دادید به من فقط 1 نشون میده چون پیشفرض همه یک هستند ؟ مگه هرکارتی خودش شماره سریال نداره پس چرا یک برمیگردونه ؟ باید keya رو بزنم تا شماره سریال رو بمن نشون بده ؟ key b و Access Bits این وسط چه کاره هستند ؟ نقشی ندارن ؟ کارشون چیه ؟منظور از C1 C2 C3 تو کاتالوگ کارت چیه ؟
و ......
ببخشید سوالام زیاد شدن
ممنون میشم به سوال های من جواب بدید. باتشکر

esisafa
22-01-2015, 23:23
اقای صفامنش باتشکر از پاسخ شما
من از امروز میخوام ماژول رو به صورت عملی ببندم و روش کار کنم مراحلی که میخوام انجام بدم به این شکله :
مرحله ابتدایی :
1- وقتی کارت نزدیک ماِژول بشود یک led روشن بشه
2- وقتی کارت نزدیک بشه شماره سریال روی lcd نمایش داده بشه
مرحله پیشرفته :
3-دسترسی به ریجیستر های کارت
4- نوشتن یک نام در یکی از سکتورهای کارت
و...........
آقای صفامنش من میخوام از مرحله اول شروع کنم آیا باید وارد کد های امنیتی کارت بشوم یا نیازی نیست ماژول هر کارتی نزدیکش کنی یک پایه رو یک میکنه ؟ اون پایه کدوم پایه است ؟ پایه وقفه ماژول کارش چیه ؟
الان همین برنامه رو من کامپایل کنم و بافر رو روی lcd نمایش بدم شماره سریال رو به من نشون میده ؟ یا نه طبق صحبتی که در بالا انجام دادید به من فقط 1 نشون میده چون پیشفرض همه یک هستند ؟ مگه هرکارتی خودش شماره سریال نداره پس چرا یک برمیگردونه ؟ باید keya رو بزنم تا شماره سریال رو بمن نشون بده ؟ key b و Access Bits این وسط چه کاره هستند ؟ نقشی ندارن ؟ کارشون چیه ؟منظور از C1 C2 C3 تو کاتالوگ کارت چیه ؟
و ......
ببخشید سوالام زیاد شدن
ممنون میشم به سوال های من جواب بدید. باتشکر
شما از قرار معلوم اطلاعات بیار کمی در این مورد دارید. خود ماژول پایه ای رو تغییر نمیده و باید در برنامه میکرو شما اینو تشخیص بدید.

rezamzavr
23-01-2015, 14:55
منظورم همون پایه میکرو بود یکم فکر کنم بد نوشتم. منظورم درواقع این بود اگه کارتی نزدیک ماژول بشه ممکنه یک متغیری در برنامه تغییر کنه که بشه ازش به عنوان دستور استفاده کنی و یک پایه میکرو یک بشه و اگر کارت دور بشه اون پایه صفر بشه واز این بتونیم استفاده کنیم برای خاموش روشن یک led ? دوم اینکه منظورم این بود پایه وقفه ماژول کارش چیه ؟ آیا نسبت به کارت واکنش نشون میده که بشه ازش استفاده کنی؟
ببخشید که وقت شما رو میگریم

esisafa
23-01-2015, 15:34
پایه وقفه ماژول برای برنامه نویسی اصولی و بسیار کارآمد هست و تا حالا لازم نشده. تمام وقفه هایی که در ماژول اتفاق میافته باید تنظیم بشن و پیش فرض این پایه غیرفعال هست. کتابخانه موجود هم با این وقفه کاری نداره
همون دستور request برای شناسایی نزدیک شدن کارت باید اجرا بشه که شماره سریال کارت هم برمیگردونه

rezamzavr
25-01-2015, 14:23
با سلام خدمت اقای صفامنش
من ماژول مایفر رو به صورت عملی بستم و از همین کتابخونه استفاده کردم در خروجی یا چیزی نشون نمیداد یا چیزای عجیبی مثل w r f .... نشون میداد بعد اومدم برنامه کمی تغییر دادم به کتابخونه دست نزدم فقط t10 رو تغییر داده فرکانس میکرو رو 8 مگ کردم و همچنین باودریت رو 9600 کردم . الان خروجی بازم فرق نکرد یا مینویسه print 1 یا چیزای دیگه مینویسه اصلا هم به کارت واکنش نشون نمیده ؟ سوال من اینه اگه من کارت رو نزدیک ماژول کنم تو خروجی باید چی نشون بده که من بفهمم درست کار میکنه مثلا میینویسه : print2 :0x12,0x34,0x56,0x78
یا نه چیزی دیگه ای مینویسه ؟ فایل اصلاح شده رو براتون فرستادم ببینید درسته یا نه ؟8455

esisafa
25-01-2015, 23:37
برنامه روی پورت سریال داده هگز میفرسته نه کاراکتر. میدونید تفاوت اینها چیه؟ نرم افزار ترمینال رو در حالت دریافت داده هگز قرار بدید تا نشون بده. اگر در حالت دریافت کاراکتر باشه اونوقت بعضی وقتها که داده هگز شانسی یک حرف الفبا باشه نشون داده میشه.

rezamzavr
26-01-2015, 01:05
با سلام خدمت آقای صفا منش
بالاخره من جواب گرفتم از این ماژول خیلی جالب بود به خوبی کار کرد هم سریال نامبر و هم دیتا داخلش ذخیره شد و هم خونده شد . ولی سوالم اینه که الان اگه بخوای روی سکتورهای دیگه دیتا ذخیره کنی باید ازکدوم دستور استفاده کنی ؟
status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf باید این تابع رو تغییر بدی یا نه باید از روش دیگه ای استفاده کنی ؟؟؟؟؟؟؟ با تشکر

clrman26
26-04-2015, 23:44
با سلام خدمت مهندس صفا منش
آیا شما پروتوکل APDU هم کار کردید . منظورم Smart Mifare هستش

esisafa
27-04-2015, 00:15
با سلام خدمت آقای صفا منش
بالاخره من جواب گرفتم از این ماژول خیلی جالب بود به خوبی کار کرد هم سریال نامبر و هم دیتا داخلش ذخیره شد و هم خونده شد . ولی سوالم اینه که الان اگه بخوای روی سکتورهای دیگه دیتا ذخیره کنی باید ازکدوم دستور استفاده کنی ؟
status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf باید این تابع رو تغییر بدی یا نه باید از روش دیگه ای استفاده کنی ؟؟؟؟؟؟؟ با تشکر

دستورات همین ها هستند و فقط باید شماره سکتور که در اینجا 1 هست تغییر کنه. همین این تابع و هر جای دیگه ای که با آدرس کار داره باید یک عدد قرار بگیرن

- - - Updated - - -


با سلام خدمت مهندس صفا منش
آیا شما پروتوکل APDU هم کار کردید . منظورم Smart Mifare هستش

این مثال برای کارتهای مایفر classic 1k هست و با بقیه کار نکردم. البته با اسمارت کارت کار کردم ولی اسمارت مایفر نه.

raatin
08-06-2015, 11:59
سلام آقای صفا منش. ببخشید میدونم سوالم ابتدایی بنظر میرسه، ولی حقیقتش اینه که من دارم تلاش میکنم کار شما رو تکمیل کنم. به همین خاطر باید مطمئن بشم که اشتباه متوجه نشدم!
واما سوال :
data1 و data2 چیه؟
آیا data1 شماره آیدی یه تگ ذخیره شده است؟ نمیشه تغییرش داد؟
آیا data2 همون مقداریه که Decrement میشه؟
سوال های دیگه رو در ادامه میپرسم. ممنون.:wink:

esisafa
09-06-2015, 19:07
سلام آقای صفا منش. ببخشید میدونم سوالم ابتدایی بنظر میرسه، ولی حقیقتش اینه که من دارم تلاش میکنم کار شما رو تکمیل کنم. به همین خاطر باید مطمئن بشم که اشتباه متوجه نشدم!
واما سوال :
data1 و data2 چیه؟
آیا data1 شماره آیدی یه تگ ذخیره شده است؟ نمیشه تغییرش داد؟
آیا data2 همون مقداریه که Decrement میشه؟
سوال های دیگه رو در ادامه میپرسم. ممنون.:wink:

ببخشید فرصت ندارم وگرنه حتما کمک میکردم.
10 روز دیگه سربازی دارم + یک پروژه سنگین که هنوز تحویل ندادم

masterpcc
20-07-2015, 19:51
سلام من هم این برنامه رو تست کردم و رو هگز قرار دادم ترمینال رو ولی جوابی که برمیگردونه سریال نامبر نیست اگه امکان داره شما راه نمایی کنید اقای صفا منش که نیستند.

mobashery
22-09-2015, 20:05
با سلام خدمت آقای صفا منش
بالاخره من جواب گرفتم از این ماژول خیلی جالب بود به خوبی کار کرد هم سریال نامبر و هم دیتا داخلش ذخیره شد و هم خونده شد . ولی سوالم اینه که الان اگه بخوای روی سکتورهای دیگه دیتا ذخیره کنی باید ازکدوم دستور استفاده کنی ؟
status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf باید این تابع رو تغییر بدی یا نه باید از روش دیگه ای استفاده کنی ؟؟؟؟؟؟؟ با تشکر

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

mobashery
04-10-2015, 14:46
هیچ کس جواب نداد خودم ردیفش کردم،اگر هم کسی گیر افتاد در خدمتم

newelecomp
13-10-2015, 12:38
هیچ کس جواب نداد خودم ردیفش کردم،اگر هم کسی گیر افتاد در خدمتم

اگه امکان داره این کد ها رو قرار بدین من لازم دارم شدیدا.خیلی ممنون میشم.

newelecomp
13-10-2015, 15:40
سلام
اینم کد تبدیل شده از مثال شرکت nxp برای میکروهای avr
فکر کنم بهترین و کاملترین نمونه برای میکروهای avr باشه
سلام اگه امکان داره سخت افزار کار با این ماژول رو تو سایت قرار بدین. ممنون.

mobashery
14-10-2015, 13:49
اگه امکان داره این کد ها رو قرار بدین من لازم دارم شدیدا.خیلی ممنون میشم.

دانلود فایل Download t102 RAR از آپلود آی آر (You can see links before reply)

newelecomp
23-10-2015, 13:33
هیچ کس جواب نداد خودم ردیفش کردم،اگر هم کسی گیر افتاد در خدمتم

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

- - - Updated - - -

لینک دانلود وجود نداره.اگه میشه راهنمایی کنید.

- - - Updated - - -

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

Hadi_ghr_e
19-01-2016, 14:46
سلام
من فکر میکردم این ماژول فقط با تگ مایفر 13.56 مگا هرتز کار میکنه
اشتباه میکنم یا اینکه با 125 کیلو هرتزم کار میکنه؟

mali2000
22-04-2016, 01:18
با سلام
من این برنامه رو دقیقا ریختم رو میکرو و سخت افزار رو طبق برنامه بستم ولی مدار کار نمیکنه،تو خروجی uratهیچی ندارم و یکسره ولتاژ 5 ولت تو خروجی uart دارم
ممنون میشم اگر کسی میدونه ایراد کجاست راهنمایی کنه

masih93
30-09-2016, 18:30
سلام دوستان عزیز
من باید این ماژول MFRC522 رو با پروتوکل uart راه بندازم!
در مرحله اول هم قصد دارم ماژ<ل رو از طریق hyper terminal به pc متصل کنم..
کسی هست بتونه کمکی به من داشته باشه که پس از اتصال اسخت افزاری چه دستوراتی رو و به چه ترتیبی باید از طریق پورت uart کامپیوتر به ماژول بفرستم تا ایدی و دیتای های کارت رو بتونم دریافت کنم؟!
با تشکر

mojitaba
09-10-2016, 17:22
سلام
لینک دانلود خرابه.

masoud.sh1994
14-11-2016, 23:37
سلام خدمت اساتید
من یه کد درب و داغون نوشتم که فقط وقتی کارت به ماژول نزدیک میشه یه led روشن بشه واسه دست گرمی ولی کار نمیکنه.میدونم مشکل زیاد داره ولی لطفا اشکالاتم رو بگید ممنون


while (1)
{
status = PcdRequest(PICC_REQALL,buffer);
while(status!=MI_OK){
PcdReset();
delay_ms(1);
PcdAntennaOff();
delay_ms(1);
PcdAntennaOn();
delay_ms(1);
}

while(status==MI_OK){
PORTA.1=1;
delay_ms(750);
PORTA.1=0;
delay_ms(250);
}

}

m.kazemi
28-06-2018, 05:25
اینجا که چیزی نوشته نشده !!!
شما در مورده کدوم برنامه حرف میزنید ؟!!!

mehdi_gh
15-07-2018, 13:50
سلام
اینم کد تبدیل شده از مثال شرکت nxp برای میکروهای avr
فکر کنم بهترین و کاملترین نمونه برای میکروهای avr باشه
با سلام
دوست عزیز من از این کد استفاده کردم و موفق به اجراش شدم ولی یه مشکل خیلی بزرگ دارم، و اون داده ایه که قراراه بنویسم، 16 بایت داده در آرایه data1[] ذخیره شده و همون نوشته میشه، ولی چیزی که خونده میشه هیچ ربطی به این داده ها نداره و جالبتر اینه که وقتی یکی از بایتهای این آرایه رو تغییر میدم دیگه همین کار رو هم انجام نمیده، یعنی دیگه چیزی نمیخونه، مشکل کار کجاست؟! مگه داده ای که قراره نوشته بشه باید فرمت خاصی داشته باشه؟! ممنون میشم اگه کمکم کنین

electrop30
21-10-2018, 22:27
سلام
اینم کد تبدیل شده از مثال شرکت nxp برای میکروهای avr
فکر کنم بهترین و کاملترین نمونه برای میکروهای avr باشه

ممنون از آقای صفایی عزیز از اطلاعات و راهنمایی خوبتون. اگه ممکنه یه شماتیک از نحوه وصل ماژول به میکرو میذارین؟

mahdiehm
17-12-2019, 22:28
سلام
من این کد رو ران کردم مشکلی که دارم اینه که وقتی که تگ رو به ماژول نزدیک میکنم تو ترمینال به جای این که کد تگ رو بهم نشون بده حرف های عجیب و غریب رو بهم نشون میده علتش چیه؟
و آیا میشه که به این ماژول آنتن خارجی وصل کرد تا از فاصله بیشتری تگ رو تشخیص بده؟

amirbahar77
12-01-2020, 05:18
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);

//*********************************************


سلام من از این کد میخوام استفاده کنم اما هر کاری میکنم ایدی کارت رو نمیده رو LCD اینم کدم میشه راهنماییم کنید ؟

status = PcdRequest(PICC_REQALL, buffer);
if(!status){ //age karti zade shod in tabe ejra mishavad


PORTB.0=1;
lcd_clear();
sprintf(amir2,"%X",buffer);
lcd_puts(amir2);
delay_ms(2000);
}
if (status != MI_OK)//yani hich karti zade nashod
{
PcdReset();
delay_ms(1);
PcdAntennaOff();
delay_ms(1);
PcdAntennaOn();
delay_ms(1);


continue;
}

}
}

متغیر amir2 ار نوع char با طول 32 تعریف کردم ممکنه مشکل از اون باشه ؟