۱۲-شهریور-۱۳۸۷, ۱۱:۵۲:۴۹
۱۲-شهریور-۱۳۸۷, ۲۱:۲۹:۲۳
يكم بيشتر توضيح بده كه چيشو مي خواي بدوني
pwm - timer - counter
آخه تايمرها حرف واسه گفتن زياد دارن و رو يه قسمت بحث شه بهتره ؟
pwm - timer - counter
آخه تايمرها حرف واسه گفتن زياد دارن و رو يه قسمت بحث شه بهتره ؟
۱۳-شهریور-۱۳۸۷, ۱۲:۵۰:۲۵
pwm راه اندازي موتور dc و timer واسه زمان هاي دقيق براي ساخت ساعت
از كتاب اقاي كاهه خوندم واون يكمي هم كه حاليم ميشد رو هم گاتي كردم.اگه اينا رو بگي حله!
از كتاب اقاي كاهه خوندم واون يكمي هم كه حاليم ميشد رو هم گاتي كردم.اگه اينا رو بگي حله!
۱۳-شهریور-۱۳۸۷, ۱۸:۲۹:۴۳
سلام
اول زمان
در مورد بدست آوردن زمان دقيق واسه ساعت از كدوم تايمر؟(دقيق ترين كدومه؟؟)
اگه اينو بگين بعدي در مورد pwm واسه موتور dcيه.
اول زمان
در مورد بدست آوردن زمان دقيق واسه ساعت از كدوم تايمر؟(دقيق ترين كدومه؟؟)
اگه اينو بگين بعدي در مورد pwm واسه موتور dcيه.
۱۳-شهریور-۱۳۸۷, ۲۲:۲۹:۴۹
سلام دوباره .
تايمر 2 يه قابليت خوبي داره كه مي تونه از كرستال ساعت ( 32768 هرتز ) پالسهاش رو قبول كنه .
مي توني يه كرستال ساعت به پايه 28 و 29 در Atmega 32 وصل كني طبق دستورات زير تايمر دو را كريستال ساعت تغذيه كني .
تايمر دو در مود تايمر بوده و از كريستال خارجي كه فركانش رو تقسيم بر 128 كرده تغذيه شده و در هر بار سرريز شدن وقفه به زير روال Ant مراجعه مي كند .
به عبارت ديگر در هر ثانيه يه بار در هر كجاي برنامه كه باشد به برنامه وقفه مراجعه كرده و پس مراجعه با دستور Return به ادامه برنامه اصلي بر مي گردد .
اگر Prescale =32 باشد در هر ثانيه 4 بار مراجعه مي كند و به همين ترتيب مي توان با تغيير عدد 32 زمان مراحعه را تغيير داد . البته هر عددي نمي توان گذاشت . فقط يه سري اعداد پيش فرض .
پروژه زير هم مي تونه كمكت كنه .
ساعت با تايمر لجوج ، ترموستات و نمايش تاريخ شمسي با AVR
تايمر 2 يه قابليت خوبي داره كه مي تونه از كرستال ساعت ( 32768 هرتز ) پالسهاش رو قبول كنه .
مي توني يه كرستال ساعت به پايه 28 و 29 در Atmega 32 وصل كني طبق دستورات زير تايمر دو را كريستال ساعت تغذيه كني .
کد:
Config Timer2 = Timer , Async = On , Prescale =128
Enable Interrupts
Enable Timer2
On Timer2 Ant
به عبارت ديگر در هر ثانيه يه بار در هر كجاي برنامه كه باشد به برنامه وقفه مراجعه كرده و پس مراجعه با دستور Return به ادامه برنامه اصلي بر مي گردد .
اگر Prescale =32 باشد در هر ثانيه 4 بار مراجعه مي كند و به همين ترتيب مي توان با تغيير عدد 32 زمان مراحعه را تغيير داد . البته هر عددي نمي توان گذاشت . فقط يه سري اعداد پيش فرض .
پروژه زير هم مي تونه كمكت كنه .
ساعت با تايمر لجوج ، ترموستات و نمايش تاريخ شمسي با AVR
۱۵-شهریور-۱۳۸۷, ۱۸:۰۰:۰۳
سلام
يه سوال كلي كه منو درگيره خودش كرده!
مهندس اين تنظيم فيوزبيتها واسه كلاك خارجي وكريستال وRTC ديگه چه صيغه ايه؟
كلاك خارجي با كريستال يا RTC چه فرقي دارن؟
اينا رو هم بگين فكر كنم حله!!!
يه سوال كلي كه منو درگيره خودش كرده!
مهندس اين تنظيم فيوزبيتها واسه كلاك خارجي وكريستال وRTC ديگه چه صيغه ايه؟
كلاك خارجي با كريستال يا RTC چه فرقي دارن؟
اينا رو هم بگين فكر كنم حله!!!
۱۵-شهریور-۱۳۸۷, ۱۸:۰۹:۳۰
سلام
بدست اوردن زمان برای تایمر از فرمول زیر هست
زمان=کریستال/(بیت تایمر * پرسکال)
در مثال زیر کریستال 1مگا هرتز است و پرسکال 1 میباشد
از تایمر کانتر 16 بیتی 1 اصتفاده شده بنابراین طبق فرمول تایمر بهد از 65536 میکرو ثانیه سر ریز میشود
میکرو ثانیه65536=1000000/(1*16^2)
بدست اوردن زمان برای تایمر از فرمول زیر هست
زمان=کریستال/(بیت تایمر * پرسکال)
در مثال زیر کریستال 1مگا هرتز است و پرسکال 1 میباشد
از تایمر کانتر 16 بیتی 1 اصتفاده شده بنابراین طبق فرمول تایمر بهد از 65536 میکرو ثانیه سر ریز میشود
میکرو ثانیه65536=1000000/(1*16^2)
کد php:
$regfile = "m32def.dat"
$crystal = 1000000
Config Timer1 = Timer , Prescale = 1
Enable Interrupts
Enable Timer1
Enable Ovf1
On Ovf1 Q
Start Timer1
Do
Locate 1 , 1
Lcd Timer1
Loop
Q:
Locate 2 , 1
Lcd "vdv"
Return
۱۵-شهریور-۱۳۸۷, ۱۸:۲۱:۲۶
ممنون
ولي من تو برنامه نويسيش مشكل دارم مشكل من اينه:
اين تنظيم فيوزبيتها واسه كلاك خارجي وكريستال وRTC ديگه چه صيغه ايه؟
كلاك خارجي با كريستال يا RTC چه فرقي دارن؟
ولي من تو برنامه نويسيش مشكل دارم مشكل من اينه:
اين تنظيم فيوزبيتها واسه كلاك خارجي وكريستال وRTC ديگه چه صيغه ايه؟
كلاك خارجي با كريستال يا RTC چه فرقي دارن؟
۱۵-شهریور-۱۳۸۷, ۱۸:۲۲:۵۹
سلام
میکرو ها برای راه اندازی و تنظیم عملکردشون به یه نوسان ساز نیاز دارند که این نوسان ساز میتونه کریستال ، یا نوسان ساز داخلی یا کلاک خروجیه یه دستگاه دیگه باشه
کریستال : یه قطعه دو پایه هست که به پایه xtal 1 , xtal2 کمیکرو میخوره و کارش نوسان سازی هست ، در حالت عادی میکرو از نوسان ساز داخلی خودش که یه نوسان ساز rc هست و روی 1 مگا هرتز تنظیم شده استفاده میکنه که شما میتونی با تغییر فیوز بیت ها از کریستال خارجی استفاده کنید
rtc :rtc یه ساعت مجزا هست که به دیگر عمل کرد های میکرو کاری نداره و زمان رو به طور دقیق میشماره ، در این حالت کریستالی جدا از کریستال میکرو به دو پایه tosc1 , tosc2 متصل میشه ، فرکانس کریستال 32.768 کیلو هرتز هست
فیوز بیت ها رو دارم جمع اوری میکنم تا فردا نحوه تنظیم همشون رو میزلرم
میکرو ها برای راه اندازی و تنظیم عملکردشون به یه نوسان ساز نیاز دارند که این نوسان ساز میتونه کریستال ، یا نوسان ساز داخلی یا کلاک خروجیه یه دستگاه دیگه باشه
کریستال : یه قطعه دو پایه هست که به پایه xtal 1 , xtal2 کمیکرو میخوره و کارش نوسان سازی هست ، در حالت عادی میکرو از نوسان ساز داخلی خودش که یه نوسان ساز rc هست و روی 1 مگا هرتز تنظیم شده استفاده میکنه که شما میتونی با تغییر فیوز بیت ها از کریستال خارجی استفاده کنید
rtc :rtc یه ساعت مجزا هست که به دیگر عمل کرد های میکرو کاری نداره و زمان رو به طور دقیق میشماره ، در این حالت کریستالی جدا از کریستال میکرو به دو پایه tosc1 , tosc2 متصل میشه ، فرکانس کریستال 32.768 کیلو هرتز هست
فیوز بیت ها رو دارم جمع اوری میکنم تا فردا نحوه تنظیم همشون رو میزلرم
۲۰-شهریور-۱۳۸۷, ۱۶:۰۰:۱۶
سلام
در مورد كلاك خارجي كه گفتين ميشه از يه دستگاه ديگه گرفت مثلا چه دستگاهي؟؟
rtc رو فقط تو حالت تايمر 2 متصل ميكنيم؟؟؟
چرا وقتي كه ميخايم زمان دقيق بدست بياريم بايد كريستال بذاريم مگه فركانس ميكرو 8مگا نيست پس چرا بايد يه كريستال به همون فركانس بزاريم؟؟؟
در مورد كلاك خارجي كه گفتين ميشه از يه دستگاه ديگه گرفت مثلا چه دستگاهي؟؟
rtc رو فقط تو حالت تايمر 2 متصل ميكنيم؟؟؟
چرا وقتي كه ميخايم زمان دقيق بدست بياريم بايد كريستال بذاريم مگه فركانس ميكرو 8مگا نيست پس چرا بايد يه كريستال به همون فركانس بزاريم؟؟؟
۲۰-شهریور-۱۳۸۷, ۱۹:۰۶:۰۳
سلام
ميخواهم از تايمر0 در ATMEGA32 طوري استفاده كنم كه اگر PINB.0==1 شد تايمر 2 ثانيه بشمارد و وقتي شمارش تمام شد PORTC.0==1 شود.
برنامه ي اين كار با C چه طور ميشود؟
ممنون ميشم اگر كمكم كنيد.[/quote]
با تشكر.
ميخواهم از تايمر0 در ATMEGA32 طوري استفاده كنم كه اگر PINB.0==1 شد تايمر 2 ثانيه بشمارد و وقتي شمارش تمام شد PORTC.0==1 شود.
برنامه ي اين كار با C چه طور ميشود؟
ممنون ميشم اگر كمكم كنيد.[/quote]
با تشكر.