Страница 529 из 628

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Сб авг 02, 2014 20:16:04
amd9800
Как выровнять таймер 1 и таймер 2 чтоб начало отсчета совпадало.

Есть у атмега48 встроенные функции?

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Сб авг 02, 2014 20:59:43
КРАМ
Для привязки достаточно сбросить таймер 1 в прерывании от таймера 2 перед тем, как запустить интервал пересчета 1-го таймера.
Нарисуйте диаграмму работы алгоритма и Вам все будет понятно.

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Сб авг 02, 2014 21:39:11
amd9800
За какое время стартует ADC?

Канал выбран все установлено.

И с момента установки бита запуска ADC. Просто хочу знать на сколько тактов раньше мне нужно запустить ADC чтоб получить имено значение того момента времени.


В протеусе получаю максимальный результат если запускаю преобразование за 4 такта до предпологаеммого пика

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Сб авг 02, 2014 21:55:05
nirq
amd9800 писал(а):выровнять таймер
Есть встроенная функция "запись в регистр TCNTx".
Хинт: инструкция выполняется за отличное от нуля количество тактов.

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Сб авг 02, 2014 22:25:45
amd9800
Записываю
TCNT1H=0x00;
TCNT1L=0x00;
TCNT2=0x00;

И получится что второй таймер когда обнулится первый уже насчитает несколько тактов.
Ну в принципе - нормально.

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Сб авг 02, 2014 23:46:55
uk8amk
Как выровнять таймер 1 и таймер 2 чтоб начало отсчета совпадало.
Аппаратно можно сделать только для связки TIM0+TIM1:
General Timer/Counter
Control Register – GTCCR
• Bit 7 – TSM: Timer/Counter Synchronization Mode
Writing the TSM bit to one activates the Timer/Counter Synchronization mode. In this
mode, the value that is written to the PSRASY and PSRSYNC bits is kept, hence keeping
the corresponding prescaler reset signals asserted. This ensures that the
corresponding Timer/Counters are halted and can be configured to the same value without
the risk
of one of them advancing during configuration.

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Вс авг 03, 2014 03:14:15
КРАМ
amd9800 писал(а): И получится что второй таймер когда обнулится первый уже насчитает несколько тактов.
Ну в принципе - нормально.
Наоборот, второй обнулится в момент входа в обработчик, а первый будет обнулен чуть позже. Поэтому второй насчитает несколько тактов.
Но это совершенно не принципиально.
Все равно, если не предпринимать дополнительных усилий, снять осциллограмму в "мертвой" зоне около начала периода ШИМ не получится.
Так как затраты времени на вход-выход из прерываний дадут некую минимально возможную начальную задержку в запуске АЦП.
А задержку в несколько тактов легко учесть в некотором смещении указателя выходного массива.
Что бы снять осциллограмму в этой зоне потребуется перебросить на несколько отсчетов весь процесс из обработчика по 2-му таймеру в обработчик по Output Compare. Или создать на основе еще одного таймера независимый, но синхронный с ШИМ интервал, где можно будет задать запуск АЦП в любой момент времени, включая участок малых значений таймера 2.

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пн авг 04, 2014 11:00:45
sphincs
подскажите, как реализовать ШИМ для изменения яркости свечения светодиодов, подключенных через регистр сдвига 74НС595?

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пн авг 04, 2014 13:09:04
nirq
Последовательно грузить в регистр и параллельно выводить на его ногу сначала ноль, потом один.
Или наоборот.

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пн авг 04, 2014 13:10:08
SmarTrunk
Если надо менять яркость всех светодиодов одновременно, то почему бы не использовать вход перевода в 3-е состояние ОЕ, подав на него ШИМ с МК?

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пн авг 04, 2014 13:13:25
sphincs
SmarTrunk писал(а):ОЕ, подав на него ШИМ с МК?
да, одновременно. на всех с/д лог. 1, но нужно сделать пульсирующее свечение. про выход OE видел такую фразу, но без конкретики какой-либо. значит если я просто соединю ОЕ с выводом OC2 атмеги8, на котором реализован ШИМ, то получу требуемую пульсацию?

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пн авг 04, 2014 13:28:55
SmarTrunk
Вроде бы, да. Ноль на ОЕ - выходы регистра работают. Единица на ОЕ - отключаются (3-е состояние). Если хотите бОльшей уверенности, поищите еще информации - это очень популярная микросхема.

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пн авг 04, 2014 21:41:51
amd9800
sphincs писал(а):то получу требуемую пульсацию?
Вам нужно одинаковую яркость всем одновременно или разная яркость каждому светодиоду?

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Вт авг 05, 2014 08:49:59
sphincs
одинаковая для всех. на OE подал ШИМ. в протеусе осциллограф показывает, что на светодиоды так же поступает ШИМ.
но в плане общего развития послушал бы как заставить пульсировать их все по-разному

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Вт авг 05, 2014 11:44:31
nirq
но всё-таки зачем

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Вт авг 05, 2014 11:57:14
sphincs
nirq, уж простите, но это коммент ради коммента. был задан вопрос, я ответил. я и по поводу синхронного моргания не много инфы нашел, а про независимые моргания и вовсе не нахожу. а обсуждения ардуинщиков не очень понимаю, у них все слишком красиво одной функцией делается всегда)
nirq писал(а):
но всё-таки зачем.
чтобы сделать рамочку с бегающими по всякому огоньками. просто маленький сувенир-подарок. и заодно научиться работать с этими регистрами

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Вт авг 05, 2014 12:28:51
amd9800
sphincs писал(а):как заставить пульсировать их все по-разному
Например у вас 8 светодиодов.

Создаем два 8-ми размерных массива. (Глобальные переменные)
unsigned char Zapolenie[8]
unsigned char Vipoleneno[8]
Дискретизацию выберем например 10
То есть 10 это максимум - 5 половина и так далее
Timer настраиваем чтоб каждую милисекунду вызывал прерывание.
В прерывании пишем код.

Выполняем цикл от 0 до 7.
И проверяем переменную выполнено Vipoleneno если она меньше Zapolenie.
Если меньше тогда прибавляем единичку Vipoleneno++ и в регистр отправляем единичку
если нет тогда в регистр отправляем 0.

Дальше имеем переменную j которая прибавляется j++
ниже проверяем если (j>9)
Если да то обнуляем все Vipoleneno и j


Теперь в основной программе вам нужно только выбирать Zapolenie которое соответствует светодиоду.

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Вт авг 05, 2014 13:57:19
sphincs
amd9800, спасибо, вроде бы осознал)

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Вт авг 05, 2014 21:58:14
amd9800
если что проблемы в процессе программирования пиши - помогу.

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Ср авг 06, 2014 15:13:38
baghear
Добрый день, каков принцип работы данного кусочка схемы
http://screenshot.su/show.php?img=4dd9f ... 909f55.jpg
Если включен фьюз spien то, выводы miso, mosi, sck можно использовать лишь для программирования.
В схеме автор предлагает и программировать и использовать в программе данные выводы.
Подскажите где заблуждение?