Этого треда уже нет.
Это копия, сохраненная 31 марта 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Это копия, сохраненная 31 марта 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
123 Кб, 869x434
Аноны, помогите нубу написать простую прошивочку для определения длительности импульса на attiny13, должны загораться светодиоды в зависимоти от длительности импульса, при коротком гореть один, при длинном другой, при отсутствии третий. Длительность импульсов 1мс-1с
Да, код нужен в CodeVisionAVR
interrupt [EXT_INT0] void ext_int0_isr(void)
{
if (Signal)
{
TCCR0B = 0x01;
}
else
{
TCCR0B = 0x00;
Value += TCNT0;
TCNT0 = 0x00;
ValueDo = Value / 7.246;
Value = 0;
}
}
И
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
Value += 255;
TCNT0 = 0x00;
}
И
if (F > 0)
{
if (ValueDo > 1000)
{
ValueADCDo = ValueDo - 1000;
if (ADC + 10 < ValueADCDo)
{
OUT1 = 1; OUT2 = 0;
}
else if (ADC - 10 > ValueADCDo)
{
OUT1 = 0; OUT2 = 1;
}
else
{
OUT1 = 0; OUT2 = 0;
F = 0;
}
}
}
Дальше сам.
{
if (Signal)
{
TCCR0B = 0x01;
}
else
{
TCCR0B = 0x00;
Value += TCNT0;
TCNT0 = 0x00;
ValueDo = Value / 7.246;
Value = 0;
}
}
И
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
Value += 255;
TCNT0 = 0x00;
}
И
if (F > 0)
{
if (ValueDo > 1000)
{
ValueADCDo = ValueDo - 1000;
if (ADC + 10 < ValueADCDo)
{
OUT1 = 1; OUT2 = 0;
}
else if (ADC - 10 > ValueADCDo)
{
OUT1 = 0; OUT2 = 1;
}
else
{
OUT1 = 0; OUT2 = 0;
F = 0;
}
}
}
Дальше сам.
interrupt [EXT_INT0] void ext_int0_isr(void)
{
if (Signal)
{
TCCR0B = 0x01;
}
else
{
TCCR0B = 0x00;
Value += TCNT0;
TCNT0 = 0x00;
ValueDo = Value / 7.246;
Value = 0;
}
}
И
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
Value += 255;
TCNT0 = 0x00;
}
И
if (F > 0)
{
if (ValueDo > 1000)
{
ValueADCDo = ValueDo - 1000;
if (ADC + 10 < ValueADCDo)
{
OUT1 = 1; OUT2 = 0;
}
else if (ADC - 10 > ValueADCDo)
{
OUT1 = 0; OUT2 = 1;
}
else
{
OUT1 = 0; OUT2 = 0;
F = 0;
}
}
}
Дальше сам.
{
if (Signal)
{
TCCR0B = 0x01;
}
else
{
TCCR0B = 0x00;
Value += TCNT0;
TCNT0 = 0x00;
ValueDo = Value / 7.246;
Value = 0;
}
}
И
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
Value += 255;
TCNT0 = 0x00;
}
И
if (F > 0)
{
if (ValueDo > 1000)
{
ValueADCDo = ValueDo - 1000;
if (ADC + 10 < ValueADCDo)
{
OUT1 = 1; OUT2 = 0;
}
else if (ADC - 10 > ValueADCDo)
{
OUT1 = 0; OUT2 = 1;
}
else
{
OUT1 = 0; OUT2 = 0;
F = 0;
}
}
}
Дальше сам.
Бамп
>>287
Включаешь таймер на максимум, предделитель на 1. Включаешь прерывание сначала по фронту, в самом прерывании сбрасываешь тик таймера в ноль и прерывание по спаду включаешь. Как только возник спад - передаёшь значение переменной + таймера в другую переменную и сбрасываешь таймер и переменную таймера. При переполнении таймера просто добавляешь 255 или 65535 к переменной таймера. В основном коде обрабатываешь полученное значение.
Включаешь таймер на максимум, предделитель на 1. Включаешь прерывание сначала по фронту, в самом прерывании сбрасываешь тик таймера в ноль и прерывание по спаду включаешь. Как только возник спад - передаёшь значение переменной + таймера в другую переменную и сбрасываешь таймер и переменную таймера. При переполнении таймера просто добавляешь 255 или 65535 к переменной таймера. В основном коде обрабатываешь полученное значение.
>>701
Тогда тебе нужны уроки по повторению алгоритма работы сервоконтроллера из обычных сервомашинок. То же самое и я тем кодом как раз и повторят работу сервомашинки.
Тогда тебе нужны уроки по повторению алгоритма работы сервоконтроллера из обычных сервомашинок. То же самое и я тем кодом как раз и повторят работу сервомашинки.
>>745
Эмулятор четырех транзисторов в смысле?
>алгоритма работы сервоконтроллера из обычных сервомашинок
Эмулятор четырех транзисторов в смысле?
>>931
Серва считывает сигнал длительностью от 700 мс до 2300 мс, середина 1500 мс. После подсчета управляет двигателем, скоростью и направлением. Почти твоя задача.
Серва считывает сигнал длительностью от 700 мс до 2300 мс, середина 1500 мс. После подсчета управляет двигателем, скоростью и направлением. Почти твоя задача.
Тред утонул или удален.
Это копия, сохраненная 31 марта 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Это копия, сохраненная 31 марта 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.