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

موضوع: سوالات مربوط به پروژه های AVR موجود در سایت

  1. #1
    کاربر فعال medadnoki آواتار ها
    تاریخ عضویت
    Aug 2010
    نام
    پژمان قاسمی
    نوشته ها
    255
    تشکر
    99
    تشکر شده 102 بار در 77 پست

    پیش فرض سوالات مربوط به پروژه های AVR موجود در سایت

    سلام ! کسی میتونه در مورد پروژه آژیر پلیس توضیح بده(صفحه 7 , نوشته شده توسط masoodhashemy),,,,,,ثواب داره به خدا
    من یه مدار پیدا کردم که مدار آنالوگه (مربوط به آژیر پلیس) که پایین گذاشتم
    اگه اینو تو پروتوس ببندم آژیر میزنه؟؟؟؟؟؟؟؟؟
    در ضمن مدار آنالوگ هم که برنامه نمیخواد ........پس چرا دوست عزیزمون masoodhashemy مدار با برنامه به زبان بسکام گذاشته(در ضمن من نتونستم دانلود کنم)
    سوال دیگه این که چطور باید این مدار به میکروکنترلر وصل بشه؟؟؟؟؟؟؟؟؟؟

    لینک مربوط به عکس مدار آنالوگی که پیدا کردم:
    http://efreephoto.com/image-13095689794d4d7ea3de469.htm

    http://efreephoto.com/pictures/19526...d7ea3d82c7.gif

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


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

  4. #2
    مدیر باز نشسته masoodhashemy آواتار ها
    تاریخ عضویت
    Sep 2009
    نام
    بوشهر - نام: علیرضا.غ
    نوشته ها
    328
    تشکر
    212
    تشکر شده 593 بار در 145 پست

    پیش فرض

    نقل قول نوشته اصلی توسط medadnoki نمایش پست ها
    سلام ! کسی میتونه در مورد پروژه آژیر پلیس توضیح بده(صفحه 7 , نوشته شده توسط masoodhashemy),,,,,,ثواب داره به خدا
    من یه مدار پیدا کردم که مدار آنالوگه (مربوط به آژیر پلیس) که پایین گذاشتم
    اگه اینو تو پروتوس ببندم آژیر میزنه؟؟؟؟؟؟؟؟؟
    در ضمن مدار آنالوگ هم که برنامه نمیخواد ........پس چرا دوست عزیزمون masoodhashemy مدار با برنامه به زبان بسکام گذاشته(در ضمن من نتونستم دانلود کنم)
    سوال دیگه این که چطور باید این مدار به میکروکنترلر وصل بشه؟؟؟؟؟؟؟؟؟؟

    لینک مربوط به عکس مدار آنالوگی که پیدا کردم:
    http://efreephoto.com/image-13095689794d4d7ea3de469.htm

    http://efreephoto.com/pictures/19526...d7ea3d82c7.gif
    یعنی چی مدار رو با زبان بیسیک گذاشتم؟
    خوب این مدار دیجیتال هست نه مدار آنالوگ
    توی مدار دیجیتال با فرستادن پالس با فرکانس و کشیدگی خاصی روی پین خاصی از میکرو این صدا را تولید میکنیم که در واقع باید فرکانس صدا را تغییر دهیم با همان حلقه های for داخل برنامه

    در مدارهای آنالوگ معمولا با شارژ و دشارژ شدن خازن چنین کاری میکنیم که میتوایم سرعت شارژ و دشارژ را با ثابت زمانی تغییر دهیم یا اینکه در واقع بیاییم مدارهایی را با عناصر فعال تولید کنیم تا خروجی شبیه مورب داشته باشند. اما خود مولدهای موج مورب چگونه هستند؟ همین ها هم بر اساس شارژ خازن و سوییچ کردن ترانزیستور در موقع خاص است!
    اگر دقت کرده باشی در مداری که گذاشتی با قطع کردن سوییچ باعث شارژ خازن با ثابت زمانی خاصی هستید به مقاومتهای 100 کیلو و 33k و خازن 22 میکرو توجه کن!
    و در قسمت خروجی هم فقط یک تقویت کننده ساده گذاشته تا بلندگوی 8 اهم را راه اندازی کند که در واقع این تقویت کننده کار تطبیق امپدانس را هم انجام میدهد!

    توی این برنامه که همون اول ها گذاشتم در واقع از سایت AVR64 بود که منم گذاشتمش تا بعضی ها با تولید صدا آشنا شوند

    اینم لینک برنامه مربوطه (فکر کنم سایت فیلتر شده)
    http://www.fileden.com/files/2009/11...ce%20alarm.rar

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

  5. #3
    کاربر فعال medadnoki آواتار ها
    تاریخ عضویت
    Aug 2010
    نام
    پژمان قاسمی
    نوشته ها
    255
    تشکر
    99
    تشکر شده 102 بار در 77 پست

    پیش فرض

    بالاخره تونستم ,,,,,,فقط یه سوال : اگه بخواییم صداهایی غیر از آژیر تولید کنیم چیکار باید بکنیم؟؟؟ مثلا صدای قطار ، هلیکوپتر و .........

    اگه هم منبعی درباره آموزش آی سی های ISD دارین معرفی کنید
    ممنون

  6. #4
    مدیر باز نشسته masoodhashemy آواتار ها
    تاریخ عضویت
    Sep 2009
    نام
    بوشهر - نام: علیرضا.غ
    نوشته ها
    328
    تشکر
    212
    تشکر شده 593 بار در 145 پست

    پیش فرض

    با اون دستوری که کار کردیم فقط میتوانیم همین صداهای ساده را تولید کنیم
    اما برای صدای قطار یا هلی کوپتر بهتره پترن صدا را در آوریم
    یعنی باید یک جدول داده بسازیم و بعد آن را روی یک پورت بیندازیم و خروجی پورت را به dac بدهیم
    مثلا اگر چنین کاری با avr انجام دهیم کیفیت صدا 8 بیت است
    لذا به خاطر همین هست که دستگاه های پخش صدا واحد های dsp و dac خوبی دارند
    نمونه های کار شده با avr میتوانی به پروژه ای تحت عنوان Mp3 player با avr مراجعه کنی

    در مورد آیسی ISD :
    این یک سری توضیحات و یک پروژه:
    http://yazdkit.com/isd4004-8min-16-m....html?nomobile
    که اون 2 تا فایل رو در همین قسمت پروژه ها گذاشته بودم اما لینکش متاسفانه پریده
    http://www.iranmicro.ir/forum/showpo...7&postcount=33
    فعلا از همون yazdkit دانلود کن تا بعدا

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

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


  8. #5
    کاربر فعال medadnoki آواتار ها
    تاریخ عضویت
    Aug 2010
    نام
    پژمان قاسمی
    نوشته ها
    255
    تشکر
    99
    تشکر شده 102 بار در 77 پست

    پیش فرض

    چه جوری پترن در بیاریم ؟

    منظورتون از جدول داده چیه ؟

    درباره dac بیشتر توضیح بدین!!!!!!!!

  9. #6
    مدیر باز نشسته masoodhashemy آواتار ها
    تاریخ عضویت
    Sep 2009
    نام
    بوشهر - نام: علیرضا.غ
    نوشته ها
    328
    تشکر
    212
    تشکر شده 593 بار در 145 پست

    پیش فرض

    دوست عزیز من در قسمت پروژه های avr دو تا پروژه میگذارم که مشکل شما کاملا حل میشود شما فقط کافیه فایل صوتی مربوطه را روی حافظه بریزید
    فقط منتظر بمان تا روی سایت بگذارم.
    شما هم دعا کنید مشکل من در arm9 حل بشه!
    خنده بر لب میزنم تا کس نداند راز من.........ورنه این دنیا که ما دیدیم خندیدن نداشت
    وبلاگ شخصی

  10. #7
    کاربر فعال medadnoki آواتار ها
    تاریخ عضویت
    Aug 2010
    نام
    پژمان قاسمی
    نوشته ها
    255
    تشکر
    99
    تشکر شده 102 بار در 77 پست

    Icon16

    ان شا الله که مشکلتون حل شه
    من تو arm وارد نیستم وگرنه حتما کمکتون میکردم

  11. #8
    مدیر باز نشسته masoodhashemy آواتار ها
    تاریخ عضویت
    Sep 2009
    نام
    بوشهر - نام: علیرضا.غ
    نوشته ها
    328
    تشکر
    212
    تشکر شده 593 بار در 145 پست

    پیش فرض

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

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

  12. #9
    مدیر باز نشسته masoodhashemy آواتار ها
    تاریخ عضویت
    Sep 2009
    نام
    بوشهر - نام: علیرضا.غ
    نوشته ها
    328
    تشکر
    212
    تشکر شده 593 بار در 145 پست

    پیش فرض

    راستی در سایت eca هم مطلبی در این مورد آمده اما باید بتونی نت ها را استخراج کنی
    همون روش lookup هست:
    یوزر بنام "طراح" توضیح داده اند:

    این مطلب به میکروکنترلر خاصی اختصاص ندارد بر روی تمام خانواده های8051 و AVR و PIC و ARM و ... قابل اجرا است و بنابراین در این بخش آورده شده است.
    برای تولید نت موسیقی با هر میکروکنترلری باید بر نکته اساسی زیر واقف بود:

    نسبت فرکانس هر دو نت متوالی در دستگاه موسیقی بین المللی(فاصله نیم پرده) برابر است با عدد 1.059463

    بنابراین اگر یک نت را به عنوان نقطه مبنا در نظر بگیریم، فرکانس نت بعدی 1.059463 برابر نت فعلی و فرکانس نت قبلی هم همین فرکانس تقسیم بر 1.059463 خواهد بود.با توجه به تدوین قراردادی مبنی بر قرار دادن یکی از نت های Do برابر با 440 هرتز، می توانیم همین عدد 440 هرتز را به عنوان مبنا در نظر بگیریم و فرکانس نت های بعدی و قبلی را با ضرب یا تقسیم متوالی بر عدد مذکور بدست آوریم.
    در این مورد باز هم توضیح داده خواهد شد.
    در دستگاه موسیقی بین المللی که روی سازهایی مانند پیانو پیاده می شود، 12 نت با نام های مستقل وجود دارد که اگر هر نتی را در نظر بگیریم بعد از طی 12 نت به نت هم نام آن می رسیم و فرکانس نت هم نام بعدی دقیقا 2 برابر (یک octave) نت فعلی است. بنابراین برای برنامه نویسی هر میکرو کنترلری کافی است تنها 12 مقدار مستقل را برای کل نت ها بصورت یک Lookup Table در حافظه flash قرار دهیم و بقیه نت ها از روی همین 12 مقدار قابل ساخته شدن هستند. مقادیری که در این Table ذخیره می شوند، مقدار لازم برای قرار دادن در تایمری است که سبب تولید فرکانس مورد نظر در خروجی شود.
    برای تولید هر نت دو مقدار فرکانس و طول مدت نواخته شدن نت باید در برنامه تعیین شود. به این منظور دو عملیات زمان گیری جداگانه باید برنامه ریزی شود. یکی تایمری که پورت خروجی را در یک فاصله زمانی مشخص toggle می کند و تایمر دومی که بعد از سپری شدن زمان مورد نظر برای نت، به عملیات تایمر اول خاتمه می دهد. مثلا اگر قرار باشد نت Do با فرکانس 440 هرتز به مدت یک ثانیه نواخته شود، با توجه به اینکه پریود این موج تقریبا 2.273 میلی ثانیه می شود و موج مورد نظر یک بخش low و یک بخش high دارد، بنابراین باید یک تایمر در وضعیتی قرار داده شود که با سپری شدن نصف این زمان 2.273 میلی ثانیه که 1.1365 میلی ثانیه می شود، خروجی مورد نظر را toggle کند. همزمان باید تایمر دیگری با مدت زمان 1 ثانیه بکار بیافتد و بعد از سپری شدن مدت زمان تایمر دوم، toggle شدن خروجی تولید کننده صدا متوقف شود. پس برای ایجاد یک موسیقی کامل کافی است نت های متوالی تولید کننده آن موسیقی به همراه طول مدت نواخته شدن هر نت را در یک یا دو lookup table قرار دهیم و با سپری شدن زمان هر نت، تایمرهای دوگانه مذکور را مجددا مقداردهی کنیم و منتظر بمانیم تا زمان نت جاری سپری شود.
    در زیر، نسخه های BASCOM و code vision برای پیاده سازی موسیقی " ای ایران" ساخته مرحوم روح الله خالقی با AVR پیاده سازی شده است:
    برای نشان دادن روش پیاده سازی عملی این تئوری، ملودی موسیقی سرود " ای ایران " ساخته مرحوم روح الله خالقی را در برنامه ای پیاده سازی کرده ام. این برنامه با فرض فعال بودن اسیلاتور 1 مگاهرتز داخلی، در خروجی PB0 شکل موج لازم را تولید می کند و برای شنیدن آن کافی است یک بلندگو از طریق یک ترانزیستور به پورت متصل شود. به این منظور خروجی PB0 را بدون مقاومت به بیس یک ترانزیستور PNP و emitter آن را به بلندگو متصل کنید و سر دیگر بلندگو هم به ولتاژ مناسب(مثلا 5 ولت) وصل می شود.کلکتور ترانزیستور PNP هم باید به زمین متصل شود.

    نسخه BASCOM تولید ملودی "ای ایران" در زیر آورده شده است.
    نکته قابل توجه این است که در عمل با وجود آنکه همان صدا با همان فرکانس و طول نت ها تولید می شود ولی تمیزی صدای تولید شده مانند نرم افزار نوشته شده با IAR و اسمبلی نیست( هر دو نرم افزار نوشته و تست شده است) و در متن ملودی تولید شده، صدای نویز مانند خفیفی ایجاد می شود.
    با توجه به اینکه این اولین برنامه ای است که به زبان BASCOM می نویسم و تاکنون لزومی به کار با آن نبوده( و بعد از این هم نخواهد بود) ، از دوستانی که در این امر صاحب تجربه هستند درخواست می کنم که به متن برنامه توجه کنند و اگر نکته ای برای اصلاح در آن وجود دارد متذکر شوند تا آن را بهینه کنم.
    همچنین یکی از دوستان در مورد مسئله تغییر کلاک فرمودند که باید گفت در اینجا هم با افزایش کلاک، فرکانس و طول نت ها تغییر می کند و باید مقادیر را اصلاح کرد و یا یک ضریب را برای لحاظ تغییر کلاک اعمال نمود.

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

    $regfile = "M32def.dat"
    $crystal = 1000000

    Const Sil = 0
    Const Sol1 = 1
    Const Sol1_ = 2
    Const La1 = 3
    Const La1_ = 4
    Const Si1 = 5
    Const Do2 = 6
    Const Do2_ = 7
    Const Re2 = 8
    Const Re2_ = 9
    Const Mi2 = 10
    Const Fa2 = 11
    Const Fa2_ = 12
    Const Sol2 = 13
    Const Sol2_ = 14
    Const La2 = 15
    Const La2_ = 16
    Const Si2 = 17
    Const Do3 = 18
    Const Do3_ = 19
    Const Re3 = 20
    Const Re3_ = 21
    Const D1 = 1
    Const D2 = 2
    Const D3 = 3
    Const D4 = 4
    Const D6 = 6
    Const D7 = 7
    Const D8 = 8
    Const D16 = 16
    Const D32 = 32
    Const End_of_table = 255

    Dim Note_f As Bit
    Dim Duration As Byte
    Dim I As Word
    Dim J As Byte
    Dim Table_value As Byte
    Dim Ocr1a_temp As Word
    Speaker Alias Portb.0

    Note_f = 0
    I = 0

    Config Pinb.0 = Output
    Config Timer0 = Timer , Prescale = 1024 , Clear Timer = 1
    Config Timer1 = Timer , Prescale = 1 , Clear Timer = 1
    Ocr0 = &H40
    On Oc0 Timer0_compare_isr
    On Oc1a Timer1_comparea_isr
    Enable Oc0
    Enable Oc1a
    Enable Interrupts

    Loop1:

    Table_value = Lookup(i , Note_table)
    If Table_value = End_of_table Then
    I = 0
    Goto Loop1
    End If
    If Table_value = Sil Then Goto Silent_play
    I = I + 1
    Disable Interrupts
    Note_f = 1
    Duration = Lookup(i , Note_table)
    I = I - 1
    J = Lookup(i , Note_table)
    J = J - 1
    Timer1 = 0
    Ocr1a_temp = Lookup(j , Ocr1a_value_table)
    Ocr1a = Ocr1a_temp
    Enable Interrupts
    Do
    Loop Until Duration = 0
    I = I + 2
    Goto Loop1

    Silent_play:
    Note_f = 0
    I = I + 1
    Duration = Lookup(i , Note_table)
    Do
    Loop Until Duration = 0
    I = I + 1
    Goto Loop1

    Timer0_compare_isr:
    If Duration > 0 Then Duration = Duration - 1
    Return

    Timer1_comparea_isr:
    If Note_f = 1 Then Toggle Speaker
    Return

    Note_table:

    Data Re2 , D4 , La2 , D1 , Sil , D1 , La2 , D1 , Sil , D1 , La2 , D4 , Re2 , D3
    Data Sil , D1 , Re2 , D4 , La2 , D1 , Sil , D1 , La2 , D1 , Sil , D1 , La2 , D4
    Data Re2 , D4 , La2 , D4 , La2_ , D2 , Do3 , D2 , La2 , D8 , Re3 , D2 , Do3 , D1
    Data Sil , D1 , Do3 , D1 , Sil , D1 , La2_ , D1 , Sil , D1 , La2_ , D1 , Sil , D1
    Data La2 , D1 , Sil , D1 , La2 , D1 , Sil , D1 , Sol2 , D2 , Fa2 , D4 , Sol2 , D2
    Data Do3 , D2 , La2 , D8 , Re2 , D2 , Do2 , D2 , Re2 , D2 , Re2_ , D2 , Fa2 , D2
    Data Re2_ , D2 , Fa2 , D2 , Sol2 , D2 , La2 , D2 , Do3 , D2 , La2_ , D2 , La2 , D2
    Data Sol2 , D2 , Fa2 , D2 , Re2_ , D2 , Re2 , D2 , Do2 , D4 , Sol2 , D1 , Sil , D1
    Data Sol2 , D1 , Sil , D1 , Sol2 , D4 , La2 , D4 , La2_ , D4 , La2 , D2 , Sol2 , D2
    Data Fa2 , D4 , Sol2 , D4 , La2 , D4 , Sol2 , D2 , Fa2 , D2 , Re2_ , D4 , Fa2 , D4
    Data Sol2 , D4 , Fa2 , D2 , Re2_ , D2 , Re2 , D8 , La2_ , D2 , La2 , D1 , Sil , D1
    Data La2 , D1 , , Sil , D1 , Sol2 , D1 , Sil , D1 , Sol2 , D1 , Sil , D1 , Fa2 , D1
    Data Sil , D1 , Fa2 , D1 , Sil , D1 , Re2_ , D2 , La2 , D2 , Sol2 , D1 , Sil , D1
    Data Sol2 , D1 , Sil , D1 , Fa2 , D1 , Sil , D1 , Fa2 , D1 , Sil , D1 , Re2_ , D1
    Data Sil , D1 , Re2_ , D1 , Sil , D1 , Re2 , D2 , Fa2 , D2 , Sil , D2 , Fa2 , D2
    Data Sol2 , D2 , La2 , D8 , Re2 , D4 , La2 , D1 , Sil , D1 , La2 , D1 , Sil , D1
    Data La2 , D4 , Re2 , D3 , Sil , D1 , Re2 , D4 , La2 , D1 , Sil , D1 , La2 , D1
    Data Sil , D1 , La2 , D4 , Re2 , D4 , La2 , D4 , La2_ , D2 , Do3 , D2 , La2 , D8
    Data Re3 , D2 , Do3 , D1 , Sil , D1 , Do3 , D1 , Sil , D1 , La2_ , D1 , Sil , D1
    Data La2_ , D1 , Sil , D1 , La2 , D1 , Sil , D1 , La2 , D1 , Sil , D1 , Sol2 , D2
    Data Fa2 , D4 , Sol2 , D2 , Do3 , D2 , La2 , D8 , Re2 , D2 , Do2 , D2 , Re2 , D2
    Data Re2_ , D2 , Fa2 , D2 , Re2_ , D2 , Fa2 , D2 , Sol2 , D2 , La2 , D2 , Do3 , D2
    Data La2_ , D2 , La2 , D2 , Sol2 , D2 , Fa2 , D2 , Re2_ , D2 , Re2 , D2 , Do2 , D4
    Data Sol2 , D1 , Sil , D1 , Sol2 , D1 , Sil , D1 , Sol2 , D4 , La2 , D4 , La2_ , D4
    Data La2 , D2 , Sol2 , D2 , Fa2 , D4 , Sol2 , D4 , La2 , D4 , Sol2 , D2 , Fa2 , D2
    Data Re2_ , D4 , Fa2 , D4 , Sol2 , D4 , Fa2 , D2 , Re2_ , D2 , Re2 , D8 , La2_ , D2
    Data La2 , D1 , Sil , D1 , La2 , D1 , Sil , D1 , Sol2 , D1 , Sil , D1 , Sol2 , D1
    Data Sil , D1 , Fa2 , D1 , Sil , D1 , Fa2 , D1 , Sil , D1 , Re2_ , D2 , La2 , D2
    Data Sol2 , D1 , Sil , D1 , Sol2 , D1 , Sil , D1 , Fa2 , D1 , Sil , D1 , Fa2 , D1
    Data Sil , D1 , Re2_ , D1 , Sil , D1 , Re2_ , D1 , Sil , D1 , Re2 , D2 , Re2 , D4
    Data Re2_ , D2 , Fa2 , D2 , Re2 , D6 , Sil , D2 , Re2 , D8 , La2 , D8 , Re2 , D8
    Data La2 , D7 , Sil , D1 , La2 , D6 , La2_ , D2 , Do3 , D6 , La2_ , D2 , La2 , D8
    Data Sil , D8 , Re3 , D8 , Do3 , D8 , La2_ , D8 , La2 , D8 , Sol2 , D6 , Fa2 , D2
    Data Sol2 , D6 , Do3 , D2 , La2 , D8 , Sil , D8 , Re2 , D8 , La2_ , D8 , La2 , D8
    Data Sol2 , D8 , Fa2 , D6 , Re2_ , D2 , Re2 , D6 , Re2_ , D2 , Do2 , D8 , Sil , D8
    Data Fa2 , D8 , Re2_ , D8 , Re2 , D6 , Sol2 , D2 , Fa2 , D8 , Re2_ , D6 , Re2 , D2
    Data Do2 , D6 , Re2_ , D2 , Re2 , D4 , La1 , D4 , La1_ , D4 , Do2 , D4 , Re2 , D4
    Data Sol1 , D4 , Do2 , D4 , Sol1 , D4 , La1_ , D4 , Re2 , D4 , La1 , D4 , Re2 , D4
    Data Sol1 , D4 , Re2 , D4 , La1 , D4 , Re2 , D4 , La1_ , D4 , Re2 , D4 , Do2 , D4
    Data Re2 , D4 , Re3 , D32 , Do3 , D6 , Re3_ , D2 , Re3 , D6 , Do3 , D2 , La2_ , D6
    Data Re3 , D2 , Do3 , D6 , La2_ , D2 , La2 , D6 , Do3 , D2 , La2_ , D6 , La2 , D2
    Data Sol2 , D8 , Sil , D8 , Sol1 , D6 , La1 , D2 , La1_ , D6 , Do2 , D2 , Re2 , D6
    Data Re2_ , D2 , Do2 , D6 , Re2 , D2 , Re2_ , D6 , Do2 , D2 , Re2 , D6 , Re2_ , D2
    Data Re2 , D8 , Sil , D8 , Do3 , D8 , Si2 , D6 , Re3 , D2 , Do3 , D16 , La2_ , D6
    Data La2 , D2 , Sol2 , D6 , La2_ , D2 , La2 , D16 , Do3 , D8 , Si2 , D6 , Re3 , D2
    Data Do3 , D16 , La2_ , D6 , La2 , D2 , Sol2 , D6 , La2_ , D2 , La2 , D16 , Fa2 , D6
    Data Re2_ , D2 , Fa2 , D6 , Sol2 , D2 , La2 , D16 , La2_ , D6 , La2 , D2 , Sol2 , D6
    Data Fa2 , D2 , La2 , D6 , Sol2 , D2 , Fa2 , D6 , Re2_ , D2 , Sol2 , D6 , Fa2 , D2
    Data Re2_ , D6 , Fa2 , D2 , Sol2 , D16 , La2 , D6 , Sol2 , D2 , Fa2 , D6 , Re2_ , D2
    Data Sol2 , D6 , Fa2 , D2 , Re2_ , D6 , Re2 , D2 , Fa2 , D6 , Re2_ , D2 , Sol2 , D6
    Data Re2_ , D2 , Re2 , D8 , Sil , D8
    Data End_of_table

    Ocr1a_value_table:

    Data 1516% , 1431% , 1350% , 1275% , 1203% , 1135% , 1072% , 1011% , 955% , 901%
    Data 850% , 803% , 757% , 715% , 675% , 637% , 601% , 567% , 535% , 505% , 477%

    نسخه codevision نرم افزار تولید ملودی در زیر آورده شده است.
    مشکلی در نمایش این برنامه وجود دارد که در چند پست بعد توضیح داده شده است.

    /************************************************** ***
    Project : IRAN_M32
    Chip type : ATmega32
    AVR Core Clock frequency: 1.000000 MHz
    ************************************************** ***/
    #include <mega32.h>

    #define sil 0
    #define sol1 1
    #define sol1_ 2
    #define la1 3
    #define la1_ 4
    #define si1 5
    #define do2 6
    #define do2_ 7
    #define re2 8
    #define re2_ 9
    #define mi2 10
    #define fa2 11
    #define fa2_ 12
    #define sol2 13
    #define sol2_ 14
    #define la2 15
    #define la2_ 16
    #define si2 17
    #define do3 18
    #define do3_ 19
    #define re3 20
    #define re3_ 21
    #define d1 1
    #define d2 2
    #define d3 3
    #define d4 4
    #define d6 6
    #define d7 7
    #define d8 8
    #define d16 16
    #define d32 32
    bit note_f=0;
    volatile unsigned char duration;

    flash unsigned char notes[]={re2,d4,la2,d1,sil,d1,la2,d1,sil,d1,la2,d4,
    re2,d3,sil,d1,re2,d4,la2,d1,sil,d1,la2,d1,sil,d1,l a2,d4,re2,d4,la2,d4,
    la2_,d2,do3,d2,la2,d8,re3,d2,do3,d1,sil,d1,do3,d1, sil,d1,la2_,d1,sil,d1,
    la2_,d1,sil,d1,la2,d1,sil,d1,la2,d1,sil,d1,sol2,d2 ,fa2,d4,sol2,d2,do3,d2,
    la2,d8,re2,d2,do2,d2,re2,d2,re2_,d2,fa2,d2,re2_,d2 ,fa2,d2,sol2,d2,la2,d2,
    do3,d2,la2_,d2,la2,d2,sol2,d2,fa2,d2,re2_,d2,re2,d 2,do2,d4,sol2,d1,sil,d1,
    sol2,d1,sil,d1,sol2,d4,la2,d4,la2_,d4,la2,d2,sol2, d2,fa2,d4,sol2,d4,la2,d4,
    sol2,d2,fa2,d2,re2_,d4,fa2,d4,sol2,d4,fa2,d2,re2_, d2,re2,d8,la2_,d2,la2,d1,
    sil,d1,la2,d1,sil,d1,sol2,d1,sil,d1,sol2,d1,sil,d1 ,fa2,d1,sil,d1,fa2,d1,
    sil,d1,re2_,d2,la2,d2,sol2,d1,sil,d1,sol2,d1,sil,d 1,fa2,d1,sil,d1,fa2,d1,
    sil,d1,re2_,d1,sil,d1,re2_,d1,sil,d1,re2,d2,fa2,d2 ,sil,d2,fa2,d2,sol2,d2,
    la2,d8,re2,d4,la2,d1,sil,d1,la2,d1,sil,d1,la2,d4,r e2,d3,sil,d1,re2,d4,
    la2,d1,sil,d1,la2,d1,sil,d1,la2,d4,re2,d4,la2,d4,l a2_,d2,do3,d2,la2,d8,
    re3,d2,do3,d1,sil,d1,do3,d1,sil,d1,la2_,d1,sil,d1, la2_,d1,sil,d1,la2,d1,
    sil,d1,la2,d1,sil,d1,sol2,d2,fa2,d4,sol2,d2,do3,d2 ,la2,d8,re2,d2,do2,d2,
    re2,d2,re2_,d2,fa2,d2,re2_,d2,fa2,d2,sol2,d2,la2,d 2,do3,d2,la2_,d2,la2,d2,
    sol2,d2,fa2,d2,re2_,d2,re2,d2,do2,d4,sol2,d1,sil,d 1,sol2,d1,sil,d1,sol2,d4,
    la2,d4,la2_,d4,la2,d2,sol2,d2,fa2,d4,sol2,d4,la2,d 4,sol2,d2,fa2,d2,re2_,d4,
    fa2,d4,sol2,d4,fa2,d2,re2_,d2,re2,d8,la2_,d2,la2,d 1,sil,d1,la2,d1,sil,d1,
    sol2,d1,sil,d1,sol2,d1,sil,d1,fa2,d1,sil,d1,fa2,d1 ,sil,d1,re2_,d2,la2,d2,
    sol2,d1,sil,d1,sol2,d1,sil,d1,fa2,d1,sil,d1,fa2,d1 ,sil,d1,re2_,d1,sil,d1,
    re2_,d1,sil,d1,re2,d2,re2,d4,re2_,d2,fa2,d2,re2,d6 ,sil,d2,re2,d8,la2,d8,
    re2,d8,la2,d7,sil,d1,la2,d6,la2_,d2,do3,d6,la2_,d2 ,la2,d8,sil,d8,re3,d8,
    do3,d8,la2_,d8,la2,d8,sol2,d6,fa2,d2,sol2,d6,do3,d 2,la2,d8,sil,d8,re2,d8,
    la2_,d8,la2,d8,sol2,d8,fa2,d6,re2_,d2,re2,d6,re2_, d2,do2,d8,sil,d8,fa2,d8,
    re2_,d8,re2,d6,sol2,d2,fa2,d8,re2_,d6,re2,d2,do2,d 6,re2_,d2,re2,d4,la1,d4,
    la1_,d4,do2,d4,re2,d4,sol1,d4,do2,d4,sol1,d4,la1_, d4,re2,d4,la1,d4,re2,d4,
    sol1,d4,re2,d4,la1,d4,re2,d4,la1_,d4,re2,d4,do2,d4 ,re2,d4,re3,d32,do3,d6,
    re3_,d2,re3,d6,do3,d2,la2_,d6,re3,d2,do3,d6,la2_,d 2,la2,d6,do3,d2,la2_,d6,
    la2,d2,sol2,d8,sil,d8,sol1,d6,la1,d2,la1_,d6,do2,d 2,re2,d6,re2_,d2,do2,d6,
    re2,d2,re2_,d6,do2,d2,re2,d6,re2_,d2,re2,d8,sil,d8 ,do3,d8,si2,d6,re3,d2,
    do3,d16,la2_,d6,la2,d2,sol2,d6,la2_,d2,la2,d16,do3 ,d8,si2,d6,re3,d2,
    do3,d16,la2_,d6,la2,d2,sol2,d6,la2_,d2,la2,d16,fa2 ,d6,re2_,d2,fa2,d6,
    sol2,d2,la2,d16,la2_,d6,la2,d2,sol2,d6,fa2,d2,la2, d6,sol2,d2,fa2,d6,
    re2_,d2,sol2,d6,fa2,d2,re2_,d6,fa2,d2,sol2,d16,la2 ,d6,sol2,d2,fa2,d6,
    re2_,d2,sol2,d6,fa2,d2,re2_,d6,re2,d2,fa2,d6,re2_, d2,sol2,d6,re2_,d2,
    re2,d8,sil,d8};

    flash unsigned int timer1_values[]={1516,1431,1350,1275,1203,1135,1072,1011,955,901, 850,803,757,
    715,675,637,601,567,535,505,477}; //...

    // Timer 0 output compare interrupt service routine
    interrupt [TIM0_COMP] void timer0_comp_isr(void)
    {
    if (duration!=0) duration--;
    }

    // Timer1 output compare A interrupt service routine
    interrupt [TIM1_COMPA] void timer1_compa_isr(void)
    {
    if (note_f!=0)
    {
    if ((PORTB&0X01)==0x01) PORTB&=0XFE;
    else PORTB|=0X01;
    }
    }

    void main(void)
    {
    unsigned int i;
    DDRB=0x01;
    TCCR0=0x0D;
    OCR0=0x40;
    TCCR1B=0x09;
    TIMSK=0x12;
    #asm("sei")

    while(1)
    {
    for(i=0;i<sizeof (notes);i+=2)
    {

    if (notes!=sil)
    {
    #asm("cli");
    note_f=1;
    duration=notes[i+1];
    TCNT1=0;
    OCR1A=timer1_values[notes-1];
    #asm("sei");
    }

    else
    {
    note_f=0;
    duration=notes[i+1];
    }
    while(duration);
    }
    }
    }

    در فهرست برنامه codevision معلوم نیست به چه دلیلی از یک نقطه به بعد، برنامه درست نمایش داده نمی شود و عبارت[ notes[i را notes نمایش می دهد. این مسئله از جایی که فونت بصورت خمیده تغییر کرده اتفاق می افتد و در دو دستور باید اعمال شود.


    جناب طراح ممنون از برنامتون
    اگه فرکانس رو افزايش بديم (مثلا 8 مگ) چه تغييري بايد تو برنامه بديم؟
    نت هاي آهنگ هاي ديگه رو از کجا مي‌شه پيدا کرد؟

    جواب:
    برای تغییر فرکانس اسیلاتور باید به شیوه تولید نت در برنامه توجه کنیم. TIMER1 وظیفه ایجاد فرکانس مورد نظر و TIMER0 وظیفه تولید زمان تداوم نت (duration)را به عهده دارد. هر دو تایمر هم در مد CTC عمل می کنند. اگر فرکانس اسیلاتور میکروکنترلر افزایش یابد، فرکانس نت ها به همان نسبت افزایش و طول مدت زمان نواخته شدن به همان نسبت کاهش خواهد یافت.
    یک روش برای جبران سازی افزایش فرکانس نت، که البته به دلایل فنی خطای بسیار کوچکی به همراه دارد، N برابر کردن مقادیر جدول OCR1a_value_table است. یعنی اگر کلاک بجای 1 مگاهرتز مثلا 8 مگاهرتز شود، اعداد این جدول باید 8 برابر شوند و به این طریق مسئله فرکانس نت حل می شود.
    اما برای جبران سازی کاهش duration باید به این نکته توجه کنید که TIMER0 با حداکثر تقسیمات 1024 خود در حال کار است و طول آن هم 8 بیت بیشتر نیست.به ازای کلاک 1 مگاهرتز، زمان ساخته شده توسط این تایمر برابر با (1+OCR0) ضرب در 1024 تقسیم بر فرکانس کلاک است که در کلاک 1 مگاهرتز و به ازای OCR0=&H40 برابر 66.56 میلی ثانیه می شود. اگر کلاک مثلا دو برابر شود، میتوان با افزایش OCR0 بصورتی کهOCR0+1 دو برابر شود جبران سازی لازم را انجام داد. اما توجه کنید که ظرفیت OCR0 به دلیل 8 بیتی بودن محدود است و نمی توان آنرا برای کلاک 8 مگاهرتز تا حد 8 برابر افزایش داد. راه چاره آن است که برای کلاک 8 مگاهرتز OCR0 را برابر 129 قرار دهید و جدول متناظر D1 تا D8 را 4 برابر کنید. یعنی بجای D1=1 قرار دهید D1=4 و به همین ترتیب. در اینصورت طول نت شما هم ثابت خواهد ماند.

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

    در سايت BASCOM براي توليد ملودي برنامه اي قرار داده شده است:
    http://www.mcselec.com/index.php?opt...=221&Itemid=57
    ویرایش توسط masoodhashemy : 15-02-2011 در ساعت 17:14
    خنده بر لب میزنم تا کس نداند راز من.........ورنه این دنیا که ما دیدیم خندیدن نداشت
    وبلاگ شخصی

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


  14. #10
    تازه وارد
    تاریخ عضویت
    Nov 2010
    نوشته ها
    1
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

    سلام سال نو مبارک
    من میخام یک تریستور دوبل را با ورودی دو فاز از طریق avr کنترل کنم لطفا ضمن راهنمایی اگر پروژه در این زمینه موجود هست معرفی نمایید
    با احترام

  15. #11
    مدیر انجمن cmuiran آواتار ها
    تاریخ عضویت
    Jan 2011
    نام
    پیمان غلامی
    نوشته ها
    1,071
    تشکر
    407
    تشکر شده 966 بار در 553 پست

    پیش فرض

    ba pwm behtarin halat baraye control

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


  17. #12
    مدیر باز نشسته masoodhashemy آواتار ها
    تاریخ عضویت
    Sep 2009
    نام
    بوشهر - نام: علیرضا.غ
    نوشته ها
    328
    تشکر
    212
    تشکر شده 593 بار در 145 پست

    پیش فرض

    نقل قول نوشته اصلی توسط rozj نمایش پست ها
    سلام سال نو مبارک
    من میخام یک تریستور دوبل را با ورودی دو فاز از طریق avr کنترل کنم لطفا ضمن راهنمایی اگر پروژه در این زمینه موجود هست معرفی نمایید
    با احترام
    شما هنوز هم به این پروژه نیاز دارید؟
    خنده بر لب میزنم تا کس نداند راز من.........ورنه این دنیا که ما دیدیم خندیدن نداشت
    وبلاگ شخصی

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


  19. #13
    تازه وارد
    تاریخ عضویت
    May 2011
    نوشته ها
    2
    تشکر
    7
    تشکر شده 0 بار در 0 پست

    پیش فرض

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

  20. #14
    تازه وارد amard_1368 آواتار ها
    تاریخ عضویت
    Feb 2011
    نوشته ها
    3
    تشکر
    1
    تشکر شده 0 بار در 0 پست

    Icon16

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

  21. #15
    تازه وارد
    تاریخ عضویت
    Mar 2012
    نام
    ن ق
    نوشته ها
    1
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

    سلام
    کسی میتونه در مورد طراحی هوشمند روشنایی کمک کنه؟
    ممنون میشم

  22. #16
    کاربر فعال naatamam آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    حسن معماری
    نوشته ها
    283
    تشکر
    287
    تشکر شده 877 بار در 286 پست

    پیش فرض

    نقل قول نوشته اصلی توسط nassrin نمایش پست ها
    سلام
    کسی میتونه در مورد طراحی هوشمند روشنایی کمک کنه؟
    ممنون میشم
    سلام
    بیشتر توضیح دهید که چکار می خواهید بکنید ؟

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


  24. #17
    تازه وارد
    تاریخ عضویت
    Jan 2013
    نام
    حیدر مشیری
    نوشته ها
    2
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

    پروژه : ارسال دیتای پورتهای یک میکرو به میکرو دیگر از طریق ارتباط سریال rs 485
    شرح کار مدار بدین صورت است که میکرو اول وضعیت کلید های متصل شده به پورتهای A,B,C, و d.2 تا d.7 را خوانده و در یک متغیر قرار داده و از طریق خط tx rs485)) بهrx میکرو دوم ارسال میکند و وضعیت پورتهای میکرو دوم (گیرنده) میبایست بیانگر وضعیت پورتهای میکرو اول ) فرستنده ) را نمایش دهد و با هر تغییر وضعیت در میکرو اول led های متصل شده به میکرو دوم روشن یا خاموش شوند. برنامه من با پروتیوس ( شبیه ساز)کار میکند اما در عمل روی برد فقط دو پورت A, B درست کار میکند الباقی پورتها به هم میریزند.
    از شما بسیار سپاسگزارم اراتمند شما : حیدر مشیری
    نقشه مدار در صفحه دوم ضمیمه میباشد : MOSHIRI.H.@GMAIL.COM



    [IMG]file:///C:%5CUsers%5CMOSHIRI%5CAppData%5CLocal%5CTemp%5Cms ohtmlclip1%5C01%5Cclip_image002.png[/IMG]

  25. #18
    تازه وارد
    تاریخ عضویت
    Jan 2013
    نام
    حیدر مشیری
    نوشته ها
    2
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض کمک ارسال دیتا از یک میکرو به میکرو دیگر

    سلام ایا کسی میتونه کمکم کنه

    پروژه : ارسال دیتای پورتهای یک میکرو به میکرو دیگر از طریق ارتباط سریال rs 485
    شرح کار مدار بدین صورت است که میکرو اول وضعیت کلید های متصل شده به پورتهای A,B,C, و d.2 تا d.7 را خوانده و در یک متغیر قرار داده و از طریق خط tx rs485)) بهrx میکرو دوم ارسال میکند و وضعیت پورتهای میکرو دوم (گیرنده) میبایست بیانگر وضعیت پورتهای میکرو اول ) فرستنده ) را نمایش دهد و با هر تغییر وضعیت در میکرو اول led های متصل شده به میکرو دوم روشن یا خاموش شوند. برنامه من با پروتیوس ( شبیه ساز)کار میکند اما در عمل روی برد فقط دو پورت A, B درست کار میکند الباقی پورتها به هم میریزند.
    از شما بسیار سپاسگزارم اراتمند شما : حیدر مشیری
    MOSHIRI.H.@GMAIL.COM

  26. #19
    تازه وارد
    تاریخ عضویت
    May 2013
    نوشته ها
    1
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

    سلام . یک سوال در ارتباط با برنامه نویسی داشتم. میخواستم ببینم چطوری میشه یطور هم زمان 2 حلقه ی for در بسکام با هم شروع به کار کنند. مثلا 2 ال ای دی روی 2 پین قرار گرفته باشه طوری که ال ای دی اول 5 بار خاموش و روشن به فاصله ی 1 ثانیه و ال ای دی دوم 8 بار خاموش و روشن به فاصله ی 1 ثانیه باشه اما شروع کار 2 ال ای دی با هم باشه یعنی در انتهای کار ال ای دی اول 3 ثانیه زودتر خاموش شده و ال ای دی دوم 3 ثانیه دیگر به فاصله ی زمانی 1 ثانیه روشن و خاموش بشه. اگر ممکنه برنامشو برام بنویسید متشکر.

  27. #20
    عضو جدید
    تاریخ عضویت
    Jul 2013
    نوشته ها
    6
    تشکر
    3
    تشکر شده 4 بار در 4 پست

    پیش فرض

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

صفحه 1 از 2 12 آخرینآخرین

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

  1. فلسفه چهارشنبه سوری به روایت شاهنامه فردوسی
    توسط jonbakhsh در انجمن گفت و گوي آزاد
    پاسخ: 7
    آخرين نوشته: 28-03-2013, 23:05
  2. سوال در مورد قابلیت میکروکنترلرها
    توسط mohamad_musav در انجمن سایر موارد مرتبط با میکرو کنترلرها
    پاسخ: 24
    آخرين نوشته: 09-03-2013, 01:05
  3. پاسخ: 4
    آخرين نوشته: 10-12-2011, 23:17
  4. یک سوال از مدیریت محترم درباره حج
    توسط shh91 در انجمن پرسش و پاسخ (نرم افزارهای تخصصی)
    پاسخ: 1
    آخرين نوشته: 22-12-2009, 02:19
  5. چند سوال در مورد سایت و دروپال
    توسط rahim2000 در انجمن گفت و گوي آزاد
    پاسخ: 5
    آخرين نوشته: 16-11-2009, 21:48

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

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