Например TDA7294

Форум РадиоКот • Просмотр темы - 2 цикла одновременно
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Сб апр 20, 2024 16:50:40

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 46 ]    , 2,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: 2 цикла одновременно
СообщениеДобавлено: Вт сен 04, 2018 10:16:11 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14059
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Если пытаться выжать из МК "по максимуму" - тогда переходим на ассемблер и детальнейший разбор даташитов.
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 2 цикла одновременно
СообщениеДобавлено: Вт сен 04, 2018 10:27:33 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Я бы даже сказал грубее: не страдайте фигней. Одновременными в нашей жизни могут быть только абсолютно независимые процессы. В случае одно ядерного МК независимых внутренних процессов быть не может, и даже в многоядерных существуют зависимости между ядрами.
Поэтому надо не такты считать, добиваясь идеальной "параллельности", а оценить реальные "задержки" и их значимость, и просто решить свою задачу.
Самый простой и универсальный способ для этого я назвал: прерывания.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 2 цикла одновременно
СообщениеДобавлено: Вт сен 04, 2018 10:38:56 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14059
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Многих сбивает с толку использование аппаратных средств, интегрированных в МК помимо основного ядра.
Да эти блоки работают автономно и параллельно с выполнением основной программы .
Некоторые могут быть практически полностью автономны с момента их запуска (допустим тот же выходной меандр выдавать), другие таки требуют наличия программных прерываний.
А тут уже надо расфасовывать основную программу и возможные наложения коротюсеньких (разумно соизмеримых) прерываний.
Выбираем наиболее оптимальную конфигурацию и работаем.
Однако планировку задач никто не отменял - все зависит от конкретных ресурсов и конкретной задачи.
:beer:


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: 2 цикла одновременно
СообщениеДобавлено: Ср сен 05, 2018 10:35:03 
Открыл глаза

Карма: -1
Рейтинг сообщений: -1
Зарегистрирован: Вс сен 03, 2017 13:16:25
Сообщений: 59
Рейтинг сообщения: 0
ребят еще вопрос как в atmel studio писать правильно место PORTB= 0b0000001;
к примеру так PORTB.1=1; как в codevisionavr


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: 2 цикла одновременно
СообщениеДобавлено: Ср сен 05, 2018 11:23:36 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
тогда PORTB|=0b00000001;

Добавлено after 1 minute 26 seconds:
потому что командой PORTB= 0b0000001; ты не только портб.1=1 сделаешь, но и все остальные ноги порта принудительно сбросишь.

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: 2 цикла одновременно
СообщениеДобавлено: Ср сен 05, 2018 12:18:24 
Открыл глаза

Карма: -1
Рейтинг сообщений: -1
Зарегистрирован: Вс сен 03, 2017 13:16:25
Сообщений: 59
Рейтинг сообщения: 0
тогда PORTB|=0b00000001;

Добавлено after 1 minute 26 seconds:
потому что командой PORTB= 0b0000001; ты не только портб.1=1 сделаешь, но и все остальные ноги порта принудительно сбросишь.


тип не как не упростить что б более читабельно было? например как в codevisionavr

Добавлено after 7 minutes 42 seconds:
Не майтесь ерундой: аппаратный способ мигания в данном случае не универсальный. По прерываниям можно мигать любой ножкой МК, и не только. Это универсальный способ.

как с помощью прерывания мигать любой ножкой?? просто сколько ищу инфы так и не нашел


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 2 цикла одновременно
СообщениеДобавлено: Ср сен 05, 2018 12:20:59 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 390
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7010
Откуда: Ижевск
Рейтинг сообщения: 0
Никак. PORTx.y= N - фича кодевижена.

Добавлено after 2 minutes 17 seconds:
В кодевижене запустите визард и активируйте таймер (с прерыванием при переполнении, например). Визард пропишет даже обработчик прерывания от таймера.

_________________
Docendo discimus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 2 цикла одновременно
СообщениеДобавлено: Ср сен 05, 2018 12:21:50 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14059
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
В ассемблере
sbi PORTB,1 ; это ежли для первого бита
или если как память
lds tmp_n,(PORTB+0x20)
sbr tmp_n,1<<1
sts (PORTB+0x20),tmp_n
:roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 2 цикла одновременно
СообщениеДобавлено: Ср сен 05, 2018 12:25:16 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 390
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7010
Откуда: Ижевск
Рейтинг сообщения: 0
http://www.cyberforum.ru/avr/thread1497834.html

Добавлено after 30 seconds:
Только в обработчике менять состояние порта.

_________________
Docendo discimus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 2 цикла одновременно
СообщениеДобавлено: Ср сен 05, 2018 13:42:03 
Открыл глаза

Карма: -1
Рейтинг сообщений: -1
Зарегистрирован: Вс сен 03, 2017 13:16:25
Сообщений: 59
Рейтинг сообщения: 0
как сделать прерывание светодиода?? не очень понимаю


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 2 цикла одновременно
СообщениеДобавлено: Ср сен 05, 2018 14:24:22 
Друг Кота

Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 6867
Откуда: .ru
Рейтинг сообщения: 0
очень просто)) Открываем кодевижен и пишем...

1- выбрали МК - например ATmega8: кварц - 4 МHz; фьюзы: Low EF; Higt C9.
2- написали программу вручную (или сгенерировали код в кодевижене). Например пишем программу вручную:

----------
// Обработчик прерываний таймера 0.
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
PORTB.1 = ~ PORTB.1; // включаем/выключаем порт - мигаем светодиодом
}


void main(void) // Главная функция
{

// Настроили порт (на котором будет мигать светодиод)
DDRB.1=1; // порт на выход
PORTB.1=0; // начальное состояние порта (вкл/выкл).

// Настроли таймер 0.
TCCR0=0x01; // Настроили режим работы таймера 0 (предделитель и т.д.) > 4.000.000 кварц / 256 тактов таймер =15.625 цикл

// Настроили маску прерываний для таймера 0.
TIMSK=0x01;

// Разрешили Глобальное прерывание
#asm("sei")

...
while (1) {}; // тут основная программа.
...
} // конец
----------

Всё )) Сидим, смотрим как мигает светодиод с частотй ~8 кГц... и радуемся))
Вложение:
1.jpg [125.92 KiB]
Скачиваний: 455

Прада на частоте 8 кГц мы ничего не увидем :))) Тогда меняем кварц или выбираем другой таймер, например таймер 1 и повторяем процедуру сначала))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 2 цикла одновременно
СообщениеДобавлено: Ср сен 05, 2018 21:50:25 
Открыл глаза

Карма: -1
Рейтинг сообщений: -1
Зарегистрирован: Вс сен 03, 2017 13:16:25
Сообщений: 59
Рейтинг сообщения: 0
очень просто)) Открываем кодевижен и пишем...

1- выбрали МК - например ATmega8: кварц - 4 МHz; фьюзы: Low EF; Higt C9.
2- написали программу вручную (или сгенерировали код в кодевижене). Например пишем программу вручную:

----------
// Обработчик прерываний таймера 0.
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
PORTB.1 = ~ PORTB.1; // включаем/выключаем порт - мигаем светодиодом
}


void main(void) // Главная функция
{

// Настроили порт (на котором будет мигать светодиод)
DDRB.1=1; // порт на выход
PORTB.1=0; // начальное состояние порта (вкл/выкл).

// Настроли таймер 0.
TCCR0=0x01; // Настроили режим работы таймера 0 (предделитель и т.д.) > 4.000.000 кварц / 256 тактов таймер =15.625 цикл

// Настроили маску прерываний для таймера 0.
TIMSK=0x01;

// Разрешили Глобальное прерывание
#asm("sei")

...
while (1) {}; // тут основная программа.
...
} // конец
----------

Всё )) Сидим, смотрим как мигает светодиод с частотй ~8 кГц... и радуемся))
Вложение:
1.jpg

Прада на частоте 8 кГц мы ничего не увидем :))) Тогда меняем кварц или выбираем другой таймер, например таймер 1 и повторяем процедуру сначала))


CODEVISIONAVR выдает ошибки на маску таймера и настройку


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 2 цикла одновременно
СообщениеДобавлено: Ср сен 05, 2018 21:52:21 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Кошмар. Для одного мигающего светодиода отводят целый таймер. До чего докатились ... :facepalm:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 2 цикла одновременно
СообщениеДобавлено: Ср сен 05, 2018 22:32:27 
Друг Кота

Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 6867
Откуда: .ru
Рейтинг сообщения: 0
Аlex писал(а):
Для одного мигающего светодиода отводят целый таймер.

А ещё мы для каждого светодиода отводим целый порт ! Динамическую индикацию мы не используем... не люблю когда в глазах рябит)) :)))
danilka468 писал(а):
CODEVISIONAVR выдает ошибки на маску таймера и настройку

Ну значит тупой кодевижен)) Мой кодевижен тоже не все понимает команды)) Бывает... Но это не важно, главное что я сам все понимаю команды))

Тогда попросите кодевижен, что бы он сам вам сгенерировал код, как ему нравится)). Открыли кодевижен и создали новый проект:
Вложение:

Вложение:

Вложение:
выбрали частоту таймера.jpg [41.58 KiB]
Скачиваний: 482

Вложение:
нажали на галочку ниже - Interrrupt.jpg [39.8 KiB]
Скачиваний: 227

нажали на кнопку "сохранить проект"... Выбрали куда сохранить... имя проекта... и т.д.)) И вуаля! Кодевижен сам сгенерировал исходный код прерывание по таймру 0:


Код кодевижена:
----------
#include <mega8.h>

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here

}

// 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=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D 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
PORTD=0x00;
DDRD=0x00;

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

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// 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=0x00;
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)
{
// Place your code here

};
}
----------

Теперь только добавили к исходному коду кодевижена свой светодиод: ))

----------
#include <mega8.h>

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here

PORTB.1 = ~ PORTB.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;



// Настроили порт (на котором будет мигать светодиод)
DDRB.1=1; // порт на выход
PORTB.1=0; // начальное состояние порта (вкл/выкл).





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

// Port D 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
PORTD=0x00;
DDRD=0x00;

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

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// 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=0x00;
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)
{
// Place your code here

};
}
----------
Готово! )) Запускаем... проверяем...
Вложение:
мигает !!! ))).jpg [146.23 KiB]
Скачиваний: 471

Ура !!! )) :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 2 цикла одновременно
СообщениеДобавлено: Чт сен 06, 2018 00:02:04 
Открыл глаза

Карма: -1
Рейтинг сообщений: -1
Зарегистрирован: Вс сен 03, 2017 13:16:25
Сообщений: 59
Рейтинг сообщения: 0
Аlex писал(а):
Для одного мигающего светодиода отводят целый таймер.

А ещё мы для каждого светодиода отводим целый порт ! Динамическую индикацию мы не используем... не люблю когда в глазах рябит)) :)))
danilka468 писал(а):
CODEVISIONAVR выдает ошибки на маску таймера и настройку

Ну значит тупой кодевижен)) Мой кодевижен тоже не все понимает команды)) Бывает... Но это не важно, главное что я сам все понимаю команды))

Тогда попросите кодевижен, что бы он сам вам сгенерировал код, как ему нравится)). Открыли кодевижен и создали новый проект:
Вложение:
выбрали чип, выбрали частоту чипа.jpg

Вложение:
на вкладке таймер выбрали любой таймер.jpg

Вложение:
выбрали частоту таймера.jpg

Вложение:
нажали на галочку ниже - Interrrupt.jpg

нажали на кнопку "сохранить проект"... Выбрали куда сохранить... имя проекта... и т.д.)) И вуаля! Кодевижен сам сгенерировал исходный код прерывание по таймру 0:


CODE
Готово! )) Запускаем... проверяем...
Вложение:
мигает !!! ))).jpg

Ура !!! )) :)))

так и делал... и проблема в том что он мегает раз в 20-30 секунд меня скорость и даже в interupt добавлял TCNT0=0x05; или же светодиод просто стоит и не моргает


Последний раз редактировалось danilka468 Чт сен 06, 2018 09:08:52, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 2 цикла одновременно
СообщениеДобавлено: Чт сен 06, 2018 05:36:46 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 3
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
в приличном обществе канделябром можно получить за код без тега code и за цитирование предыдущего сообщения в полном объеме

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 2 цикла одновременно
СообщениеДобавлено: Чт сен 06, 2018 08:24:08 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14059
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Вообще-то в большинстве АВРок запись в регистр
sbi PINx,y ; где PINx это адрес входного регистра порта х, а у - номер бита, который надо инвертировать
приведет к инверсии выходного состояния данного пина.
А чем мерять интервал - таймером или программным циклом или завершением определенного перечня подпрограмм - не суть важно.
:roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 2 цикла одновременно
СообщениеДобавлено: Чт сен 06, 2018 10:33:26 
Открыл глаза

Карма: -1
Рейтинг сообщений: -1
Зарегистрирован: Вс сен 03, 2017 13:16:25
Сообщений: 59
Рейтинг сообщения: 0
Вообще-то в большинстве АВРок запись в регистр
sbi PINx,y ; где PINx это адрес входного регистра порта х, а у - номер бита, который надо инвертировать
приведет к инверсии выходного состояния данного пина.
А чем мерять интервал - таймером или программным циклом или завершением определенного перечня подпрограмм - не суть важно.
:roll:

и все же...я не понимаю как можно сделать что б светодиод моргал постоянно ..


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 2 цикла одновременно
СообщениеДобавлено: Чт сен 06, 2018 11:46:24 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14059
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
программа выполняет какое-то свое дело.
естественно она имеет собственное время исполнения
если длительность времени превысит скорость реакции глаза (пресловутое 50Гц)
интервал между инверсиями состояния вывода (и соответственно включенного и выключенного состояния светика)
будет заметен глазом наблюдателя.
Вот в одном месте достаточно длинного кусманчика программы и ставим инверсию на соответствующем выводе.
Собственно именно инверсия состояния (независимо от того, каким конкретным алгоритмом оная достигается - или анализом текущего статуса вывода с последующим его соответствующим изменением или использованием особенностей АВРок - записью в PINx.n единицы).
Для случая, ежли программа коротенькая добавляем программный счетчик количества выполненных фрагментов кода.
Как вариант - программный счетчик машинных циклов
или
аппаратный таймер, имеющий возможность самостоятельного изменения состояния вывода МК при переполнении (тогда процесс абсолютно автономный от работы программы)
8)


Последний раз редактировалось BOB51 Чт сен 06, 2018 11:50:11, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 2 цикла одновременно
СообщениеДобавлено: Чт сен 06, 2018 11:47:34 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 403
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2479
Рейтинг сообщения: 6
Он не только мигать, но и плавно загораться может :)

Может ну его, эти микроконтроллеры?


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 46 ]    , 2,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y