Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как лучьше реализовать?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
at90
Есть некоторый сигнал из 50 импульсов. _/~\__/~\__
30 c одной частотой (1200Гц) 20 с частотой 800 Гц.
Устройство выдаёт этот сигнал один раз. И он из за помех не всегда доходит.
Нужно сделать устройство которое будет записывать этот сигнал и повторять его несколько раз.
Причём сигналы могут быть с разными частотами. Как лучьше реализовать алгоритм записи?
Контроллер TINY2313.
Laptop
Для начала скажи какая длительность посылки в секундах. если количество импульсов ограничено и точно известны частоты, то можно сперва декодировать и хранить именно в таком виде а потом синтезировать сам сигнал сколько угодно. Как вариант хранишь длительность 0-й и длительность 1-ц, но это только если памяти хватит чтоб в недекодированном виде хранить.
WHALE
это меандр?
at90
мне их хранит не нада. Записал повторил и забыл.
Сигнал может быть и не меандр.
А подскажите как измерять интервалы таймером по переходу сигнала?
defunct
Цитата(at90 @ Apr 10 2006, 12:37) *
мне их хранит не нада. Записал повторил и забыл.
Сигнал может быть и не меандр.
А подскажите как измерять интервалы таймером по переходу сигнала?

Если это прямоугольные импульсы, то никакой сложности быть не должно. Записывать с помощью аналогового компаратора и таймера в режиме Input Capture. Сохранять в массиве длительность импульса.
at90
а нет примерчика?
defunct
Цитата(at90 @ Apr 10 2006, 13:39) *
а нет примерчика?


Пример записи, дык, это уже ваша задача, а пример настройки таймера и компаратора пожалуйста:

Код
;----------------------------------------
; Процедура настройки режима Capture
; Таймер работает на частоте чипа (mode0)
T1CaptInit:
    ldi   AL, (1 << OCIEA1)|(1<<TICIE1)|(1 <<  TOIE0)
    out   TIMSK, AL; T1 Output compare, T1 Input capture, T0 Overflow

    ldi   AL, High( 50000)
    out   OCR1AH, AL; Заносим в OCR значение 50000
    ldi   AL, Low( 50000 )
    out   OCR1AL, AL; Каждые 50 тыс. отсчетов таймер будет автоматически сбрасываться

    ldi   AL, 0
    out   TCCR1A, AL; OC1 pin disconnected, PWM disabled

    ldi   AL, (1 << ICNC1)|(0 << ICES1)|(1 << CTC1)|1; //  $89
     ; Capt noise canceller ON (ICNC1=1), Capt on falling edge (ICES1=0)
    out   TCCR1B, AL; Clear on Compare Match (CTC1=1),
                ; work in mode 0 (CS12, CS11, CS10 = 001)
    ret

;------------------------------------------------
; Процедура инициализации аналогового компаратора
; в режиме Event Capture
ACCaptModeInit:
    ldi   AL, $6; (ACIC=1) (ACIS1. ACIS0 = 10 falling edge)
    out   ACSR, AL
    ret
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.