Микроконтроллеры avr для начинающих ' Урок11 шим в Atmega16 '

preview_player
Показать описание
Программирование микроконтроллеров avr для начинающих в программе Atmel Studio. Tема видеоурока : ШИМ в таймере T0 на микроконтроллере Atmega16 фирмы Atmel .Регулируем яркость светодиодной ленты с помощью шима.

Поддержите проект: лайк и подписка будут лучшим стимулом развиваться!
Рекомендации по теме
Комментарии
Автор

Отличный урок, пол вечера сушил мозги с регистрами их привязке к физике ШИМ, как только посмотрел данный мануал, все стало на свои места 

ДмитроЖелезняк-чф
Автор

Каждый урок как не сомтрю - удивляюсь. Как же все просто на самом деле. Спасибо вам за ваше подробное и доходчивое объяснение!!!!

sergeysotilov
Автор

Преогромнейшее спасибо за Ваш труд, очень помогает в освоении МК!

utor
Автор

Отличные уроки! Большое Вам спасибо! Считаю полезным рассмотрение I2C, UART, SPI микроконтроллеров. Ещё раз спасибо за Вашу работу!

Jumperishe
Автор

прекрасно спланированно и самое главное внятно сформулированные уроки! спасибо, респект.

levanmachavariani
Автор

Опторазвязка ИМХО лишнее, и используется лишь для страховки. Что касается видео, то большое спасибо, помогло.

НиколайСавинов-ъй
Автор

Спасибо за видео по Вашим урокам осваиваю avr

alekskokorin
Автор

жду с нетерпением урок с энкодером )))
спасибо за уроки !

_Iokanaan_Marusidze_
Автор

Всегда рад посмотреть ваши видео. Так вот и сечас. В сети повсюду, в работах из SPI, используют похожие методы программирования. Вот пример мой:
TCCR0 = ( 1 << CS02 );// | ( 1 << WGM01 ) | ( 1 << WGM00 );// | ( 1 << CS00 );
TCNT0 = 0x16;
OCR0 = 0xE9;
pwm_value = 0xE9;
TIMSK = ( 1 << OCIE0 ) | ( 1 << TOIE0 );

ISR ( TIMER0_OVF_vect ) {
static uint8_t pwm_count = 0;

asm( "cli" );
pwm_count++;
if ( pwm_count == 30 ) {
pwm_count = 0;
pwm_value += pwm_inc;
OCR0 = pwm_value;
if ( pwm_value == PWM_MAX ) {
pwm_inc = - 1;
}
else
if ( pwm_value == PWM_MIN ) {
pwm_inc = 1;
}
}
PORT_MATRIX_IN = 0x00;
asm( "sei" );
}

ISR ( TIMER0_COMP_vect ) {
static uint8_t led_row = 0;

asm( "cli" );
PORT_MATRIX_IN = SET_BIT( led_row );
spiWrite( spi_buf[ led_row ], 4 );

if ( led_row < 7 )
led_row++;
else
led_row = 0;
asm( "sei" );
}
Здесь приводится пример возгорания и затухания светодиодной матрицы с помощью SPI шины.
Но сначала я поступил, как и везде в интернете, код был местами заменен. В прерывании по сравнению я написал сначала код для затухания светодиодов, а в прерывании по переполнению - засвечивания. Протеус работал, а в железе этот код не работал.
Вот вспомнил, что у вас есть такое видео. Просмотрел его, поменял местами и... Чудо. Работает не только протеус, а даже железяка. Это 100% рабочий код постепенно загорающихся и затухающих светодиодов.
Есть нюанс: заметны маленькие мерцания матрицы. Идет перерисовка рядов на шине SPI.
Можно ли убрать эти мерцания с помощью физических элементов на схеме? Или в коде?
У меня таймер настроен был на 15 мсек, но мерцал больше чем настроен как в примере выше.
Разница в регистре TCCR0 = ( 1 << CS02 );// | ( 1 << CS00 );
Что работает плохо теперь комментарий.
Спасибо!

rul-pt
Автор

Спасибо всем за хорошие отзывы. По поводу уроков которые вы просите, я планировал их делать, все упирается во время (чем дальше тем сложнее материал).

АлександрПисанец
Автор

Класс ролик, хороший урок спасибо за урок Александр. Хотелось чтоб обьяснил мне и другим про lcd-дисплеи 16×2 .заранее спасибо

aleksanderdragonage
Автор

Александр Николаевич, спасибо за видео! Подскажите по такому вопросу: Мне необходимо использовать энкодер вместо двух кнопок (тобишь крутишь влево - замыкается одна пара контактов, крутишь вправо - другая). Возможно ли это реализовать без использования микроконтроллеров, т.к. нет программатора и навыков их использования.. Да кого я обманываю - вообще плохо знаком с миром электронов.. Мне бы схемку.. буду благодарен!

BraZaaaaa
Автор

Очень много работы, нет времени заняться уроками. Освобожусь обязательно займусь.

АлександрПисанец
Автор

Здравствуйте. Реализовать работу энкодера можно на логике. Но это будет целый огород. Не знаю возможно уже есть специализированные микросхемы.

АлександрПисанец
Автор

Александр, добрый день! Во-первых. хочу выразить Вам благодарность за такие содержательные уроки. У вас очень интересная подача материала, которая позволяет новичкам достаточно легко усваивать такую сложную информацию! Может я невнимательно смотрел, но не могли бы Вы поделиться схемой отладочной платы и сообщить каким программатором вы пользуетесь для прошивки и отладки?

MDuaTP
Автор

Александр, спасибо Вам за ваши уроки! Мне они очень помогают в освоении микроконтроллеров. Подскажите мне, как начинающему, возможно ли реализовать на данном МК трёхфазный ШИМ сигнал с модифицированной синусоидой? (Хочу сделать инвертор для асинхронного двигателя с регулировкой частоты)Или подскажите какой МК лучше использовать в этих целях из серии AVR.

maximholubeu
Автор

Может R3 ставить конкретно на затвор транзистора, а вы им делитель сделали с R2.

KONARTIK
Автор

R2 не слишком большое сопротивление ? Может уменьшить на порядок ?

KONARTIK
Автор

Нет. Для шаговика нужно выделить четыре порта.

АлександрПисанец
Автор

Учитель, а как реализовать 3 шима на разных портах с Т0 таймером. И главное чтобы значение для каждого шима записывались разные . Ведь регистр OCR0 один и если его менять то на всех портах шима происходит изменение. А для уточнения пример такой: управлять с помощью 3х переменных резисторов через АЦП - 3мя моторами через ШИМ. P.S. С АЦП я разобрался и понял как записать в разные переменные значения с разных лапок (с Вашей подсказкой).

JackSparrow-dncu