NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 2777 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 4 از 4

موضوع: نمونه برنامه راه اندازی Pulse counter

  1. #1
    کاربر علاقه مند
    تاریخ عضویت
    Sep 2007
    نام
    بهروز
    نوشته ها
    34
    تشکر
    14
    تشکر شده 46 بار در 21 پست

    پیش فرض نمونه برنامه راه اندازی Pulse counter

    سلام

    از دوستان کسی نمونه برنامه جهت راه اندازی تایمر در مد شمارنده با کلاک خارجی (pulse counter) داره ؟

    ممنون میشم راهنمائی کنید.

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

  3. #2
    تازه وارد
    تاریخ عضویت
    Apr 2014
    نوشته ها
    3
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

    سلام دوستان و اساتید
    برای شمارش پالس های خروجی از میکرو stm32f103 و کد زیر در حالت external timer interrupt استفاده کردم
    در فرکانس های پایین مثلا 100Hz جواب میده
    ولی بالاتر ازون کمترمیشمره (واسه پالس های 10ms تقریبا 50 سیکل عقب میافته)
    مشکل نمیفهمم از کجاست

    اساتید لطفاااا کمک کنید
    سپاس


    void Configure_PA(void) {

    GPIO_InitTypeDef GPIO_InitStruct;
    EXTI_InitTypeDef EXTI_InitStruct;
    NVIC_InitTypeDef NVIC_InitStruct;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);


    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;//IPU;
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_10 | GPIO_Pin_9 | GPIO_Pin_8;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStruct);

    GPIO_EXTILineConfig(GPIO_PortSourceGPIOA , GPIO_PinSource11);
    EXTI_InitStruct.EXTI_Line = EXTI_Line11; // EXTI15_10_IRQn
    EXTI_InitStruct.EXTI_LineCmd = ENABLE;
    EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
    /* Triggers on rising and falling edge */
    EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Falling;
    EXTI_Init(&EXTI_InitStruct);

    /* Configure one bit for preemption priority */
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
    NVIC_InitStruct.NVIC_IRQChannel = EXTI15_10_IRQn;
    NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0x00;
    /* Set sub priority */
    NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0x00;
    NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStruct);

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
    /* PD0 is connected to EXTI_Line0, which has EXTI0_IRQn vector */
    NVIC_InitStruct.NVIC_IRQChannel = EXTI9_5_IRQn;
    NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0x00;
    NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0x00;
    NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStruct);

    GPIO_EXTILineConfig(GPIO_PortSourceGPIOA , GPIO_PinSource10);
    EXTI_InitStruct.EXTI_Line = EXTI_Line10;
    EXTI_InitStruct.EXTI_LineCmd = ENABLE;
    EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Falling;
    EXTI_Init(&EXTI_InitStruct);

    GPIO_EXTILineConfig(GPIO_PortSourceGPIOA , GPIO_PinSource9);
    EXTI_InitStruct.EXTI_Line = EXTI_Line9;
    EXTI_InitStruct.EXTI_LineCmd = ENABLE;
    EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Falling;
    EXTI_Init(&EXTI_InitStruct);

    GPIO_EXTILineConfig(GPIO_PortSourceGPIOA , GPIO_PinSource8);
    EXTI_InitStruct.EXTI_Line = EXTI_Line8;
    EXTI_InitStruct.EXTI_LineCmd = ENABLE;
    EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Falling;
    EXTI_Init(&EXTI_InitStruct);
    }


    /* Handle Digital Input interrupts */
    void EXTI15_10_IRQHandler(void) {

    if (EXTI_GetITStatus(EXTI_Line11) != RESET) {
    CounterCh[1]++;
    EXTI_ClearITPendingBit(EXTI_Line11);
    }

    if (EXTI_GetITStatus(EXTI_Line10) != RESET) {
    CounterCh[2]++;
    EXTI_ClearITPendingBit(EXTI_Line10);
    }

    }


    void EXTI9_5_IRQHandler(void) {

    if (EXTI_GetITStatus(EXTI_Line9) != RESET) {
    CounterCh[3]++;
    EXTI_ClearITPendingBit(EXTI_Line9);
    }

    if (EXTI_GetITStatus(EXTI_Line8) != RESET) {
    CounterCh[4]++;
    EXTI_ClearITPendingBit(EXTI_Line8);
    }
    }

  4. #3
    مدیر انجمن M.ABDOLLAHI آواتار ها
    تاریخ عضویت
    Dec 2008
    نام
    مهدی عبدالهی
    نوشته ها
    976
    تشکر
    1,567
    تشکر شده 2,677 بار در 667 پست

    پیش فرض

    فرکانس میکروت چقدره؟
    و هر كس از ياد [خداى‏] رحمان دل بگرداند، بر او شيطانى مى‏گماريم تا براى وى دمسازى باشد. (36)و مسلّماً آنها ايشان را از راه باز مى‏دارند و [آنها] مى‏پندارند كه راه يافتگانند. (37)تا آن گاه كه او [با دمسازش‏] به حضور ما آيد، [خطاب به شيطان‏] گويد: «اى كاش ميان من و تو، فاصله خاور و باختر بود، كه چه بد دمسازى هستى!» (38)(سوره زخرف)بگو: «پليد و پاك يكسان نيستند، هر چند كثرت پليد [ها] تو را به شگفت آوَرَد. پس اى خردمندان، از خدا پروا كنيد، باشد كه رستگار شويد.» (100)(سوره مائده(

  5. #4
    تازه وارد
    تاریخ عضویت
    Apr 2014
    نوشته ها
    3
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

    فرکانس میکرو 72MHz و GPIO ها 50MHz
    قابلیت شمارش خیلی بیشتر از این فرکانس ها رو باید داشته باشه ولی تقریبا در 30 ثانیه، 100 تا سیکل عقب میمونهه و کمتر داره میشمرهه!!!

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

  1. counter 0-99
    توسط arsalan681 در انجمن طراحی و ساخت و آزمایش مدارت الکترونیک
    پاسخ: 3
    آخرين نوشته: 15-10-2013, 20:30
  2. 7 Segment LED Counter
    توسط arsalan681 در انجمن طراحی و ساخت و آزمایش مدارت الکترونیک
    پاسخ: 0
    آخرين نوشته: 24-01-2010, 01:45
  3. IC Counter
    توسط NSMNSM در انجمن طراحی و ساخت و آزمایش مدارت الکترونیک
    پاسخ: 2
    آخرين نوشته: 27-08-2009, 13:07
  4. ره اندازی smt160 با پورت موازی
    توسط M.ABDOLLAHI در انجمن AVR
    پاسخ: 3
    آخرين نوشته: 27-04-2009, 21:34

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

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