• Объявления

    • admin

      Просьба всем принять участие!   24.11.2017

      На форуме разыгрывается спектроанализатор Arinst SSA-TG LC (цена 18500 руб). Просьба всем перейти по ссылке ниже и принять участие!

Поиск по сайту

Результаты поиска по тегам 'timer'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип публикаций


Категории и разделы

  • Вопрос-Ответ. Для начинающих
    • Песочница (Q&A)
    • Дайте схему!
    • Школьникам и студентам
    • Начинающим
    • Паяльник TV
    • Обсуждение материалов с сайта
  • Радиоэлектроника для профессионалов
    • Световые эффекты и LED
    • Роботы и модели на ДУ-управлении
    • Автоматика
    • Самодельные устройства к компьютеру
    • Программное обеспечение
    • Автомобильная электроника
    • Системы охраны и наблюдения. Личная безопасность
    • Питание
    • Электрика
    • Промышленная электроника
    • Ремонт
    • Металлоискатели
    • Измерительная техника
    • Мастерская радиолюбителя
    • Сотовая связь
    • Спутниковое ТВ
    • КВ и УКВ радиосвязь
    • Жучки
    • Телефония и фрикинг
    • Высокое напряжение
    • Идеи и технологии будущего
    • Справочная радиоэлементов
    • Литература
    • Разное
  • Аудио
    • FAQ, Технологии и компоненты
    • Для начинающих
    • Источники звука
    • Предусилители, темброблоки, фильтры
    • Питание аудио аппаратуры
    • Усилители мощности
    • Акустические системы
    • Авто-аудио
    • Ламповая техника
    • Гитарное оборудование
    • Прочее
  • Микроконтроллеры
    • МК для начинающих
    • AVR
    • PIC
    • STM32
    • Arduino и Raspberry Pi
    • ПЛИС
    • Другие микроконтроллеры и семейства
    • Алгоритмы
    • Программаторы и отладочные модули
    • Периферия и внешние устройства
    • Разное
  • Товары и услуги
    • Коммерческие предложения
    • Продам-Отдам, Услуги
    • Куплю
    • Уголок потребителя
    • Вакансии и разовая работа
    • Наши обзоры и тесты
  • Разное
    • Конкурсы сайта с призами
    • Сайт Паяльник и форум
    • Курилка
    • Технический английский (English)
    • Наши проекты для Android и Web
    • FAQ (Архив)
    • Личные блоги
    • Корзина
    • Вопросы с VK
  • ATX->ЛБП Переделки
  • Юмор в youtube Киловольты юмора
  • Надежность и группы продавцов Радиолюбительская доска объявлений exDIY
  • разные темы Переделки

Блоги

Нет результатов для отображения.

Нет результатов для отображения.

Местоположения

  • Пользователи форума

Группа


ICQ


Skype


Интересы


Город


Сфера радиоэлектроники


Оборудование

Найдено 11 результатов

  1. Тренажер для глаз Идея- Зажигающиеся по очереди светодиоды, которые отслеживаются глазами в различных плоскостях. Подробности в файле прицепа. Варианты движения глаз: 1. Вправо - влево . Тренажер расположен горизонтально параллельно линии глаз. 2. Вверх – вниз. Тренажер расположен вертикально, на оси между глаз, 3. Ближе - дальше . Тренажер расположен горизонтально на оси перпендикулярной оси между глаз. На иллюстрации, условно закреплен, тренажер, а положения показаны изменением положения головы тренируемого. Конструкция. На концах коромысла, размером 30…50 мм расположены светодиоды, которые поочередно мигают. В коробке в середине расположено- питание, схема управления и органы управления. Питание: аккумулятор 18650, Li-Ion. 3,7 В, Функционал- 1. Изменение частоты мигания, 1…5 сек 2. Таймер длительности упражнения, 1…10 минут Требования- ПРОСТОТА и еще раз простота. Питание выбрано из соображений, что от аккумулятора ноута остались. Светодиоды простейшие, чтобы глазом заметно было Цвет светодиода - белый или желтый или красный. Надо подумать, что будет заметней, чтобы можно было заметить, горит или нет светодиод. Например красный светодиод трудно будет отличить, горящий от не горящего, мне так кажется. Многоцветье использовать не хочу.. В первой прикидке все будет состоять из тумблера включения, двух переменных сопротивлений регулировки длительности и частоты, пара светодиодов, батарейки. Пока не решил, на чем делать проще таймер и регулятор длительности на цифре или аналоге- Критерий простота. Тренажер для глаз.docx
  2. Генератор 1000-5000Гц на Attiny2313A

    Добрый вечер уважаемые! Помогите советом .. Как лучше всего реализовать генератор . Исходные данные такие : Есть выделенный 10 битный параллельный порт при помощи ножек ввода . Он принимает значения от 0 до 1000 , выводит эти данные основной микроконтроллер тоже через параллельный порт . Нужно исходя из этого генерировать частоту от 1000Гц до 5000Гц с шагом 4-5Гц . Пробую программно генерить - не получается , вернее получается очень коряво . Если подстроил нижнюю границу точно , к примеру 1000Гц , то верхняя плывет и наоборот , если верхнюю подстроил то нижняя плывет . Допускается на больших частотах (свыше 4000Гц шаг 20Гц ) но как синхронизировать показания дисплея с генератором ? Есть вариант применить таблицу но это очень муторно ... Частота кварца мк который генерит частоту 16МГц. Посоветуйте какую частоту кварца лучше выбрать и каким методом генерить частоту ? Еще одна особенность : надо формировать импульс длительностью 10мкс , а вот чтобы период был к примеру при 1000Гц = 990мкс. и т.д. Есть хитрости у таймера Attiny2313A при помощи которых можно аппаратно сформировать частоту? С уважением Артем.
  3. Доброго времени суток, решил начать потихоньку осваивать МК, т.к схемы собранные на рассыпухи не отличаются высокой точностью и стабильностью. Начал ставить задачи по этапно - моргание светодиодом -> моргание светодиодом после нажатия на кнопку - > моргание светодиодом при нажатии на кнопку в течении 40 секунд-> всё остальное что может делать МК в течении этих 40 сек. На данном моменте застрял на 3-ем этапе, никак не могу разобраться как прикрутить работу таймера к своему коду, листинг прилагаю (1- программа моргания светодиодом 3 раза, после нажатия на кнопку, 2 - изыскания на тему таймера): #include <mega8.h> #include <delay.h> #include <interrupt.h> #include <io.h> #define PD2 2 // Переобозначение 2 пина порта D на его имя. void main(void) { PORTD = 0b10000000; // Подключаем подтягивающий PULL-UP резистор к 2 пину порта D. DDRD = 0b00000000; // Настроим порт D на ввод информации. DDRB = 0b11111111; //Настроим порт D на вывод информации. while(1) // Бесконечный цикл опроса кнопок. { if (PIND &= 1<<PD2) // Считываем 2 пин порта D. { PORTB =0b00000000; // Если 1 (кнопка не нажата), то гасим светодиод. } else { PORTB = 0b00000001; // Если 0 (т. е. кнопка нажата), то зажигаем светодиод. delay_ms(500); PORTB = 0x00000000; delay_ms(500); PORTB = 0x00000001; delay_ms(500); PORTB = 0x00000000; delay_ms(500); PORTB = 0x00000001; } а теперь таймер: #include <mega8.h> #define s; int s; // переменная для хранения секунд // Обработка прерывания по совпадению interrupt [TIM1_COMPA] void timer1_compa_isr(void) { s++; // увеличиваем переменную каждую секунду if(s>59) // обнуляем секунды после 59 { s=0; } TCNT1=0; //обнуляем таймер } void main(void) { TCCR1A=0x00; //настройка таймера TCCR1B=0x05; TCNT1=0x00; //здесь увеличиваются тики OCR1A=0x1E85; //записываем число в регистр сравнения TIMSK=0x10; //запускаем таймер }
  4. Всем Добрый день, Форумчане !!! Всё вот никак не могу понять, как рассчитать время для таймеров в C18 компиляторе. Вот под MicroC - в курсе, а под C18 - ну, вот - никак ! Есть ли где нормальное описание, что за что отвечает ? Всё перерыскал и собрал хоть какой, но рабочий код из кусочков, который нашёл в инете. Камень: PIC18F452 Среда разработки: MPLAB X, Linux. Компилятор C18. Программатор: PICkit3 Кварц на 10 МГц, так как в наличии только 22пкф Конфигурация в файле "config_bits.h": // PIC18F452 Configuration Bit Settings // 'C' source line config statements #include <p18f452.h> // CONFIG1H #pragma config OSC = HS // Oscillator Selection bits (HS oscillator) #pragma config OSCS = OFF // Oscillator System Clock Switch Enable bit (Oscillator system clock switch option is disabled (main oscillator is source)) // CONFIG2L #pragma config PWRT = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config BOR = ON // Brown-out Reset Enable bit (Brown-out Reset enabled) #pragma config BORV = 20 // Brown-out Reset Voltage bits (VBOR set to 2.0V) // CONFIG2H #pragma config WDT = OFF // Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN bit)) #pragma config WDTPS = 128 // Watchdog Timer Postscale Select bits (1:128) // CONFIG3H #pragma config CCP2MUX = ON // CCP2 Mux bit (CCP2 input/output is multiplexed with RC1) // CONFIG4L #pragma config STVR = ON // Stack Full/Underflow Reset Enable bit (Stack Full/Underflow will cause RESET) #pragma config LVP = OFF // Low Voltage ICSP Enable bit (Low Voltage ICSP disabled) // CONFIG5L #pragma config CP0 = OFF // Code Protection bit (Block 0 (000200-001FFFh) not code protected) #pragma config CP1 = OFF // Code Protection bit (Block 1 (002000-003FFFh) not code protected) #pragma config CP2 = OFF // Code Protection bit (Block 2 (004000-005FFFh) not code protected) #pragma config CP3 = OFF // Code Protection bit (Block 3 (006000-007FFFh) not code protected) // CONFIG5H #pragma config CPB = OFF // Boot Block Code Protection bit (Boot Block (000000-0001FFh) not code protected) #pragma config CPD = OFF // Data EEPROM Code Protection bit (Data EEPROM not code protected) // CONFIG6L #pragma config WRT0 = OFF // Write Protection bit (Block 0 (000200-001FFFh) not write protected) #pragma config WRT1 = OFF // Write Protection bit (Block 1 (002000-003FFFh) not write protected) #pragma config WRT2 = OFF // Write Protection bit (Block 2 (004000-005FFFh) not write protected) #pragma config WRT3 = OFF // Write Protection bit (Block 3 (006000-007FFFh) not write protected) // CONFIG6H #pragma config WRTC = OFF // Configuration Register Write Protection bit (Configuration registers (300000-3000FFh) not write protected) #pragma config WRTB = OFF // Boot Block Write Protection bit (Boot Block (000000-0001FFh) not write protected) #pragma config WRTD = OFF // Data EEPROM Write Protection bit (Data EEPROM not write protected) // CONFIG7L #pragma config EBTR0 = OFF // Table Read Protection bit (Block 0 (000200-001FFFh) not protected from Table Reads executed in other blocks) #pragma config EBTR1 = OFF // Table Read Protection bit (Block 1 (002000-003FFFh) not protected from Table Reads executed in other blocks) #pragma config EBTR2 = OFF // Table Read Protection bit (Block 2 (004000-005FFFh) not protected from Table Reads executed in other blocks) #pragma config EBTR3 = OFF // Table Read Protection bit (Block 3 (006000-007FFFh) not protected from Table Reads executed in other blocks) // CONFIG7H #pragma config EBTRB = OFF // Boot Block Table Read Protection bit (Boot Block (000000-0001FFh) not protected from Table Reads executed in other blocks) #pragma target clock 10_000_000 Сам код: #include "config_bits.h" #include <stdio.h> #include <stdlib.h> #include <timers.h> void high_isr (void); // ?????! #pragma code high_vector = 0x08 void interrupt_at_high_vector(void) { _asm GOTO high_isr _endasm } #pragma interrupt high_isr // Зачем эти приоритеты ?! void high_isr (void) { static int o = 0; if (INTCONbits.TMR0IF){ INTCONbits.TMR0IF = 0; TMR0H = 0x85; // Здесь, я так понял, всё обнуляем ... TMR0L = 0xEE; // И тут // Юзер [b]Alex[/b] попросил меня изменить данный цикл, я потом изменю, но как-то всё разберу окончательно !! Спасибо !!! if ( o == 0 ) { PORTB = 0x0E; o = 1; } else if ( o == 1 ) { PORTB = 0x0D; o = 2; } else if ( o == 2 ) { PORTB = 0x0B; o = 3; } else if ( o == 3 ) { PORTB = 0x07; o = 4; } else if ( o == 4 ) { PORTB = 0x0B; o = 5; } else if ( o == 5 ) { PORTB = 0x0D; o = 0; } } } void main (void) { // Тут просто распределяем выходы, входы и номиналы. TRISA = 0x00; PORTA = 0x00; TRISB = 0xF0; PORTB = 0x0F; TRISC = 0x00; PORTC = 0x00; TRISD = 0x00; PORTD = 0x00; TRISE = 0x00; PORTE = 0x00; ADCON1 = 0x0F; // Тут та самая **па T0CON = 0x85; // Регистр контроля ? Почему 0x85 ? 10000101 - я так понял включает определённые биты в этом регистре. В даташите были прописаны определённые биты, но почему именно эти !? TMR0H = 0x85; // Вписываем что-то в таймер ? 10000101, опять ? TMR0L = 0xEE; // Тут также ? Почему 11101110 ? INTCON = 0x20; // Регистры прерывания ?! INTCON2 = 0x04; // ? RCONbits.IPEN = 1; // Включаем приоритеты ? T0CON = 0x85; // Опять регистр контроля ? TMR0H = 0x85; // Вписываем что-то опять в таймер ? TMR0L = 0xEE; // Тут опять также ? INTCONbits.GIEH = 1; // Активирует все высокие приоритеты ? while (1) { } } Сам код работает стабильно на живой схеме, но точно не в 1 секунду. ------------------------------------------ Собсно, сам вопрос ... ну вот как тут научиться рассчитать хоть 0.00001с или что, за что отвечает. Я рыскал в инете и под каждый компилятор всё по разному ... есть ли где литература или хоть что-то, где можно найти ответы на эти вопросы !!!? Нашёл пару информаций по сайтам, например ... http://ee.cgu.edu.tw...uP102_Timer.pdf, но, блин, может кто нормально объяснить что и зачем ? Я буду очень благодарен ! Спасибо и дай Бог вам счастья и здоровья !!! :thank_you2:
  5. Есть отладочная плата (STM32F103C8T6 + внешний кварц 8МГц), при настройке и запуске таймера с дрыганием ноги за один такт, при всех настройках не могу добиться чтобы один такт ровнялся 1мкс. Вот мой код #include "stm32f10x_rcc.h" #include "stm32f10x_gpio.h" #include "stm32f10x_tim.h" #include "stm32f10x_conf.h" void InitTMI(void) { RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); TIM2->CR1=(0<<9)|(0<<8)|(1<<7)|(0<<6)|(0<<5)|(0<<4)|(0<<3)|(0<<2)|(0<<1); TIM2->ARR=3; TIM2->PSC=8-1; TIM2->CNT=0; TIM2->CR1|=(1<<0); } int main(void) { //RCC_HSE_ON; RCC->CR=RCC_HSE_ON; RCC->CFGR&=(~(1<<7)|(1<<6)|(1<<5)|(1<<4)); while (!(RCC->CR & RCC_CR_HSERDY)) {}; // Ожидание готовности HSE. RCC->CFGR &=~RCC_CFGR_SW; // Очистить биты SW0, SW1. RCC->CFGR |= RCC_CFGR_SW_HSE; // Выбрать HSE для тактирования SW0=1. GPIO_InitTypeDef gpioA; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); gpioA.GPIO_Mode=GPIO_Mode_Out_PP; gpioA.GPIO_Speed=GPIO_Speed_2MHz; gpioA.GPIO_Pin=GPIO_Pin_1; GPIO_Init(GPIOA,&gpioA); InitTMI(); while(1) { if(TIM2->CNT==1){GPIO_ResetBits(GPIOA,GPIO_Pin_1);} if(TIM2->CNT==2){GPIO_SetBits(GPIOA,GPIO_Pin_1);} //GPIO_ResetBits(GPIOA,GPIO_Pin_1); } }
  6. помогите теоретически рассчитать длительность выходного импульса таймера 555 в OrCAD PSpice получается длительность 558.8 секунд , а теоретически у меня не получается.
  7. Help - Avr, Таймер.

    не пойму в чем дело Вроде должен же на прерывание уходить В начале дал общее разрешение на Прерывания - SEI Настроил 16-ти битный Таймер 1 Поставил маску на совпадении в канале А Установил вектора При пошаговом дебагиннге не работает- не переходит на прерывание. Хотя TIFR выставляется, счетчик обнуляется... Заметил, что бит разрешения прерываний регистра SERG в процессе исполнения программы тоже со временем обнуляется :/ Прошу помощи или ,хотя бы, подсказки сам код на ассамблере: .include "tn2313def.inc" .list .def temp = R16 .def cou = R18 .def schet = R19 .equ kdel = 256 .cseg .org 0 start: rjmp init reti reti reti rjmp timer reti reti reti reti reti reti reti reti reti reti reti reti reti reti init: ; стек ldi temp, RAMEND out SPL, temp ; компаратор ldi temp, 0x80 out ACSR, temp CLI ; настройка таймера ldi temp, 0b00001001 out TCCR1B, temp ldi temp, high(kdel) out OCR1AH, temp ldi temp, low(kdel) out OCR1AL, temp ; maska таймера ldi temp, 0b01000000 out TIMSK, temp SEI exit: rjmp exit timer: inc cou что я делаю не так?
  8. Discovery Stm32L Capture

    добрый день. Вожусь с таймерами на отладочной плате discovery stm32l на stm32l152rbt6 Расскажите как можно сделать частотомер. знающие люди, не скупитесь, помогите. Уже 2-ой день вожусь, никак не получается. Даташит читал, но так и не могу понять как задействовать ножку таймера 9 на захват.
  9. Fast Pwm На Timer1 Atmega8

    Устройство на ATmega8 (внешний кварц на 16 МГц, впрочем это не важно) используется для генерации ШИМ-сигнала на основе аппаратного OC1A (он же PB1). Началось все с бага в AVRStudio при симуляции. FastPWM (WGM1x=1110) она считает каким-то посторонним режимом и считает не до ICR1 а до 0x01FF, причем почему-то реверсивно. В железе и Протеусе такое не повторилось. Используется аппаратное формирование сигнала по OCR1A. Схема предельно простая - питание, кварц, PB1 - выход (на модели там висит осциллограф), на INT0(PD2) кнопка до земли. На моделях эти кнопки куда только не вешал. Собственно вопрос-то в общении с внутренностями а не с внешним миром. TCCR1A=0b10001010;//выставлены биты прямого ШИМ на канале A (COM1A=0b10), аппаратный ШИМ разрешен (FOC1A=1) TCCR1B=0b00011001;//Про WGM сказано в тексте. Эти 4 бира размазаны по TCCR1A и TCCR1B. Таймер работает на частоте ядра. ICR1=0xFFFF;//модуль счета - максимум, я хочу получить все 16 разрядов сигнала. TIMSK &= 0b11000011;//используется не только этот таймер и не только в этом режиме, поэтому все прерывания, которые от него зависят, отключаю. Везде кроме Студии оно симулируется/работает как надо. Необходимо по некоторому событию (пусть для определенности будет кнопка) надо менять скважность (фактически, значение OCR1A). Однако на прямое присвоение реакции почему-то нет, надо сначала забить все единицами и только потом присваивать то что надо OCR1A=0xFFF9; OCR1A=0x8000; Тогда оно работает нормально. Собственно вопрос, в чем причина (может, буферизация OCR1A?) и нельзя ли это обойти. Была и еще одна бага с которой толком не разобрался. В процессе работы приходится отключать таймер и переводить его в обычный режим с прерыванием по сравнению B. При этом рандомно отключался то ШИМ то нормальный режим. Каким-то шаманством я это обошел, но хотелось бы понять с чем может быть связано. Сейчас кода к 2-й ситуации нет, как смогу выложу. Понятно, что без него вряд ли чем можно помочь. Но хоть посоветуйте как это можно реализовать чтобы пересчитать как можно меньше подводных граблей.
  10. Не могу понять в чем ошибка. Установил фьюзы на мега8 на внешний кварц 8МГц. Написал програмку на ассемблере, в которой реализована максимальная задержка времени = 1 сек. А реально получаю около 10 сек. Где я ошибся? ; *********************************************** ; Автор: ; Дата: ; Для AVR: atmega8 * ; Тактовая частота: 8МГц * ;************************************************ .device atmega8 .nolist .include "m8def.inc" .list ; ======================= ; Обьявления .def temp=r16 .def Run=r17 ; текущее значение битов порта D .def Count=r18 ; задержка времени .def Mark=r19 ; задержка времени .def Delay=r20 ; регулируемая задержка времени .def Speed=r21 ; декрементируемое значение задержки времени ; ======================= ; Начало программы rjmp Init; ; ======================= Init: ; Инициализация порта В ldi temp, 0b11111100 out DDRB, temp ldi temp, 0b00000011 out PortB, temp ; Инициализация порта D ser temp out DDRD, temp ldi Run, 0b00000001 out PortD, Run ; Определение параметров таймера ldi Count, 25 ldi Mark, 125 ldi Delay, 10 ldi temp, 0b00000100 out TCCR0, temp ; делим тактовую частоту на 256. Получаем 31250 тактов/сек ; ======================= ; Основное тело программы Start: ; проверка нажатия на одну из кнопок и изменение скорости бегущей строки cpi Delay, 10 ; если число равно 10, breq PC+3 ; значит перепрыгиваем блок инкрементации sbis PinB, 0 ; если нажата кнопка увеличения скорости, subi Delay, -1 ; значит увеличиваем скорость на 1 cpi Delay, 1 ; если число равно 1, breq PC+3 ; значит перепрыгиваем блок декрементации sbis PinB, 1 ; если нажата кнопка уменьшения скорости, subi Delay, 1 ; значит уменьшаем скорость на 1 ; задержка времени ; тройной цикл должен обеспечивать задержку времени: ; - максимум: Count*Mark*Speed=25*125*10=31250 тактов (или 1 секунда) ; - минимум: Count*Mark*Speed=25*125*1=3125 тактов (или 0.1 секунда) mov Speed, Delay TimeLoop: in temp, TCNT0 cp temp, Mark brne TimeLoop subi Mark, -125 dec Count brne TimeLoop subi Speed, 1 brne TimeLoop ; Реализация бегущей строки (поочередное подсвечивание светодиодов) bclr 0 lsl Run brcc PC+2 ldi Run, 0b00000001 out PortD, Run rjmp Start
  11. Mega 8 Timer 2

    Можно ли подключить к Timer 2, сервопривод ? и как его настроить а то ничего немогу понять режим Fast PWM может дать только частоту 30Hz вместо 50Hz