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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Опытный кот
Сообщения: 822
Зарегистрирован: Вс июн 02, 2013 12:23:03

Сообщение amd9800 »

Как выровнять таймер 1 и таймер 2 чтоб начало отсчета совпадало.

Есть у атмега48 встроенные функции?
Реклама
Друг Кота
Аватара пользователя
Сообщения: 25451
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Для привязки достаточно сбросить таймер 1 в прерывании от таймера 2 перед тем, как запустить интервал пересчета 1-го таймера.
Нарисуйте диаграмму работы алгоритма и Вам все будет понятно.
Реклама
Опытный кот
Сообщения: 822
Зарегистрирован: Вс июн 02, 2013 12:23:03

Сообщение amd9800 »

За какое время стартует ADC?

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

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


В протеусе получаю максимальный результат если запускаю преобразование за 4 такта до предпологаеммого пика
Последний раз редактировалось amd9800 Сб авг 02, 2014 22:09:58, всего редактировалось 1 раз.
Опытный кот
Сообщения: 758
Зарегистрирован: Вс фев 10, 2013 15:26:00

Сообщение nirq »

amd9800 писал(а):выровнять таймер
Есть встроенная функция "запись в регистр TCNTx".
Хинт: инструкция выполняется за отличное от нуля количество тактов.
Реклама
Эиком - электронные компоненты и радиодетали
Опытный кот
Сообщения: 822
Зарегистрирован: Вс июн 02, 2013 12:23:03

Сообщение amd9800 »

Записываю
TCNT1H=0x00;
TCNT1L=0x00;
TCNT2=0x00;

И получится что второй таймер когда обнулится первый уже насчитает несколько тактов.
Ну в принципе - нормально.
Реклама
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение 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.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 25451
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

amd9800 писал(а): И получится что второй таймер когда обнулится первый уже насчитает несколько тактов.
Ну в принципе - нормально.
Наоборот, второй обнулится в момент входа в обработчик, а первый будет обнулен чуть позже. Поэтому второй насчитает несколько тактов.
Но это совершенно не принципиально.
Все равно, если не предпринимать дополнительных усилий, снять осциллограмму в "мертвой" зоне около начала периода ШИМ не получится.
Так как затраты времени на вход-выход из прерываний дадут некую минимально возможную начальную задержку в запуске АЦП.
А задержку в несколько тактов легко учесть в некотором смещении указателя выходного массива.
Что бы снять осциллограмму в этой зоне потребуется перебросить на несколько отсчетов весь процесс из обработчика по 2-му таймеру в обработчик по Output Compare. Или создать на основе еще одного таймера независимый, но синхронный с ШИМ интервал, где можно будет задать запуск АЦП в любой момент времени, включая участок малых значений таймера 2.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 174
Зарегистрирован: Вт сен 11, 2012 09:13:52
Откуда: Брест, Беларусь

Сообщение sphincs »

подскажите, как реализовать ШИМ для изменения яркости свечения светодиодов, подключенных через регистр сдвига 74НС595?
Контактная информация:
Опытный кот
Сообщения: 758
Зарегистрирован: Вс фев 10, 2013 15:26:00

Сообщение nirq »

Последовательно грузить в регистр и параллельно выводить на его ногу сначала ноль, потом один.
Или наоборот.
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Сообщение SmarTrunk »

Если надо менять яркость всех светодиодов одновременно, то почему бы не использовать вход перевода в 3-е состояние ОЕ, подав на него ШИМ с МК?
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 174
Зарегистрирован: Вт сен 11, 2012 09:13:52
Откуда: Брест, Беларусь

Сообщение sphincs »

SmarTrunk писал(а):ОЕ, подав на него ШИМ с МК?
да, одновременно. на всех с/д лог. 1, но нужно сделать пульсирующее свечение. про выход OE видел такую фразу, но без конкретики какой-либо. значит если я просто соединю ОЕ с выводом OC2 атмеги8, на котором реализован ШИМ, то получу требуемую пульсацию?
Контактная информация:
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Сообщение SmarTrunk »

Вроде бы, да. Ноль на ОЕ - выходы регистра работают. Единица на ОЕ - отключаются (3-е состояние). Если хотите бОльшей уверенности, поищите еще информации - это очень популярная микросхема.
Опытный кот
Сообщения: 822
Зарегистрирован: Вс июн 02, 2013 12:23:03

Сообщение amd9800 »

sphincs писал(а):то получу требуемую пульсацию?
Вам нужно одинаковую яркость всем одновременно или разная яркость каждому светодиоду?
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 174
Зарегистрирован: Вт сен 11, 2012 09:13:52
Откуда: Брест, Беларусь

Сообщение sphincs »

одинаковая для всех. на OE подал ШИМ. в протеусе осциллограф показывает, что на светодиоды так же поступает ШИМ.
но в плане общего развития послушал бы как заставить пульсировать их все по-разному
Контактная информация:
Опытный кот
Сообщения: 758
Зарегистрирован: Вс фев 10, 2013 15:26:00

Сообщение nirq »

но всё-таки зачем
Последний раз редактировалось nirq Вт авг 05, 2014 12:11:47, всего редактировалось 1 раз.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 174
Зарегистрирован: Вт сен 11, 2012 09:13:52
Откуда: Брест, Беларусь

Сообщение sphincs »

nirq, уж простите, но это коммент ради коммента. был задан вопрос, я ответил. я и по поводу синхронного моргания не много инфы нашел, а про независимые моргания и вовсе не нахожу. а обсуждения ардуинщиков не очень понимаю, у них все слишком красиво одной функцией делается всегда)
nirq писал(а):
но всё-таки зачем.
чтобы сделать рамочку с бегающими по всякому огоньками. просто маленький сувенир-подарок. и заодно научиться работать с этими регистрами
Контактная информация:
Опытный кот
Сообщения: 822
Зарегистрирован: Вс июн 02, 2013 12:23:03

Сообщение 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 которое соответствует светодиоду.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 174
Зарегистрирован: Вт сен 11, 2012 09:13:52
Откуда: Брест, Беларусь

Сообщение sphincs »

amd9800, спасибо, вроде бы осознал)
Контактная информация:
Опытный кот
Сообщения: 822
Зарегистрирован: Вс июн 02, 2013 12:23:03

Сообщение amd9800 »

если что проблемы в процессе программирования пиши - помогу.
Опытный кот
Аватара пользователя
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Сообщение baghear »

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

Вернуться в «Разные вопросы по МК»