NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 896 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
صفحه 1 از 3 123 آخرینآخرین
نمایش نتایج: از 1 به 20 از 54

موضوع: راه اندازی ماژول MFRC522 با میکرو AVR و کامپایلر codevision

  1. #1
    مدیرکل انجمنها
    تاریخ عضویت
    May 2011
    نام
    احسان صفامنش
    نوشته ها
    1,763
    تشکر
    919
    تشکر شده 2,261 بار در 1,056 پست

    پیش فرض راه اندازی ماژول MFRC522 با میکرو AVR و کامپایلر codevision

    سلام
    اینم کد تبدیل شده از مثال شرکت nxp برای میکروهای avr
    فکر کنم بهترین و کاملترین نمونه برای میکروهای avr باشه
    فايل هاي پيوست شده فايل هاي پيوست شده

  2. کاربران : 17 تشکر کرده اند از شما esisafa برای ارسال این پست سودمند:


  3. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  4. #2
    عضو جدید ghaderiaram آواتار ها
    تاریخ عضویت
    Apr 2012
    نام
    ARAMELECTRO
    نوشته ها
    12
    تشکر
    2
    تشکر شده 2 بار در 2 پست

    پیش فرض

    میشه این برنامه رو واسه راه اندازی با usart تغییر داد؟
    باتشکر

  5. #3
    مدیرکل انجمنها
    تاریخ عضویت
    May 2011
    نام
    احسان صفامنش
    نوشته ها
    1,763
    تشکر
    919
    تشکر شده 2,261 بار در 1,056 پست

    پیش فرض

    میشه تغییر داد. باید در توابع خواندن و نوشتن رجیسترها تغییرات بدین. همون توابعی که spi دارن.

  6. کاربران : 2 تشکر کرده اند از شما esisafa برای ارسال این پست سودمند:


  7. #4
    تازه وارد
    تاریخ عضویت
    Mar 2012
    نوشته ها
    3
    تشکر
    1
    تشکر شده 0 بار در 0 پست

    پیش فرض

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

  8. #5
    مدیرکل انجمنها
    تاریخ عضویت
    May 2011
    نام
    احسان صفامنش
    نوشته ها
    1,763
    تشکر
    919
    تشکر شده 2,261 بار در 1,056 پست

    پیش فرض

    سلام ممنون
    اون وارنینگ مهم نیست.
    نمیدونم چرا میکرو ریست میشه!!! اصولا اگر برنامه مشکل داشته باشه میکرو قفل میکنه، ریست نمیشه
    طبق دیتا شیت کارتهای مایفر تابع pcdrequest مرحله ی شناسایی کارت رو انجام میده و اولین مرحله ی دسترسی به کارت هست که شماره سریال کارت رو بر میگردونه. باید دیتاشیت ماژول و کارت مایفر رو بخونید تا سر در بیارید

  9. کاربران : 2 تشکر کرده اند از شما esisafa برای ارسال این پست سودمند:


  10. #6
    تازه وارد
    تاریخ عضویت
    Mar 2012
    نوشته ها
    3
    تشکر
    1
    تشکر شده 0 بار در 0 پست

    پیش فرض

    سلام
    اقا من هنوز هم نتونستم این مدار رو راه اندازی کنم ، درخواستم از شما اینه که اگه میشه یه شماتیک از مدارتون قرار بدین .
    بعد اینکه اگه من فرکانس رو تغییر بدم و مثلا 8 مگ بگذارم مشکلی بوجود میاد؟
    اگه میشه کمکم کنید این کار واسه من شده یه کابوووووووس . بازم ممنون
    راستی میشه خواهش کنم تا این برنامه رو ، با هم آنالیز کنیم .آخه من یوزر منوآلی از این ماژول ندیدم و اگه کسی بخاد واسش برنامه بنویسه حتما باید طرز کار کلی ماژول رو بدونه . اگه شما کمک کنید ، به خیلی ها مث من کمک کردین ؛ بازم ممنون

  11. #7
    تازه وارد
    تاریخ عضویت
    Mar 2012
    نوشته ها
    3
    تشکر
    1
    تشکر شده 0 بار در 0 پست

    پیش فرض

    سلام کسی نیسسسسسس کمک کنه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
    ارور -2 واسه چیه؟؟؟؟؟؟؟؟؟؟؟؟
    چرا ارور mi_err رو میفرسته؟

  12. #8
    عضو جدید
    تاریخ عضویت
    Dec 2013
    نوشته ها
    5
    تشکر
    4
    تشکر شده 0 بار در 0 پست

    پیش فرض

    سلام
    ممنونم بابت اینکه برنامه خوبتون رو اینجا در اختیار همه گذاشتید
    اگه ممکنه یک بار الگوریتم کار برنامه رو بگید مرحله به مرحله (منظورم توضیح خط به خط برنامه نیست ) تا بدونیم برای دسترسی به کارت چه مراحلی باید انجام بشه
    ممنون

  13. #9
    مدیرکل انجمنها
    تاریخ عضویت
    May 2011
    نام
    احسان صفامنش
    نوشته ها
    1,763
    تشکر
    919
    تشکر شده 2,261 بار در 1,056 پست

    پیش فرض

    نقل قول نوشته اصلی توسط full_job نمایش پست ها
    سلام
    ممنونم بابت اینکه برنامه خوبتون رو اینجا در اختیار همه گذاشتید
    اگه ممکنه یک بار الگوریتم کار برنامه رو بگید مرحله به مرحله (منظورم توضیح خط به خط برنامه نیست ) تا بدونیم برای دسترسی به کارت چه مراحلی باید انجام بشه
    ممنون
    هم ماژول و هم کارت دیتاشیت داره. توضیحات فارسی هم پیدا میشه. شما دیتاشیت کارت مایفر 1 کیلو رو که بخونید میدونید که مراحل چیا هستن

  14. کاربران : 2 تشکر کرده اند از شما esisafa برای ارسال این پست سودمند:


  15. #10
    کاربر علاقه مند dizgah آواتار ها
    تاریخ عضویت
    Oct 2007
    نام
    محمود حسینی پور
    نوشته ها
    76
    تشکر
    124
    تشکر شده 34 بار در 25 پست

    پیش فرض

    سلام
    با تشکر از esisafa عزیز
    این یه نمونه برای کامپایلر mbed هستش که یه کامپایلر آنلاینه
    تقریبا همه این سمپلا از یه مثال چینی برای آردوینو مشتق شدن
    خوبی این مثال اینه که توضیحات کاملی داره که حتی از خوندن دیتا شیت هم بی نیاز میکنه
    البته من خودم هم دارم روش کار میکنم
    اگه به نتیجه ای رسیدین ما رو هم بی نصیب نزارید
    http://up.persianscript.ir/uploads/20c7-Dizgah.rar
    ویرایش توسط dizgah : 05-09-2014 در ساعت 21:57

  16. تشکرها از این نوشته :


  17. #11
    کاربر علاقه مند Shapour_Ardebil آواتار ها
    تاریخ عضویت
    Jun 2007
    نام
    ٍShapour
    نوشته ها
    98
    تشکر
    49
    تشکر شده 104 بار در 49 پست

    پیش فرض

    نقل قول نوشته اصلی توسط full_job نمایش پست ها
    سلام
    ممنونم بابت اینکه برنامه خوبتون رو اینجا در اختیار همه گذاشتید
    اگه ممکنه یک بار الگوریتم کار برنامه رو بگید مرحله به مرحله (منظورم توضیح خط به خط برنامه نیست ) تا بدونیم برای دسترسی به کارت چه مراحلی باید انجام بشه
    ممنون
    با سلام

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

  18. #12
    مدیرکل انجمنها
    تاریخ عضویت
    May 2011
    نام
    احسان صفامنش
    نوشته ها
    1,763
    تشکر
    919
    تشکر شده 2,261 بار در 1,056 پست

    پیش فرض

    به درخواستهای مکرر توصیحاتی از توابع کتابخونه رو اینجا قرار میدم.
    در داخل کتابخونه ای که بنده قرار دادم و برای کدویژن تغییر داده شده
    ابتدا باید پایه ی 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 استفاده بشه.

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

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

  19. کاربران : 4 تشکر کرده اند از شما esisafa برای ارسال این پست سودمند:


  20. #13
    عضو جدید
    تاریخ عضویت
    Jul 2014
    نوشته ها
    8
    تشکر
    0
    تشکر شده 1 بار در 1 پست

    پیش فرض

    با سلام خدمت دوستان انجمن
    من چند وقتی میشه دارم رو این ماژول کار میکنم . از همین کتابخونه استفاده کردم هر کارتی و میزنم فقط یه عدد 170 و یا 17a رو بهم نشون میده؟بعدشم شماره سریال کارت و هم تو بافر نشون نمیده؟

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

  21. #14
    عضو جدید
    تاریخ عضویت
    Jul 2014
    نوشته ها
    8
    تشکر
    0
    تشکر شده 1 بار در 1 پست

    پیش فرض

    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);

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

  22. #15
    مدیرکل انجمنها
    تاریخ عضویت
    May 2011
    نام
    احسان صفامنش
    نوشته ها
    1,763
    تشکر
    919
    تشکر شده 2,261 بار در 1,056 پست

    پیش فرض

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

  23. تشکرها از این نوشته :


  24. #16
    عضو جدید
    تاریخ عضویت
    Jul 2014
    نوشته ها
    8
    تشکر
    0
    تشکر شده 1 بار در 1 پست

    پیش فرض

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

  25. #17
    مدیرکل انجمنها
    تاریخ عضویت
    May 2011
    نام
    احسان صفامنش
    نوشته ها
    1,763
    تشکر
    919
    تشکر شده 2,261 بار در 1,056 پست

    پیش فرض

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

  26. تشکرها از این نوشته :


  27. #18
    عضو جدید
    تاریخ عضویت
    Dec 2014
    نوشته ها
    7
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

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

  28. #19
    مدیرکل انجمنها
    تاریخ عضویت
    May 2011
    نام
    احسان صفامنش
    نوشته ها
    1,763
    تشکر
    919
    تشکر شده 2,261 بار در 1,056 پست

    پیش فرض

    طبق برنامه ای که خودم گذاشتم تابع 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 وصل کنید و در کتابخونه معرفی کنید.
    ویرایش توسط esisafa : 02-01-2015 در ساعت 13:37

  29. تشکرها از این نوشته :


  30. #20
    عضو جدید
    تاریخ عضویت
    Jul 2014
    نوشته ها
    8
    تشکر
    0
    تشکر شده 1 بار در 1 پست

    پیش فرض

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

صفحه 1 از 3 123 آخرینآخرین

موضوعات مشابه

  1. برنامه نمونه برای راه اندازی mfrc522
    توسط dizgah در انجمن ماژول ها و دستگاه های مخابراتی
    پاسخ: 6
    آخرين نوشته: 29-10-2016, 11:10
  2. [آموزش] دانلود پروژه راه اندازی ماژول mfrc522 با lpc1768
    توسط mitechworld در انجمن LPC series (NXP)
    پاسخ: 3
    آخرين نوشته: 31-01-2015, 10:43
  3. [سوال] ماژول مایفر مدل mfrc522
    توسط mehdiit در انجمن AVR
    پاسخ: 0
    آخرين نوشته: 12-02-2014, 19:35
  4. کمک در Codevision
    توسط amirmufc در انجمن AVR
    پاسخ: 7
    آخرين نوشته: 08-08-2013, 20:42
  5. لینک دانلود برنامه CodeVision
    توسط amidboys در انجمن AVR
    پاسخ: 1
    آخرين نوشته: 25-01-2009, 19:18

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •