اطلاعیه

Collapse
No announcement yet.

مشکل در تولید pwm از تایمر 1 و 3 - میکروکنترلر ATmega1284p

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

    مشکل در تولید pwm از تایمر 1 و 3 - میکروکنترلر ATmega1284p

    سلام دوستان و اساتید محترم.
    من میخام چهار موتور dc رو توسط میکروکنترلر ATmega1284p و درایور L298N از طریق pwm کنترل کنم. همانطور که میدونید این میکرو 2تایمر 8bit و 2تایمر 16bit داره.
    من از تایمر های 16بیتی 1 و 3 استفاده کردم.
    مشکل من اینجاست که با اینکه کانفیگ هر دو تایمر یکسان است اما pwm تولید شده توسط تایمر 1 با تایمر3 تفاوت دارد. درواقع هر دو سیگنال تایمر 1 هم باهمدیگر فرق میکنند و هم با سیگنالهای تایمر3 (این دو باهم یکسان هستند) متفاوت هستند. و از آنجایی که من نیز در این زمینه مبتدی هستم نمیدونم چکار کنم.
    من میخام همه سیگنالها مثل سیگنال تایمر 3 یکسان و یکنواخت بشوند تا بتوانم سرعت موتورها رو کنترل کنم.

    تصویر زیر به خوبی منظور من رو میرسونه


    و این هم کد بیسکام:
    کد:
    $regfile = "m1284pdef.dat"
    $crystal = 8000000
    
    '#16bit:
    Config Timer1 = Pwm , Pwm = 8 , Prescale = 256 , Compare_A_Pwm = Clear Up , Compare_B_Pwm = Clear Up
    Config Timer3 = Pwm , Pwm = 8 , Prescale = 256 , Compare_A_Pwm = Clear Up , Compare_B_Pwm = Clear Up
    
    Enable Interrupts
    Enable oc1a
    Enable oc1b
    Enable oc3a
    Enable oc3b
    Enable Timer1
    Enable Timer3
    
    Config Porta = Input     'Controller Commands
    Config Portc = Output    'Pins To L298 Driver
    
    '#pwm
    Config Portd.5 =  Output 'PWM1A
    Config Portd.4 =  Output 'PWM1B
    Config Portb.6 =  Output 'PWM3A
    Config Portb.7 =  Output 'PWM3B
    
    'Normal Start
    Pwm1a = 125
    Pwm1b = 125
    Pwm3a = 125
    Pwm3b = 125
    
    'Pins To L298 inputs:
    Portc.0 = 1
    Portc.1 = 0
    Portc.2 = 1
    Portc.3 = 0
    
    Portc.4 = 0
    Portc.5 = 1
    Portc.6 = 0
    Portc.7 = 1

    لطفا راهنمایی بفرمایید.
    سپاس.
لطفا صبر کنید...
X