با سلام من می خوام با میکرو avr موج pwm با فرکانس 100khzتولید کنم بغیر از میکرو tiny15 با کدوم میکرو میشه اینو درس کرد راهنمایی کنید
اطلاعیه
Collapse
No announcement yet.
ایجاد موج pwm با میکرو حدود 20khz
Collapse
X
-
پاسخ : ایجاد موج pwm با میکرو حدود 20khz
نوشته اصلی توسط MOGTABAKITبا سلام من می خوام با میکرو avr موج pwm با فرکانس 20khzتولید کنم بغیر از میکرو tiny15 با کدوم میکرو میشه اینو درس کرد راهنمایی کنید
با بیشتر میکروها میشه ... از جمله :
.....,attiny10,13,20,2313,24,25,26
atmega8,16,32,64,128
و خیلی از میکرو های دیگه ...
-
پاسخ : ایجاد موج pwm با میکرو حدود 20khz
با سلام میشه کمی راهنمایی کنید اگه من کریستان 16 مگ به میکرو مگا 8 وصل کنم
pwmfrequncy=fosc/(510*prescale)
واگر prscaleبذارم رو عدد 1 فرکانس کاری من میشه 31.372khzیعنی بیشترین فرکانسی که میشه با مگا 8 ایجاد کرد اونم به صورت 8 بیت برای ایجاد فرکانس 50khzباید چیکار کنم آیا محاسبات من درسته با اون فرکانس میشه 31khz
بدس آورد یا کمتر میده لطفا راهنماییم کنید
دیدگاه
-
پاسخ : ایجاد موج pwm با میکرو حدود 20khz
نوشته اصلی توسط MOGTABAKITبا سلام میشه کمی راهنمایی کنید اگه من کریستان 16 مگ به میکرو مگا 8 وصل کنم
pwmfrequncy=fosc/(510*prescale)
واگر prscaleبذارم رو عدد 1 فرکانس کاری من میشه 31.372khzیعنی بیشترین فرکانسی که میشه با مگا 8 ایجاد کرد اونم به صورت 8 بیت برای ایجاد فرکانس 50khzباید چیکار کنم آیا محاسبات من درسته با اون فرکانس میشه 31khz
بدس آورد یا کمتر میده لطفا راهنماییم کنید
با تایمر یک باید توی این مد و این حالات کار کنید
کد:// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 2000.000 kHz // Mode: Fast PWM top=ICR1 // OC1A output: Non-Inv. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off
با فرکانس 16 مگاهرتز و تقسیم کننده 8 فرکانس تایمر میشه 2مگا ... 2مگا تقسیم بر 20000 میشه 100 و چون شمارش دیجیتال از صفر شروع میشه باید مقدار ICR1 را مساوی 99 قرار دهید ... مزیت این حالت این است که مقدار 0 تا 99 را به رجیستر OCR1AL میدهیم که دیگر نیازی به جداسازی مقادیر 16 بیتی به 8 بیتی نیست ... در اینجا میخواهیم با این روش کار کنیم ...
این هم برنامه
کد:/***************************************************** Chip type : ATmega8 Program type : Application AVR Core Clock frequency: 16.000000 MHz *****************************************************/ #include <mega8.h> void main(void) { PORTB=0x00; DDRB=0x02; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 2000.000 kHz // Mode: Fast PWM top=ICR1 // OC1A output: Non-Inv. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x82; TCCR1B=0x1A; ICR1L=99; OCR1AL=50; while (1) { // Place your code here } }
راستی
میتوانید که دو خروجی هم بگیرید ...
سوالی بود در خدمتم
دیدگاه
-
پاسخ : ایجاد موج pwm با میکرو حدود 20khz
نوشته اصلی توسط MOGTABAKITتشکر میشه برنامشو به زبان بیسیک بنویسید آخه من از بعضی قسمت های برنامه سر در نیاوردمکد:$regfile = "m8def.dat" $crystal = 16000000 Ddrb = 2 ' Timer/Counter 1 initialization ' Clock source: System Clock ' Clock value: 2000.000 kHz ' Mode: Fast PWM top=ICR1 ' OC1A output: Non-Inv. ' OC1B output: Discon. ' Noise Canceler: Off ' Input Capture on Falling Edge ' Timer1 Overflow Interrupt: Off ' Input Capture Interrupt: Off ' Compare A Match Interrupt: Off ' Compare B Match Interrupt: Off Tccr1a = &H82 Tccr1b = &H1A Icr1l = 99 Ocr1al = 50 Do Loop End
دیدگاه
دیدگاه