ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.






جهت تبلیغ در وب سایت ECA کلیک کنید.

کاربران برچسب زده شده

نمایش نتایج: از 1 به 3 از 3
  1. #1
    2014/12/09
    64
    1

    سوال در مورد کار با تایمر

    باسلام
    دوستان یک سوالی داشتم اینکه من می خوام یکی ازتایمر هایم رو فعال کنم و با مقدار دهی مثلا هر 10 میلی ثانیه یک اینتراپت بگیرم ازش حالا سوالم اینجاست واقعا گیج شدم که انقدر تایم دیدم الان مثلا timeperiod && time_prescaler&& time_division و اینکه الان من از کریستال 8 مگ خارجی استفاده می کنم الان این کریستال 8 مگ مستقیم میره به کلاک تایمر یا نه سرعت سی پی یو میره که تا 72 مگ هم میشه و اینکه اگه میشه یه کد ساده بگید فقط برای همین که مثلا هر 20 میلی ثانیه یک اینتراپت بده با تایمر و توضیحم بدهید ممنون میشم .
    با تشکر :
  2. #2
    2014/01/25
    شهرکرد
    247
    267

    پاسخ : سوال در مورد کار با تایمر

    کلاک تایمر حداکثر میتونه با کلاک سیستم که 72 مگ هست تغذیه شه یا اینکه با استفاده از PLL تقسیمی از کلاک اصلی باشه.
    مثلا نمونه کد زیر برای ایجاد موج PWM با فرکانس 1 مگاهرتز روی کانال 1 تایمر 4 هست.
    ابتدا که تنظیمات GPIO -- اتصال کلاک به GPIO و TIMER4 ---- اینیشال تایمر ---- اینیشیال PWM ---- و در اخر روشن کردن خروجی PWM

    اگر اشتباه حساب نکرده باشم برای کلاک 72 مگ و خروجی PWM با فرکانس 20 کیلوهرتز و دیوتی 50% این مقادیر رو باید جایگذاری کنین:
    Prescaler= 100 ----- Period=36 --- ClockDivision=1 ---- Pulse=18

    کد:
     // Enable GPIOA and GPIOB clock  
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);  
    	
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;  
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
     GPIO_Init(GPIOB, &GPIO_InitStructure); 
      
    	 
     // Enable TIM4 clock  
     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);  
      
     // TIM4 Peripheral Configuration  
     TIM_DeInit( TIM4);  
    
     // Time Base configuration  
     TIM_InitStructure.TIM_Prescaler = 8;  
     TIM_InitStructure.TIM_CounterMode = TIM_CounterMode_Up;  
     TIM_InitStructure.TIM_Period = 7; // 10 bit  
     TIM_InitStructure.TIM_ClockDivision = TIM_CKD_DIV1;  
     TIM_InitStructure.TIM_RepetitionCounter = 0x0;  
     TIM_TimeBaseInit(TIM4, &TIM_InitStructure);  
      
     // Channel 1 Configuration in PWM mode  
     TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;  
     TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;  
     TIM_OCInitStructure.TIM_Pulse = 4;  
    
     TIM_OC1Init(TIM4, &TIM_OCInitStructure);
    
     // TIM4 counter enable  
     TIM_Cmd(TIM4, ENABLE);
      
     // Main Output Enable  
     TIM_CtrlPWMOutputs(TIM4, ENABLE);
  3. #3
    2014/12/09
    64
    1

    پاسخ : سوال در مورد کار با تایمر

    نقل قول نوشته اصلی توسط mohammad poorkhalili
    کلاک تایمر حداکثر میتونه با کلاک سیستم که 72 مگ هست تغذیه شه یا اینکه با استفاده از PLL تقسیمی از کلاک اصلی باشه.
    مثلا نمونه کد زیر برای ایجاد موج PWM با فرکانس 1 مگاهرتز روی کانال 1 تایمر 4 هست.
    ابتدا که تنظیمات GPIO -- اتصال کلاک به GPIO و TIMER4 ---- اینیشال تایمر ---- اینیشیال PWM ---- و در اخر روشن کردن خروجی PWM

    اگر اشتباه حساب نکرده باشم برای کلاک 72 مگ و خروجی PWM با فرکانس 20 کیلوهرتز و دیوتی 50% این مقادیر رو باید جایگذاری کنین:
    Prescaler= 100 ----- Period=36 --- ClockDivision=1 ---- Pulse=18

    کد:
     // Enable GPIOA and GPIOB clock  
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);  
    	
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;  
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
     GPIO_Init(GPIOB, &GPIO_InitStructure); 
      
    	 
     // Enable TIM4 clock  
     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);  
      
     // TIM4 Peripheral Configuration  
     TIM_DeInit( TIM4);  
    
     // Time Base configuration  
     TIM_InitStructure.TIM_Prescaler = 8;  
     TIM_InitStructure.TIM_CounterMode = TIM_CounterMode_Up;  
     TIM_InitStructure.TIM_Period = 7; // 10 bit  
     TIM_InitStructure.TIM_ClockDivision = TIM_CKD_DIV1;  
     TIM_InitStructure.TIM_RepetitionCounter = 0x0;  
     TIM_TimeBaseInit(TIM4, &TIM_InitStructure);  
      
     // Channel 1 Configuration in PWM mode  
     TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;  
     TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;  
     TIM_OCInitStructure.TIM_Pulse = 4;  
    
     TIM_OC1Init(TIM4, &TIM_OCInitStructure);
    
     // TIM4 counter enable  
     TIM_Cmd(TIM4, ENABLE);
      
     // Main Output Enable  
     TIM_CtrlPWMOutputs(TIM4, ENABLE);
    ممنون از توضیحاتتون
    من می خوام یک کار ساده انجام بدهم تایمرم رو مقدار دهی کنم و هر بار که تایمر سر ریز میشه بره قسمت اینتراپت و من اونجا یک بیت رو یک کنم فقط همین
    چند تا نکته هم که متوجه نمی شم دقیق این ها هستند الان من وقتی کریستال 8 مگ وصل کردم کلاکی که میره رویه تایمر من چه مقدار هست من این تنظیمات زیر رو انجام دادم ولی کار نمی کنه کد رو براتون میزارم میشه ببینید کجا اشتباهه یا چیزی رو کم گذاشتم
    کد:
    #include<RTL.h> #include<stm32f10x.h> int test_timer,counter; void rcc_init(void) { RCC_HSEConfig( RCC_HSE_ON);//HSE ENAVLE RCC_WaitForHSEStartUp(); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); /* TIM2 clock enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB ,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC ,ENABLE); } /***************************************************************/ void GPIO_Init1 (void) { GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 ;//blink led GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); } /****************************************************************/ void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; /* Enable the TIM2 global Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } /****************************************************************/ void init_timer2(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; /* Time base configuration */ TIM_DeInit(TIM2); TIM_TimeBaseStructure.TIM_Period = 1000; TIM_TimeBaseStructure.TIM_Prescaler = (36000 - 1); TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_ClearFlag(TIM2, TIM_FLAG_Update); TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE); TIM_Cmd(TIM2, ENABLE); } /****************************************************************/ void TIMER2_IRQHandler(void) // tabe vaghfe daryaft Timer2 { test_timer=1; } /****************************************************************/ int main(void) { rcc_init(); GPIO_Init1 (); NVIC_Configuration(); init_timer2(); GPIO_SetBits( GPIOB, GPIO_Pin_8 ); while(1) { if(test_timer) { test_timer=0; counter++; } if(counter>=2) GPIO_SetBits( GPIOB, GPIO_Pin_8 ); if(counter>=4) { GPIO_SetBits( GPIOB, GPIO_Pin_8 ); counter=0; } } }
    در اینجا چون APB1 i هست من فرض کردم که کلاک میشه 36مگآیا این فرض درسته
    با تشکر
نمایش نتایج: از 1 به 3 از 3

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

  1. سوال در مورد تایمر
    توسط ali2590 در انجمن میکروکنترلرهای AVR
    پاسخ: 1
    آخرين نوشته: 2015/03/01, 08:32
  2. سوال و کمک در مورد تایمر
    توسط tabriz10 در انجمن میکروکنترلرهای AVR
    پاسخ: 1
    آخرين نوشته: 2012/05/30, 15:54
  3. سوال در مورد تایمر s7-300
    توسط hamid256 در انجمن PLC
    پاسخ: 2
    آخرين نوشته: 2010/12/18, 18:24
  4. سوال در مورد تایمر ها در avr
    توسط bambio در انجمن میکروکنترلرهای AVR
    پاسخ: 9
    آخرين نوشته: 2008/08/31, 18:18
  5. سوال در مورد تایمر
    توسط rmn170 در انجمن سایر مطالب مرتبط با ميکرو ها و پروسسورها
    پاسخ: 3
    آخرين نوشته: 2008/07/13, 18:51

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

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

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