Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Алгоритм частотомера

Непрочитано 05.05.2011, 15:42  
urry
Почётный гражданин KAZUS.RUN
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 107 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию Re: Алгоритм частотомера

MisterDi, от кого-кого, а от тебя не ожидал... Чему-то плохому молодого человека учишь...
Ну ладно, так приблизительно
PHP код:
#include ‹mega8.h›
#define FREQ_OSC 8000000
#define F_TMR0 1000000
#define F_TMR0_WORK 10 // 0.1 секунда на измерение, это 10 Герц
#define COUNTER_TMR0 F_TMR0/F_TMR0_WORK   // количество тиков таймера
#define COUNTER_OVF COUNTER_TMR0/256    // количество переполнений таймера
#define COUNTER_DIFF (unsigned char)(COUNTER_TMR0-(COUNTER_OVF*256))// разница
#define COUNTER_REAL (unsigned char)(256-COUNTER_DIFF)// дополнение
//----------------------------------------------------------------------------
#define F32L 3100
#define F32H 3300
#define F44L 4300
#define F44H 4500
#define F48L 4700
#define F48H 4900
#define F96L 9500
#define F96H 9700
#define F192L 19000
#define F192H 19300
//--------------------
#define Freg32() {PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTC.4=0  ;}
#define Freg44() {PORTC.0=0;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTC.4=0  ;}
#define Freg48() {PORTC.0=0;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTC.4=0  ;}
#define Freg96() {PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTC.4=0  ;}
#define Freg192() {PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTC.4=1  ;}
//--------------------
volatile unsigned int iCounterOvf;
volatile unsigned char cKORR;
volatile unsigned char bFlagEnd,bFlagReady;
volatile unsigned int iFreq;
//-------------------------------------------------
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
    if(bFlagEnd == 0)
    {
        iCounterOvf++;
        if(iCounterOvf == COUNTER_OVF)
        {
            bFlagEnd=1;
            TCNT0=COUNTER_REAL+cKORR;
        }
    }
    else
    {
        iCounterOvf=0;
        bFlagEnd=0;
        //0.1 c
        iFreq=TCNT1;
        TCNT1=0;    
        cKORR=TCNT0; 
        bFlagReady=1;  
    }
}
//-------------------------------------------------
// Declare your global variables here

void main(void)
{
    // Declare your local variables here

    // Input/Output Ports initialization
    // Port B initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
    PORTB=0x00;
    DDRB=0x00;

    // Port C initialization
    // Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
    // State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
    PORTC=0x00;
    DDRC=0x7F;

    // Port D initialization
    // Func7=Out Func6=Out Func5=In Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
    // State7=0 State6=0 State5=T State4=0 State3=0 State2=0 State1=0 State0=0 
    PORTD=0x00;
    DDRD=0xDF;

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: 1000,000 kHz
    TCCR0=0x02;
    TCNT0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: T1 pin Rising Edge
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer 1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x07;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;
    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer 2 Stopped
    // Mode: Normal top=FFh
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;
    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    MCUCR=0x00;
    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x01;
    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;
    // Global enable interrupts
#asm("sei")
    while (1)
    {
        if( bFlagReady)
        {
            bFlagReady=0;
            if(iFreq  › F32L && iFreq  ‹ F32H)
            {
                Freg32();
            }
            if(iFreq  › F44L && iFreq  ‹ F44H)
            {
                Freg44();
            }
            if(iFreq  › F48L && iFreq  ‹ F48H)
            {
                Freg48();
            }
            if(iFreq  › F96L && iFreq  ‹ F96H)
            {
                Freg96();
            }
            if(iFreq  › F192L && iFreq  ‹ F192H)
            {
                Freg192();
            }

        }
    }
} 
Реклама:
__________________
warez
urry вне форума  
Непрочитано 05.05.2011, 16:01  
MisterDi
Почётный гражданин KAZUS.RUN
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,284
Сказал спасибо: 441
Сказали Спасибо 1,040 раз(а) в 701 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Алгоритм частотомера

Цитата:
MisterDi, от кого-кого, а от тебя не ожидал...
Каюсь, ленивый стал, не додумал как правильнее. К тому же я с мегами активно не работал.
__________________
misterdi<@>i.ua
MisterDi вне форума  
Непрочитано 05.05.2011, 18:06  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Алгоритм частотомера

Сообщение от urry Посмотреть сообщение
MisterDi, от кого-кого, а от тебя не ожидал... Чему-то плохому молодого человека учишь...
Ну ладно, так приблизительно
PHP код:
#include ‹mega8.h›
#define FREQ_OSC 8000000
#define F_TMR0 1000000
#define F_TMR0_WORK 10 // 0.1 секунда на измерение, это 10 Герц
#define COUNTER_TMR0 F_TMR0/F_TMR0_WORK   // количество тиков таймера
#define COUNTER_OVF COUNTER_TMR0/256    // количество переполнений таймера
#define COUNTER_DIFF (unsigned char)(COUNTER_TMR0-(COUNTER_OVF*256))// разница
#define COUNTER_REAL (unsigned char)(256-COUNTER_DIFF)// дополнение
//----------------------------------------------------------------------------
#define F32L 3100
#define F32H 3300
#define F44L 4300
#define F44H 4500
#define F48L 4700
#define F48H 4900
#define F96L 9500
#define F96H 9700
#define F192L 19000
#define F192H 19300
//--------------------
#define Freg32() {PORTC.0=1;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTC.4=0  ;}
#define Freg44() {PORTC.0=0;PORTC.1=1;PORTC.2=0;PORTC.3=0;PORTC.4=0  ;}
#define Freg48() {PORTC.0=0;PORTC.1=0;PORTC.2=1;PORTC.3=0;PORTC.4=0  ;}
#define Freg96() {PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=1;PORTC.4=0  ;}
#define Freg192() {PORTC.0=0;PORTC.1=0;PORTC.2=0;PORTC.3=0;PORTC.4=1  ;}
//--------------------
volatile unsigned int iCounterOvf;
volatile unsigned char cKORR;
volatile unsigned char bFlagEnd,bFlagReady;
volatile unsigned int iFreq;
//-------------------------------------------------
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
    if(bFlagEnd == 0)
    {
        iCounterOvf++;
        if(iCounterOvf == COUNTER_OVF)
        {
            bFlagEnd=1;
            TCNT0=COUNTER_REAL+cKORR;
        }
    }
    else
    {
        iCounterOvf=0;
        bFlagEnd=0;
        //0.1 c
        iFreq=TCNT1;
        TCNT1=0;    
        cKORR=TCNT0; 
        bFlagReady=1;  
    }
}
//-------------------------------------------------
// Declare your global variables here

void main(void)
{
    // Declare your local variables here

    // Input/Output Ports initialization
    // Port B initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
    PORTB=0x00;
    DDRB=0x00;

    // Port C initialization
    // Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
    // State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
    PORTC=0x00;
    DDRC=0x7F;

    // Port D initialization
    // Func7=Out Func6=Out Func5=In Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
    // State7=0 State6=0 State5=T State4=0 State3=0 State2=0 State1=0 State0=0 
    PORTD=0x00;
    DDRD=0xDF;

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: 1000,000 kHz
    TCCR0=0x02;
    TCNT0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: T1 pin Rising Edge
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer 1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x07;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;
    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer 2 Stopped
    // Mode: Normal top=FFh
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;
    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    MCUCR=0x00;
    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x01;
    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;
    // Global enable interrupts
#asm("sei")
    while (1)
    {
        if( bFlagReady)
        {
            bFlagReady=0;
            if(iFreq  › F32L && iFreq  ‹ F32H)
            {
                Freg32();
            }
            if(iFreq  › F44L && iFreq  ‹ F44H)
            {
                Freg44();
            }
            if(iFreq  › F48L && iFreq  ‹ F48H)
            {
                Freg48();
            }
            if(iFreq  › F96L && iFreq  ‹ F96H)
            {
                Freg96();
            }
            if(iFreq  › F192L && iFreq  ‹ F192H)
            {
                Freg192();
            }

        }
    }
} 
Даааа, супер! Вы молодец! Спасибо
Сегодня попробую код, можете расписать словами по каком принципу работает?
Я недавно начал заниматься программированием, не очень хорошо разбираюсь...
Ели вьехал как работает прерывание )
artyomugr вне форума  
Непрочитано 05.05.2011, 20:17  
urry
Почётный гражданин KAZUS.RUN
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 107 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию Re: Алгоритм частотомера

С помощью таймера -0 отбиваем временные интервалы по 0.1 секунда, а 16 битный таймер 1 используем в режиме счета внешних импульсов - подаем их на ногу Д5. За 0.1 секунду для частоты 192 к выдаст число 19200, макс число 65535. В начале измерения обнуляем, в конце считываем.
0 таймер - всего 8 разрядный, будут переполнения для 100 мс. Подаем на 0 таймер 1 мегагерц, узнаем количество импульсов, которые должны пройти для достижения 0.1с - 1000000/10 = 100000, делим их на 256, узнаем количество переполнений таймера N, затем от 100000 отнимаем 256*N - разница, которую должны записать в последний раз, чтобы посчитало точно. Чтобы не мучить большими цифрами, допустим, нам нужно посчитать 300 - итого 1 переполнение и еще кусочек 300 - 256 =44.
Сначала записываем 0, досчитало до 255, пошло переполнение, сработало прерывание и нужно посчитать еще 44 импульса.
Поскольку прерывание у нас по переполнению, записать нужно 256 - 44 . Вот 300 импульсов и получится.
Но срабатывание прерывания тоже занимает время - подставив эти значения в таймер, увидим, что реальное время больше на время входа в прерывание и его нужно компенсировать. И ясно насколько, потому, что пока мы доходим до точки прерывания, 0 таймер продолжает считать.
И это значение 0 таймера (сколько он проскочил от 0 вправо) добавляем, уменьшая его время счета именно настолько, насколько нужно.
TCNT0=COUNTER_REAL+cKORR;
мы забираем при срабатывании
cKORR=TCNT0;
Неточным будет только первое измерение, где мы не знаем еще значение
cKORR
__________________
warez
urry вне форума  
Непрочитано 05.05.2011, 22:37  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Алгоритм частотомера

Сообщение от urry Посмотреть сообщение
С помощью таймера -0 отбиваем временные интервалы по 0.1 секунда, а 16 битный таймер 1 используем в режиме счета внешних импульсов - подаем их на ногу Д5. За 0.1 секунду для частоты 192 к выдаст число 19200, макс число 65535. В начале измерения обнуляем, в конце считываем.
0 таймер - всего 8 разрядный, будут переполнения для 100 мс. Подаем на 0 таймер 1 мегагерц, узнаем количество импульсов, которые должны пройти для достижения 0.1с - 1000000/10 = 100000, делим их на 256, узнаем количество переполнений таймера N, затем от 100000 отнимаем 256*N - разница, которую должны записать в последний раз, чтобы посчитало точно. Чтобы не мучить большими цифрами, допустим, нам нужно посчитать 300 - итого 1 переполнение и еще кусочек 300 - 256 =44.
Сначала записываем 0, досчитало до 255, пошло переполнение, сработало прерывание и нужно посчитать еще 44 импульса.
Поскольку прерывание у нас по переполнению, записать нужно 256 - 44 . Вот 300 импульсов и получится.
Но срабатывание прерывания тоже занимает время - подставив эти значения в таймер, увидим, что реальное время больше на время входа в прерывание и его нужно компенсировать. И ясно насколько, потому, что пока мы доходим до точки прерывания, 0 таймер продолжает считать.
И это значение 0 таймера (сколько он проскочил от 0 вправо) добавляем, уменьшая его время счета именно настолько, насколько нужно.
TCNT0=COUNTER_REAL+cKORR;
мы забираем при срабатывании
cKORR=TCNT0;
Неточным будет только первое измерение, где мы не знаем еще значение
cKORR
Ваш код четко работает!!! Вы конечно профессионал =) Спасибо Вам огромное! Буду его подробно изучать.
Я даже не мог представить что образцовый сигнал для определения частоты можно сделать всего 10Гц Респект Вам!

А Вы не разжуете по поводу понятия "маска" либо "наложить маску".
Может это и глупый вопрос, но честно не совсем понимаю...
Вот флаги знаю где полезны и как их применять знаю
artyomugr вне форума  
Непрочитано 05.05.2011, 23:31  
MisterDi
Почётный гражданин KAZUS.RUN
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,284
Сказал спасибо: 441
Сказали Спасибо 1,040 раз(а) в 701 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Алгоритм частотомера

Маска - элемент для работы с отдельными битами в числе (байте/слове/двойном слове). Применяется для того, чтобы либо узнать состояние соответствующего бита, либо изменить значение какого-то бита в числе.
Одно из основных достоинств - возможность выполнять операции проверки/ сброса/ установки сразу к нескольким битам числа.
Чаще всего маски применяются для работы с битовыми полями регистров периферийных устройств.
Маска - это число используемое для выбора бит при выполнении операций сброса/установки. Чаще всего для записи масок используют двоичную или шестнадцаетеричную форму записи.
Обычно для того, чтобы установить какой-либо бит используют операцию логического ИЛИ с заданным числом. Например для установки битов 1 и 2 (напомню, что счет битов идет от 7 до 0) можно выполнить операцию вида:
Код:
PortX |= 6;
PortX |= 0b00000110;
Для сброса бит применяют операцию логического И с маской у которой сбрасываемые разряды равны 0.
Код:
PortX &= 0xF9;
PortX &= 0b11111001;
Признаком хорошего тона и надежного программирования считается определение масок через #define для того, чтобы при изменении например конфигурации портов ввода-вывода не искать операции с масками по всему тексту для выполнения корректировки.
__________________
misterdi<@>i.ua

Последний раз редактировалось MisterDi; 05.05.2011 в 23:37.
MisterDi вне форума  
Непрочитано 07.05.2011, 22:27  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Алгоритм частотомера

Сообщение от MisterDi Посмотреть сообщение
Маска - элемент для работы с отдельными битами в числе (байте/слове/двойном слове). Применяется для того, чтобы либо узнать состояние соответствующего бита, либо изменить значение какого-то бита в числе.
Одно из основных достоинств - возможность выполнять операции проверки/ сброса/ установки сразу к нескольким битам числа.
Чаще всего маски применяются для работы с битовыми полями регистров периферийных устройств.
Маска - это число используемое для выбора бит при выполнении операций сброса/установки. Чаще всего для записи масок используют двоичную или шестнадцаетеричную форму записи.
Обычно для того, чтобы установить какой-либо бит используют операцию логического ИЛИ с заданным числом. Например для установки битов 1 и 2 (напомню, что счет битов идет от 7 до 0) можно выполнить операцию вида:
Код:
PortX |= 6;
PortX |= 0b00000110;
Для сброса бит применяют операцию логического И с маской у которой сбрасываемые разряды равны 0.
Код:
PortX &= 0xF9;
PortX &= 0b11111001;
Признаком хорошего тона и надежного программирования считается определение масок через #define для того, чтобы при изменении например конфигурации портов ввода-вывода не искать операции с масками по всему тексту для выполнения корректировки.
Добрый вечер! Спасибо Вам огромное! Разьяснили очень подробно
В тайне мечтал получить как раз такое пояснение


Сообщение от artyomugr Посмотреть сообщение
if( bFlagReady)
Еще вопрос по этому куску кода..
Часто встречаю в тексте программы условия без ==0 или ==1
Как их понимать?
И какие есть еще особенности? Видел еще кусок кода с знаком вопроса... это мне вообще не понятно...
Обьясните мне пожалуйста, буду очень благодарен.
С ув. Артем
artyomugr вне форума  
Непрочитано 08.05.2011, 01:10  
AlekseyN
Временная регистрация
 
Регистрация: 20.12.2008
Сообщений: 58
Сказал спасибо: 12
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
AlekseyN на пути к лучшему
По умолчанию Re: Алгоритм частотомера

if(bFlagReady) такое выражение читается так: если "bFlagReady" ИСТИНА
Есть еще такое выражение
if(!bFlagReady) читается так: если "bFlagReady" ЛОЖЬ

В языке СИ любое значение не равное нулю является ИСТНИННЫМ Всё, что равно нулю является ЛОЖЬЮ
AlekseyN вне форума  
Непрочитано 08.05.2011, 10:16  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Алгоритм частотомера

Сообщение от AlekseyN Посмотреть сообщение
if(bFlagReady) такое выражение читается так: если "bFlagReady" ИСТИНА
Есть еще такое выражение
if(!bFlagReady) читается так: если "bFlagReady" ЛОЖЬ

В языке СИ любое значение не равное нулю является ИСТНИННЫМ Всё, что равно нулю является ЛОЖЬЮ
Спасибо! Теперь все отчетливо понятно
artyomugr вне форума  
Непрочитано 08.05.2011, 14:17  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Алгоритм частотомера

А можно еще глупый вопрос?
Есть у кого формула расчета "частоты" например задержку delay_ms(); перевести в Гц..
И как еще можно просто рассчитать таймер например: есть у нас кварц внешний 8мГц
и надо нам получить прямоугольный сигнал 1кГц. Все время путаюсь в этом....
И поясните как написать код обычного генератора прямоугольных импульсов с применением прерываний...
С ув. Артем
artyomugr вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Код Грея, алгоритм ассемблер? picavr Микроконтроллеры, АЦП, память и т.д 8 27.03.2009 04:39
Нужен алгоритм СRC с результатом 7бит AndryG Микроконтроллеры, АЦП, память и т.д 4 05.06.2007 18:51
Алгоритм билдер для ПИК контроллеров. Gladkih Микроконтроллеры, АЦП, память и т.д 9 24.02.2007 18:41
Определение сигнала отбоя АТС - алгоритм нужен Anatols Цифровые сигнальные процессоры 2 04.11.2005 12:17
[Решено] ОЧЕНЬ нужна блок-схема и алгоритм работы м/пр стир. машины Руслан Поиск схем. Делимся схемами 1 10.03.2005 14:02


Часовой пояс GMT +4, время: 08:01.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.