اطلاعیه

Collapse
No announcement yet.

at commands در atmel studio

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    at commands در atmel studio

    سلام چطور میتونیم از دستورات at درatmel studio استفاده کنیم؟
    با تشکر
    [آموزشی] کنترل رله با پیامک توسط sim800l
    [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
    [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
    [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
    صفحه اینستاگرام : ecdco_ir


    #2
    پاسخ : at commands در atmel studio

    نوشته اصلی توسط reza0506 نمایش پست ها
    سلام چطور میتونیم از دستورات at درatmel studio استفاده کنیم؟با تشکر
    سلام
    الان مشکل شما کار با at command ها در کل هست یا مشکل کار با اتمل استدیو ؟ یکم سوال کلیه !!!
    در کل:
    1- اگر مشکل کار با at command ها هست من روشی که استفاده کردم اینکه شما میای و یه بافر میسازی 100 تایی بعد سریال رو روشن میکنی وقفش رو هم روشن میکنی هر کاراکتری که وارد میشه رو میبینی چیه مثلا اگه از سیم 900 استفاده میکنی . اصولا این ایسی یه کاراکتر 0x0A 0x0d میده بعدش اطلاعات رو میفرسته و در اخر هم دو تا کاراکتر 0x0a 0x0d رو دوباره میده که نشون میده ارسال اطلاعات تمومه این همون کاراکتر اینتر رو کیبرد هست
    تو اینترات شما تعداد کاراکترهای اینتر رو میشمری رسید به سه میای و کد داخل بافر رو با حلقهای for تحلیل میکنی . پیشنهاد اولم این هست حتما قبل نوشتن برنامه یه بار ای سی رو بزن به کامپیوتر با استفاده از ترمینال چک کن و فرمت اطلاعات رو بکش بیرون بعد با استفاده از اون برنامه بنیس یه همین راحتی به همین خوشمزگی
    2- اگر مشکل با اتل استدیو هست خوب اونجا از تابع ISR برای اینتراپت استفاده کن و بقیش تقریبا همون نکات بالاست
    ISR({Vector Name})
    {
    // Code to be executed when ISR fires
    }
    اینم مفیده :
    http://www.atmel.com/webdoc/AVRLibcR...nterrupts.htmlنکته :
    1-سعی کن تحلیل کد رو به داخل اینتراپت ندی . عوضش یه فلگ بزار تا تابع تحلیل تو while(1) اجرا شه
    2- ماژولهای at command وقتی روشن میشن هر کاراکتری بدی میرور میکنن پس میدن که با یه کدی خاموش میشه (الان یادم نیست کد رو ) پس تا قبل دادن این کد به ماژول اینتراپت سریال رو روشن نکن
    3- در هنگام ارسال دیتا همیشه سعی کن اینتراپت سریال رو خاموش کنی (یه جورایی این مورد مورد بالایی رو هم پوشش میده )

    سوال دیگه بود در خدمتم
    جدیدترین ویرایش توسط s699fx_bpr; ۱۴:۰۱ ۱۳۹۵/۰۵/۲۹.
    اشکهايي که پس از هر شکست ميريزيم همان عرقيست که براي پيروزي نريخته ايم.
    هيتلر

    دیدگاه


      #3
      پاسخ : at commands در atmel studio

      ممنون
      یعنی کتابخونه آماده at commands مثلاً برای sim900 وجود نداره و من باید از معادل هگز استفاده کنم؟ راستش من یه خورده گیج شدم اگر ممکنه در مورد اون بافر ها یه خورده توضیح بدید.چیز زیادی از at commands نمیدونم.
      جوابی که از sim900 به کامپیوتر یا میکرو فرستاده میشه به چه فرمتیه؟ کد اسکی؟
      [آموزشی] کنترل رله با پیامک توسط sim800l
      [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
      [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
      [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
      صفحه اینستاگرام : ecdco_ir

      دیدگاه


        #4
        پاسخ : at commands در atmel studio

        خیر تابع اماده وجود نداره
        دوست من سیم 900 جواب رو به صورت اسکی میده شما میتونی به صورت کاراکتر بخونی
        ببینید سیم 900 کار ش به این صورته که شما وقتی کیدی رو میدید بعد این که کارتون تموم شد یه اینتر میزنید و منتطر جواب میمونید مثلا
        *****
        AT+CMGF=1
        (inter)
        ****
        پایین کدم یه اینتر دادم وقتی سیم اینتر رو میگیره تحلیل میکنه کد رو و بهتون ok رو بر میگیردونه یا erorr
        برگشت کد به این صورت هست :
        *
        (inter)
        ok
        (inter)
        (inter)
        *
        خوب پس ما با این روش میفهمیم یه اینتر اومد یعنی میخواد حرف بزنه پس میاییم و یه بافر به طول 100 درست میکنیم مثلا char data[100] بعد میایم و داخل وقفه هر بار که رفت تو وقفه کاراکتری که میاد رو میریزیم تو بافر به غیر از اینترا ! اینترا رو به جای ریختن تو سیستم میایم و میشمریم . زمانی هم که کار تموم شد و 2 تا اینتر دیگه اومد که میشه مجموع 3 تا میاییم و کد داخل بافر رو میخونیم :
        کد:
        [CPP]
        if((data!=32)&&(data!=0x0A))  //FILTER INTER AND SPACE
            {       
                if(data!=13)              //NL CHAR FILTER
                {
                    int_sim[__SIM_CHR_C]=data;
                    __SIM_CHR_C++;
                }
                else if(data==13)         //NL CHAR ++ 2 NL MEANS TRANSMIT OVER
                {  
                    __SIM_NL_C++;         //NL++ - COUNT NL
                    if(__SIM_NL_C>=2)     //IF>2 TRANSMIT OVER
                    {                     
                        for(i=0;int_sim[i];i++)            //OK
                        {
                            if(int_sim[i]=='O')
                                if(int_sim[i+1]=='K')
                                    ret=__SIM_OK;          //SET FLAG
                        }
                        for(i=0;int_sim[i];i++)            //ERROR
                        {
                            if(int_sim[i]=='E')
                                if(int_sim[i+1]=='R')
                                    ret=__SIM_ERROR;       //SET FLAG
                        }
                        for(i=0;int_sim[i];i++)            //NOCAR
                        {
                            if(int_sim[i]=='N')
                                if(int_sim[i+1]=='O')
                                    ret=__SIM_NOCAR;       //SET FLAG
        [/CPP]
        به این چند خط دقت کنید
        تو If اول میایم کاراکترهای space ,و inter رو حدف میکنیم تو if زیریش اگر کاراکتر 13 یعنی 0x0d نبود که اینتر هست میاد کاراکتر رو میریزه تو ارایه بعدش یه دونه میره بالا عدد و منتطر کاراکتر بعدی میمونه . تو else if پایین میاد میگه اگه کاراکتر 13 بود یعنی اینتر بیاد اول به دونه بشمره اینتر رو بعد چک کنه ببینه تعداد اینترا اگه از 2 بیشتر بود (اینجا 0 هم حسابه ) اون موقع یعنی که کد ها کامل اومده و بافر int_sim داخلش پر از اطلاعاته . حالا میاد با یه حاقه for داخلش رو میخونه اگه مثلاint_sim[0] مساوی O و int_sim[1] مساوی K بود یعنی OK اومده که به نسبت کاراکتر قبلی شما میفهمید فرمان اجرا شده
        همین زور Error و غیره
        من این فایل رو ضمیمه کردم یکم قدیمیه و سر و سامون میخواد به هر حال کار میکنها نه این که نمیکنه شما فایل رو مطالعه بکنبد اگر مشکلی بود در خدمتم
        MediaFire is a simple to use free service that lets you put all your photos, documents, music, and video in a single place so you can access them anywhere and share them everywhere.

        در مورد فرمت هم عرض کنم وقتی sms میاد مثلا شماره کسی که داده تاریخی که اومده و کجا ذخیرست و غیره همه تو یه خط کد میاد بینه این اطلاعات مثلا . یا / هست (الان حطور ذهن ندارم کدوم) اما شما باید این فرمت رو بدست بیارید با اتصال به کامپیوتر و انجام این کارها به عنوان مثال:
        *
        inter
        SMS/شماره حافطه/شماره شخص/متن پیام/ تاریخ ارسال/ تاریخ دریافت
        اینا همه تو بافر میره شما باید با for بگردید دنبال اون نقزه دل خواه و داخلش رو بخونید مثلا از / شوم تا / چهارم که متن اس ام اس هست رو من میخوام پی با یه حلقه for میگم شما چک کن با بررسی به سومین / (جایی که توی بافر / سوم هست رو سیو میکنم(مثلاخونه10) بعد میگیم بازم بشمر تا / چهارم رو پیدا کنی(مثلا خونه 20) . حالا شماره اونم بریز تو به متغیرر دیگه الان مثلا میدونی از خونه 10 تا 20 اون ارایهکه ازاطلاعات هست مربوط هست به متنی که واسز اومده اینجوری اطلاعات رو جدا میکنی هر کدوم رو تو یه ارایه مربوز به خودش میریزی مثلا شماره طرف رو میریزی تو یه ارایه دیگه به اسم نامبر و متن تو یه ارایه دیگه به اسم نوت حالا هر کودوم رو میخوای هر کاری دوست داری باهاش میکنی

        امیدوارم گیج کننده توضیح نداده باشم
        جدیدترین ویرایش توسط اشکان غفارزاده; ۱۵:۰۴ ۱۳۹۵/۰۵/۲۹.
        اشکهايي که پس از هر شکست ميريزيم همان عرقيست که براي پيروزي نريخته ايم.
        هيتلر

        دیدگاه


          #5
          پاسخ : at commands در atmel studio

          واقعاً ممنون،متوجه شدم
          [آموزشی] کنترل رله با پیامک توسط sim800l
          [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
          [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
          [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
          صفحه اینستاگرام : ecdco_ir

          دیدگاه

          لطفا صبر کنید...
          X