اطلاعیه

Collapse
No announcement yet.

پروژه صد در صد عملی و تست شده (rtc-isd4004) با Bascom

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

    پروژه صد در صد عملی و تست شده (rtc-isd4004) با Bascom

    سلام
    با یه بررسی توی تاپیکهای مختلف دیدم که بعضی از دوستان در کار با isd4004 به مشکل برخورده اند
    تصمیم گرفتم پروژه ای که دو سال قبل انجام دادم رو برای استفاده دوستان اینجا بذارم
    ضمناً توی این پروژه کارای دیگه ای هم انجام شده - نمایش تقویم و ساعت شمسی - منوی چند لایه فارسی در ال سی دی کاراکتری - تبدیل تاریخ شمسی به میلادی و بر عکس و محاسبات زمانی و کار با RTC میکرو ، ضبط و پخش صدا در آدرس دلخواه در ISD4004
    اما راستش رو بخواین نمی دونم از کجا توی eca پلود کنم
    لینک دانلود
    http://www.eca.ir/forum2/index.php?action=dlattach;topic=59091.0;attach=845 0
    http://www.4shared.com/rar/Hd3FMXAj/share.html
    رمز فایل: www.eca.ir
    سوالات احتمالی دوستان رو در همین تاپیک جواب می دم
    ولی از همین الان بگم که سرم نسبتاً شلوغه و ممکنه گاهی ارسال جوابها طول بکشه
    امیدوارم بتونه کمک حالتون باشه

    ضمناً دیگه این فقط سورس برنامه نیستش ، شماتیک + سورس + و فایل پروتئوس
    توی یه پوشه مجزا هم عملکرد منو تقریباً شبیه سازی شده وقت نداشتم دقیقشو پیدا کنم


    اگه دوستان مدیریت مایل بودن اونو همینجا تو سرور eca پلود کنن تا دسترسی دوستان راحت تر باشه

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

    #2
    پاسخ : پروژه صد در صد عملی و تست شده (rtc-isd4004) با Bascom

    نوشته اصلی توسط mrmokhtari
    سلام
    با یه بررسی توی تاپیکهای مختلف دیدم که بعضی از دوستان در کار با isd4004 به مشکل برخورده اند
    تصمیم گرفتم پروژه ای که دو سال قبل انجام دادم رو برای استفاده دوستان اینجا بذارم
    اما راستش رو بخواین نمی دونم از کجا توی eca پلود کنم
    لینک دانلود
    http://www.4shared.com/rar/ZHZTkYEs/ISD.html

    سوالات احتمالی دوستان رو در همین تاپیک جواب می دم
    ولی از همین الان بگم که سرم نسبتاً شلوغه و ممکنه گاهی ارسال جوابها طول بکشه
    امیدوارم بتونه کمک حالتون باشه

    ضمناً این فقط سورس برنامه هستش
    شماتیک و بقیه فایلها رو می خوام تو سرور eca پلود کنم امیدوارم دوستان راهنمایی کنند
    با سلام،

    برادر مختاری، دستت درد نکنه، خوشحالم که بعد از سالها عضویت، بالاخره تصمیم گرفتی فعال بشی. انشاالله که شاهد حضور هرچه فعال تر شما در انجمن باشیم. :applause:

    اما در مورد پلود کردن در سایت ECA باید بگم که این موضوع فقط برای کاربرهای خاص امکان پذیره. راهکار همینه که شما در 4shared و نظایر این پلود کنی و لینکش رو اینجا بزاری، دقیقا همین کاری که کردی.
    مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

    Sh_Nourbakhsh@Yahoo.com

    http://s2.picofile.com/file/7170362468/_Wall_e_.jp

    دیدگاه


      #3
      پاسخ : پروژه صد در صد عملی و تست شده (rtc-isd4004) با Bascom

      دوست عزیز میتونید لینکتون رو برای یکی از مدیران سایت بفرستید تا براتون پلود کنه!
      It's nice to be important but it's important to be nice!

      از اینکه نمی رسم جواب دوستان را بدم معذرت می خوام.

      دیدگاه


        #4
        پاسخ : پروژه صد در صد عملی و تست شده (rtc-isd4004) با Bascom

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

        دیدگاه


          #5
          پاسخ : پروژه صد در صد عملی و تست شده (rtc-isd4004) با Bascom

          ضمیمه شد.
          -----
          فایل دوم هم ضمیمه شد.
          فایل های پیوست شده

          دیدگاه


            #6
            پاسخ : پروژه صد در صد عملی و تست شده (rtc-isd4004) با Bascom

            دوستان عزیز
            من شماتیک و همه ی چیزایی که فکر می کردم لازمه رو توی لینک بالا گذاشتم
            ضمناً سورس اولی (ISD.rar ) مال یه خورده قبل از تکمیل نهایی پروژه است و احتمالاً ایراد داره

            از سورس جدید استفاده کنید

            دیدگاه


              #7
              پاسخ : پروژه صد در صد عملی و تست شده (rtc-isd4004) با Bascom

              نوشته اصلی توسط mrmokhtari
              برای دستوراتی که نیاز به آدرس ندارند مثل stop هم باید همین اصل رعایت بشه با این تفاوت که دو بایت اول دو بایت الکی یا همون به اصطلاح دامی(dummy) هستن
              با اضافه کردن دو تا بایت دامی هم مشکل من رفع نشد
              زیر برنامه ضبط اینه

              Sub Record_mode
              Spiout Address_low , 1
              Spiout Address_high , 1
              Spiout Powerup , 1
              Waitms 50
              Spiout Address_low , 1
              Spiout Address_high , 1
              Spiout Powerup , 1
              Waitms 100

              Spiout Address_low , 1
              Spiout Address_high , 1
              Spiout Setrec , 1

              Waitms 850

              Spiout Address_low , 1
              Spiout Address_high , 1
              Spiout Stoppwrdn , 1
              Waitms 100

              Address = Address + 2
              End Sub

              isd 4004 که من استفاده کردم از نوع 16 دقیقه ایش بود برا همین تایم ها دوبرابره

              بعد از ارسال دستور Setrec ، به مدت 850 میلی ثانیه صبر می کنم تا دو تا Row طی بشه ،در نوع 16 دقیقه هر سطر 400 میلی ثانیه طول می کشه

              من انتظار دارم که روی پایه RAC دو تا پالس ببینم( 350میلی بالا ، 50 میلی پایین ) ولی رو این پایه هیچی نیست و عمل ضبط انجام نمی شه

              به نظرتون مشکل از کجاست ؟

              دیدگاه


                #8
                پاسخ : پروژه صد در صد عملی و تست شده (rtc-isd4004) با Bascom

                من انتظار دارم که روی پایه RAC دو تا پالس ببینم( 350میلی بالا ، 50 میلی پایین ) ولی رو این پایه هیچی نیست و عمل ضبط انجام نمی شه

                به نظرتون مشکل از کجاست ؟
                سلام دوست عزیز

                پیشنهاد می کنم کد برنامه ای که اینجا قرار داده شده رو یه بررسی بکنید

                به نظر من مشکل شما در کانفیگ spi هستش دقت داشته باشین که setrec و powerup رو درست مقدار دهی کرده باشین

                اگه کانفیگ spi در برنامه شما lsb باشه setrec=&B10100000
                و اگه کانفیگ spi در برنامه msb باشه setrec=&B00000101 و البته باید مقلوب آدرس 16 بیتی محاسبه و ارسال بشه همون کاری که من در کد برنامه انجام داده ام زیر روال record رو ببینید Tad آدرس مورد نظر و Adrs مقلوب اونه
                کد:
                Config Spi = Soft , Din = Portc.0 , Dout = Portc.1 , Clock = Portc.4 , Ss = Portc.3
                Spiinit
                .........
                 Powerup = &B00000100
                 Setplay = &B00000111
                  Setrec = &B00000101
                  _stop = &B00001100
                Stoppwrdn = &B00001000
                
                .........................
                  For I = 0 To 15
                  Tmp = 15 - I
                  Adrs.i = Tad.tmp
                  Next I
                  Ar(2) = High(adrs)
                  Ar(3) = Low(adrs)
                
                Rc:
                Ar(4) = Setrec
                  Spiout Lsb , 1
                  Spiout Lsb , 1
                  Spiout Powerup , 1
                  Waitms 35
                  Spiout Lsb , 1
                  Spiout Lsb , 1
                  Spiout Powerup , 1
                  Waitms 65
                  Spiout Ar(2) , 3

                دیدگاه


                  #9
                  پاسخ : پروژه صد در صد عملی و تست شده (rtc-isd4004) با Bascom

                  سلام دوستان
                  فکر می کنم این سورس برنامه بدون بعضی توضیحات گنگ و گیج کننده باشه

                  در این پروژه پیامها با طول 25 سطر یا همون 5 ثانیه ضبط میشن
                  پس تفاوت آدرس هر پیام با پیام بعدی عدد 25 می باشد

                  پس یه متغیر شمارنده اندیس پیام با نام index تعریف شده

                  آدرس پیام در متغیر Tad ذخیره می شه
                  یعنی برای اولین پیام Tad=0
                  و برای پیام نهم Tad= 25*(9-1)=200

                  در روال record با استفاده از تایمر طول 5 ثانیه تنظیم میشه و در روالهای playmsg , plm , ply دیگه نیازی به این کار نیست

                  بعداً توضیح بیشتری میدم

                  موفق باشین

                  دیدگاه


                    #10
                    پاسخ : پروژه صد در صد عملی و تست شده (rtc-isd4004) با Bascom

                    من که آخرش نتونستم بهش آدرس بدم
                    با دستور هایی که آدرس نمی خوان درست کار می کنه ولی آدرس که می دی نه
                    برنامه اینه
                    کد:
                    $regfile = "m8def.dat"
                    $crystal = 1000000
                    
                    Config Spi = Hard , Interrupt = Off , Data Order = Lsb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 128 , Noss = 0
                    Spiinit
                    
                    Config Portd.0 = Output
                    Config Portd.1 = Input
                    Config Portd.3 = Input
                    Portd.1 = 1                         'pulled up
                    Portd.3 = 1
                    Declare Sub Record_mode
                    Declare Sub Playback_mode
                    
                    'constant values for isd4004-8M
                    '-------------------------------
                    Const T_pud = 25
                    Const T_play_pause = 50
                    Const T_rac_l = 25
                    Const T_rac_h = 175
                    Const Row_duration = 200
                    Const Record = 0
                    Const Playback = 1
                    
                    'commands in isd4004 series ,note: LSB is sent first
                    '---------------------------------------------------
                    Dim Powerup As Byte
                    Dim Setplay As Byte
                    Dim Play As Byte
                    Dim Setrec As Byte
                    Dim Rec As Byte
                    Dim Setmc As Byte
                    Dim Mc As Byte
                    Dim Stop_cm As Byte
                    Dim Stoppwrdn As Byte
                    Dim Rint As Byte
                    
                    Dim Address_high As Byte
                    Dim Address_low As Byte
                    Dim A(2) As Byte
                    Dim Slave_received_1 As Byte
                    Dim Slave_received_2 As Byte
                    Dim Slave_received_3 As Byte
                    
                    Dim Address As Word
                    Dim Mode_ As Bit
                    
                    
                    'initial values
                    '---------------------------------------------------
                    Powerup = &B00100000
                    Setplay = &B11100000
                    Play = &B11110000
                    Setrec = &B10100000
                    Rec = &B10110000
                    Setmc = &B11101000
                    Mc = &B11111000
                    Stop_cm = &B00110000
                    Stoppwrdn = &B00010000
                    Rint = &B00110000
                    
                    Address = 0                         'as don not care
                    
                    
                    Do
                    
                    If Pind.1 = 0 Then
                     Set Portd.0
                     Call Record_mode
                     Reset Portd.0
                    End If
                    
                    
                    Loop
                    
                    
                    
                    
                    
                    Sub Record_mode
                    Address_high = High(address)
                    Address_low = Low(address)
                    'Spiout Address_low , 1
                    'Spiout Address_high , 1
                    Spiout Powerup , 1
                    Waitms T_pud
                    Waitms 5
                    'Spiout Address_low , 1
                    'Spiout Address_high , 1
                    Spiout Powerup , 1
                    Waitms T_pud
                    Waitms T_pud
                    Waitms 5
                    
                    Spiout Address_low , 1
                    'Waitms 26
                    Spiout Address_high , 1
                    'Waitms 26
                    Spiout Setrec , 1
                    
                    Waitms 625
                    
                    Spiout Stoppwrdn , 1
                    Waitms T_play_pause
                    Waitms 5
                    
                    Address = Address + 3
                    End Sub
                    در ضمن دامی بایت هم بذاریم یا نذاریم دستورات یک بایتی کارمی کنند
                    مشکل من با دستور Spiout Setrec , 1
                    که کار نمی کنه
                    فکر می کنید مشکل از کجا باشه؟

                    دیدگاه


                      #11
                      پاسخ : پروژه صد در صد عملی و تست شده (rtc-isd4004) با Bascom

                      مشکل من با دستور Spiout Setrec , 1
                      که کار نمی کنه
                      فکر می کنید مشکل از کجا باشه؟
                      دوست عزیز اگه بگم مشکل شما کجاست باورتون میشه

                      DDRD.1=0 را فراموش کردی برای تعریف یه پورت به عنوان ورودی و با مقاومت پول پ داخلی باید به این شکل عمل کرد
                      DDRD.1=0
                      PORTD.1=1

                      دیدگاه


                        #12
                        پاسخ : پروژه صد در صد عملی و تست شده (rtc-isd4004) با Bascom

                        Config Portd.1 = Input
                        رو که گذاشتم
                        Portd.1 = 1
                        رو همینطور
                        مشکل از ورودی شدن پورت نیست
                        چون کار می کنه و وارد زیر برنامه میشه
                        مشکل جای دیگست

                        دیدگاه


                          #13
                          پاسخ : پروژه صد در صد عملی و تست شده (rtc-isd4004) با Bascom

                          یه توضیح در مورد شماتیک

                          ولتاژ vcc در واقع 3.3 ولته و میکرو mega32L هستش و توسط باتری li-io تامین میشه دستگاه با شارژر موبایل شارژ میشه

                          ال سی دی یه نوع خاص هست که با ولتاژ 3.3 ولت کار میکنه

                          ds1307 معمولاً با باتری بک اپ کار می کنه و فقط در زمان های خاص برای خوندن ساعت و تاریخ از اون

                          pd4 ست میشه و ds1307 فعال میشه عملاً در این پروژه rtc خود میکرو base قرار داده شده

                          مشکل جای دیگست
                          دوست عزیز من شاید خیلی وقت باشه که سراغ این پروژه نیومده باشم اما همون موقع هم یادمه که در جریان همین پروژه تونستیم با بچه های سایت یزد کیت isd رو راه بندازیم

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

                          تصمیم گرفتهام که از عملکرد همین پروژه یه فیلم تهیه کنم ولی اول باید بردشو دوباره رو براه کنم(توی اسباب کشی ها و گذر زمان خیلی از کانکتورها و سیمهاش قطع شدن و یا مفقود!)

                          پیشنهاد می کنم حتماً از دامی بایتها استفاده کنید و ضمناً فعلاً فقط دوتا آدرس پیش فرض به میکرو بدین و ضبط و پخش رو انجام بدین

                          من انتظار دارم که روی پایه RAC دو تا پالس ببینم( 350میلی بالا ، 50 میلی پایین ) ولی رو این پایه هیچی نیست و عمل ضبط انجام نمی شه

                          به نظرتون مشکل از کجاست ؟
                          همین مسئله دوباره بررسی کنید و این بار به جای setrec مقدار rec رو جایگزین کنین و نتیجه رو ببینین خیلی می تونه کمک کنه




                          دیدگاه


                            #14
                            پاسخ : پروژه صد در صد عملی و تست شده (rtc-isd4004) با Bascom

                            نوشته اصلی توسط mrmokhtari
                            دوست عزیز اگه بگم مشکل شما کجاست باورتون میشه
                            حالا اگه من بگم مشکل از کجاست شاید باورتون نشه
                            بلاخره فهمیدم
                            مشکل از بسکامه که بین
                            Spiout Address_low , 1
                            Spiout Address_high , 1
                            Spiout Setrec , 1
                            و
                            A(1) = Address_low
                            A(2) = Address_high
                            A(3) = Setrec
                            Spiout A(1) , 3
                            فرق می ذاره
                            من همش داشتم سه تا بایت رو به روش اول می فرستادم و کار نمی کرد
                            بعد که برنامه رو عوض کردم و از Array استفاده کردم درست شد
                            حالا خودم هم نفهمیدم که فرستادن سه تا بایت پشت سر هم و فرستادن همون سه تا بایت توسط Array چرا باید با هم فرق داشته باشه و اولی کار نکنه ؟

                            دیدگاه


                              #15
                              پاسخ : پروژه صد در صد عملی و تست شده (rtc-isd4004) با Bascom

                              یه سوال دیگه
                              چرا timer0 رو که فعال می کنم مقدار متغیر ها قبل و بعد از wait عوض می شه ؟
                              Temp = 253
                              Waitms 6
                              Ad_l = Temp
                              Locate 2 , 13
                              Lcd Ad_l
                              من انتظار دارم روی LCD همیشه 253 ببینم ولی بعضی وقتا 62 می بینم علتش چیه ؟

                              دیدگاه

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