اطلاعیه

Collapse
No announcement yet.

مشکل در پروگرام ومتغییر با ATTINY15

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

    مشکل در پروگرام ومتغییر با ATTINY15

    باسلام به دوستان

    من دو تا مشکل با استفاده از TINT15دارم:

    1--بعداز پروگرام کردن بایستی پایه RESETروقطع وبهVCCوصل کنم ومثل بقیه میکروها بعد از پروگرام کردن در مدار کار نمیکنه
    2-در برنامه (BASIC) نمی تونم از متغییر استفاده کنم تو اینترنت دیدم از دستورDim K As Iram Byte استفاده کرده که البته دلیلش رو نفهمیدم

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

    #2
    پاسخ : مشکل در پروگرام ومتغییر با ATTINY15

    اون شماره یک که قانونه attiny هست و درسته و نباید هم کار کنه


    دومی رو هم نمیدونم
    فکر کنم چون sram کوچکی دارن
    یک نمون برنامه
    '-------------------------in the name of god------------------------------------
    '-----------------***paye1(reset)pullup shavad***-------------------------------
    '-----------------***neiazi be crystal nist:-)***-------------------------------




    $regfile = "attiny15.dat"
    $tiny
    $crystal = 1000000
    $noramclear
    Config Portb = Output
    Dim A As Iram Byte
    Dim B As Iram Byte
    Do
    Set Portb.0
    Set Portb.1
    Set Portb.2
    Set Portb.3
    Set Portb.4
    Waitms 300
    Reset Portb.0
    Reset Portb.1
    Reset Portb.2
    Reset Portb.3
    Reset Portb.4
    Waitms 300
    Set Portb.0
    Set Portb.1
    Set Portb.2
    Set Portb.3
    Set Portb.4
    Waitms 300
    Reset Portb.0
    Reset Portb.1
    Reset Portb.2
    Reset Portb.3
    Reset Portb.4
    Waitms 300
    Set Portb.0
    Set Portb.1
    Set Portb.2
    Set Portb.3
    Set Portb.4
    Waitms 300
    Reset Portb.0
    Reset Portb.1
    Reset Portb.2
    Reset Portb.3
    Reset Portb.4
    Waitms 1050

    Loop
    علم چندانکه بیشتر خوانی چون عمل در تو نیست نادانی

    دیدگاه


      #3
      پاسخ : مشکل در پروگرام ومتغییر با ATTINY15

      با تشکر از جواب دوستم

      در مورد سوال اول با AATINYهای دیگه این مشکل رو ندارم

      دیدگاه


        #4
        پاسخ : مشکل در پروگرام ومتغییر با ATTINY15

        فکر کنم چون sram کوچکی دارن
        به هر حال هیچی هم که نداشته باشه 32 تا رجیستر همه منظوره رو داره که میشه مقداری از اونها رو به متغیر ها اختصاص داد، یعنی bascom از رجیسترهای R0 تا R31 اصلا برای متغیرها استفاده نمیکنه؟!!
        من دیتا شیت رو نگاه کردم انگار اصلا اثری از SRAM توش نیست، حتی توی عکسی که از معماریش کشیده شده هم چیزی به نام SRAM ندیدم و فقط همون رجیسترهای عمومی برای این منظور دیده میشد، سوالی که برام پیش اومد این بود که حافظه پشته این میکرو رو باید کجا تعریف کرد؟ oo:
        از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
        هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
        اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
        اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
        شاد و موفق باشید

        دیدگاه


          #5
          پاسخ : مشکل در پروگرام ومتغییر با ATTINY15

          سلام
          attiny15 توش sram که ما میشناسیم نیست. oo: من هم چند وقت سر کار بودم. اگه براتون مهم نیست از Attiny13 استفاده کنید (فکر نکنم تفاوت قیمت داشته باشه ولی خوب کار میکنه اگه وقفه نباشه)

          به هر حال ابن میکرو توی بیسکام اصلا کار نمیکنه. کدویژن رو که نمیدونم ولی avr studio و IAR حتما...

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

          راستی توی هیچ زبان سطح بالایی مثله بیسیک یا سی از رجیستر برای متغییر استفاده نمیکنه

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

          راستی برای tiny13 توی بیسکام بهتره که swstack و hwstack و framesize رو کوچک کنید تا کامپایلر نترکه :mrgreen:
          به وبلاگم سر بزنید

          دیدگاه


            #6
            پاسخ : مشکل در پروگرام ومتغییر با ATTINY15

            راستی توی هیچ زبان سطح بالایی مثله بیسیک یا سی از رجیستر برای متغییر استفاده نمیکنه
            alitarooshesh جان منظور شما از رجیستر، رجیسترهای R0 تا R31 هست؟ تا اونجا که یادمه کدویژن در حالت پیشفرض متغیرهای از نوع global رو توی رجیسترهای R15 به پایین ذخیره میکرد. حداقل یادمه من بدون اینکه setting رو دستکاری کنم برنامه ای اوشته بودم که متغیرهای global خود به خود اونجاها تعریف شده بودند و من هم تغییرشمون ندادم، درست هم جواب میداد.
            در مورد avr studio درسته، tiny 15 رو قطعا پشتیبانی میکنه.
            من همچنان علاقمند به یافتن پاسخ این سوال هستم که اگر SRAM نیست پشته باید کجا تعریف بشه؟ رجیسترهای R0 تا R31؟ اگر کسی اطلاع داره ممنون میشم توضیح بده.
            از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
            هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
            اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
            اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
            شاد و موفق باشید

            دیدگاه


              #7
              پاسخ : مشکل در پروگرام ومتغییر با ATTINY15

              نوشته اصلی توسط Study
              من همچنان علاقمند به یافتن پاسخ این سوال هستم که اگر SRAM نیست پشته باید کجا تعریف بشه؟ رجیسترهای R0 تا R31؟ اگر کسی اطلاع داره ممنون میشم توضیح بده.
              دوست عزیز جناب study

              Attiny15 از 3 level پشته (Stack) استفاده می کنه . می تونید اینطوری در نظر بگیرید که 3 آدرس رم برای این کار در نظر گرفته شده ولی شما به این 3 آدرس دسترسی مستقیم ( مثل حالتی که از رم به عنوان stack استفاده میکنید ) ندارید.

              در ضمن به رجیستر های R0 تا R31 هم مرتبط نیست .

              دیدگاه


                #8
                پاسخ : مشکل در پروگرام ومتغییر با ATTINY15

                ممنون مجید جان همین رو میخواستم :applause:
                خوب از این لحاظ معماری پشته مثل میکروهای PIC میشه که بسته به نوعشون از وقفه های چند سطحه استفاده میکنند و از حافظه Ram و رجیستر کاری جدا هست ( اگر اشتباه نکنم MCS51 هم پشته چند سطحه داره درسته؟ )
                این تنها AVR هست که از این سیستم برای پشته استفاده میکنه؟ تو سری های میانی و مگا ها هم این سیستم استفاده شده یا غیر از این مدل بقیه کلا پشته رو توی Ram تعریف میکنند؟
                راستی سوال دیگه اینکه حالا که پشته به این صورت براش در نظر گرفته شده که دیگه برای استفاده از اون نیازی به تعریف قبلی توسط برنامه نویس نیست، درسته؟
                باز هم تشکر من تا قبل از این فکر میکردم همه AVR ها سیستم پشته یک سطحه مشابه دارند که در RAM تعریف میشند !
                از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
                هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
                اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
                اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
                شاد و موفق باشید

                دیدگاه


                  #9
                  پاسخ : مشکل در پروگرام ومتغییر با ATTINY15

                  ظاهرا چند مدل دیگه از tiny ها هم به همین شکل هستند، بی دقتی از من بود حالا که دقیقتر به معماری نگاه کردم دیدم این بخش hardware stack رسم شده و اشاره گرش هم به همین ترتیب و روی شکل هم مشخص هست که دسترسی به اشاره گر وجود نداره، نمیدونم توی سری های مگا هم این نوع پشته پیاده سازی شده یا نه ولی اگر شده باشه احتمالا اونجا دسترسی به اشاره گر پشته رو باید در اختیار کاربر گذاشته باشند تا مزیت های اصلی ایجاد بشه. ( البته اگر این سیستم انجام شده باشه )
                  از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
                  هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
                  اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
                  اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
                  شاد و موفق باشید

                  دیدگاه


                    #10
                    پاسخ : مشکل در پروگرام ومتغییر با ATTINY15

                    نوشته اصلی توسط Study

                    این تنها AVR هست که از این سیستم برای پشته استفاده میکنه؟ تو سری های میانی و مگا ها هم این سیستم استفاده شده یا غیر از این مدل بقیه کلا پشته رو توی Ram تعریف میکنند؟
                    تمامی مدل های AVR که ram دارند و سری MCS51 از رم بعنوان پشته استفاده می کنند.

                    نوشته اصلی توسط Study
                    راستی سوال دیگه اینکه حالا که پشته به این صورت براش در نظر گرفته شده که دیگه برای استفاده از اون نیازی به تعریف قبلی توسط برنامه نویس نیست، درسته؟
                    خیر نیازی نیست

                    من هم از شما متشکرم .

                    موفق باشید.

                    دیدگاه


                      #11
                      پاسخ : مشکل در پروگرام ومتغییر با ATTINY15

                      نوشته اصلی توسط alitaroosheh


                      به هر حال ابن میکرو توی بیسکام اصلا کار نمیکنه. کدویژن رو که نمیدونم ولی avr studio و IAR حتما...
                      علی جان من خودم واسه attiny15 با bascom برنامه نوشتم و جواب هم گرفتم
                      علم چندانکه بیشتر خوانی چون عمل در تو نیست نادانی

                      دیدگاه


                        #12
                        پاسخ : مشکل در پروگرام ومتغییر با ATTINY15

                        ممنون مجید جان با این قسمت از اطلاعاتت خیلی حال کردم و خیلی هم برام مهم بود که متوجه شدم AVR هم برای چند مدل از میکروهاش از این سیستم استفاده کرده، شک ندارم که شما در مدتی که با میکروها کار میکردی دستی توی اسمبلی هم داشتید یا همچنان دارید که به این موارد هم دقت میکنید. :agree: :applause:
                        بنا به چند دلیل مدتی هست که معماری میکروها برام مهم شده و پشته هم یکی از قسمت هایی هست که جای بحث زیادی داره و دارم روی مزایا و معایب هر نوع از این پشته ها تحقیق میکنم، اگر فرصت شد و تحقیق رو کامل کردم و به نتایج مشخص و مفیدی رسیدم که از صحتشون اطمینان کامل داشتم یک تاپیک جدید برای این موضوع باز میکنم تا بتونیم در این مورد بیشتر بحث کنیم و از نظرات و اطلاعات دوستان خوبی مثل شما هم بهرمند بشم.
                        باز هم تشکر
                        از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
                        هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
                        اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
                        اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
                        شاد و موفق باشید

                        دیدگاه


                          #13
                          پاسخ : مشکل در پروگرام ومتغییر با ATTINY15

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

                          در مورد متغییر گلوبال توی سی هم یه سوال میپرسم با برهان نقض میرسم به جواب:

                          سوال: متغییر گلوبالی تعریف کنید از جنس ارایه کارکتری به طول 50 عضو؟

                          اگه اینطوری که شما گفتید باید 50 بایت زیر r15 قرار گرفته باشه!!!

                          نه

                          همیشه توی برنامه نویسی های سطح بالا رجیسترهای همه کاره محل انجام عملیات هستن نه محل ذخیره سازی
                          معماری risc بجای آکومولاتور چند تا رجیستر رو در اختیار میگیره که رفتاری شبیه به آکومولاتور دارن(اصلا به همین نام میخونن) وقتی شما متغییری تعریف میکنید توی sram ذخیره میشه و وقتی روی اون عملی انجام میدید اول میره توی رجیسترهمه کاره که بعد عمل انجام میشه و جواب بر میگرده توی sram
                          واسه همینه که هیچ برنامه ای به گرد سرعت اسمبلی نمیرسه

                          در مورد صحبت اقای omega_adiban من چند ساله پیش با هاش نتونستم کار کنم ممکنه جدیدا توی ورژن جدیدا این مشکل حل شده باشه!!!
                          اما اگه میتونید سورس بذارید(راستی اگه توی پروتئوس فقط تست کردید قبول نیست چون غلطه و عملا کار نمیکنه)

                          چون اگه به دستورات قابل دسترس tiny15 دقت کنید این میکرو محدودیتهای زیاد پشتیبانی از دستورات رو داره(خیلی از دستورات که میکرو های دیگه دارن این میکرو نداره) واسه همین میکرو با برنامه بیسیک هنگ میکنه
                          به وبلاگم سر بزنید

                          دیدگاه


                            #14
                            پاسخ : مشکل در پروگرام ومتغییر با ATTINY15

                            alitarooshesh جان ظاهرا من بد توضیح دادم و شما منظور من رو اشتباه برداشت کردی، منظور من این نبود که تمام متغیرها در رجیستر های R15 به پایین تعریف میشند و جای دیگه ای برای اونها در نظر گرفته نشده و باید هم به همین صورت باشه منظور من این بود که تعدادی از متغیرها هم در رجیسترهای R4 تا R15 قرار میگیرند، البته حالا که دقت کردم دیدم R4 تا R13 هست. ( البته ما میتونیم تنظیمات کامپایلر رو طوری انجام بدیم که اینکار انجام نشه ) در این صورت مشکلی برای محاسبات هم پیش نمیاد چون هنوز R14 تا R31 آزاد هستند و R0 تا R3 هم به همین صورت، در نتیجه میشه بدون هیچ مشکلی اونها رو در عملیات شرکت داد و عملیات رو به وسیله این رجیسترها انجام داد. در مورد اینکه قسمت زیادی از متغیرها در SRAM تعریف میشند که اصلا شکی نیست، اگر قرار بود همه متغیرها در رجیسترهای همه کاره تعریف بشند که دیگه SRAM به درد نمیخورد. منظور من این هست که اگرچه در زبان های سطح بالا از SRAM برای ذخیره متغیر استفاده میشه اما دلیل بر این نیست که از رجیسترهای عمومی استفاده نشه، من دقیقا دیدم که CodeVision از R4 تا R13 برای ذخیره متغیر Global استفاده کرده به این صورت که مثلا من متغیری از نوع unsigned int تعریف کرده بودم و CodeVision جفت رجیستر R4 و R5 رو بهش اختصاص داده، بعد دوباره یک متغیر دیگه از همین نوع تعریف کردم و جفت رجیستر R6 و R7 رو بهش اختصاص داد و این روال ادامه پیدا کرد تا اینکه به جفت R12 و R13 رسید. بعد از اون متغیرهایی که به همین صورت تعریف شدند در آدرس 160 و 161 هگزا دسیمال و بعد از اون 162 و 163 هگز و به همین ترتیب ذخیره شدند، پس در واقع بعد از اینکه کامپایلر فضای مورد نظرش در رجیسترهای عمومی رو که برای ذخیره متغیر ها در نظر گرفته بوده پر شده دیده تازه شروع کرده و توی RAM بقیه متغیرها رو قرار داده. طبیعی هم هست، برای انجام عملیات لازم نیست تمام 32 تا رجیستر رو استفاده کنیم، میشه بعضی از متغیرها رو هم توی تعدادی از این رجیسترهای عمومی قرار داد، که ظاهرا CodeVision هم همینکار رو میکنه.

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

                            دیدگاه


                              #15
                              پاسخ : مشکل در پروگرام ومتغییر با ATTINY15

                              بیخیال

                              اصلا ولش کن کامپایلر هر کار میکنه بکنه :mrgreen:
                              attiny15 رو اگه کسی با بیسکام راه انداخته سورس بده
                              به وبلاگم سر بزنید

                              دیدگاه

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