7_PWM/info.txt
2023-04-11 15:02:16 +03:00

50 lines
3.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

существует 5 блоков
1 блок - опрашивание (пришла ли команда)
2 блок - TWI (I2C)
3 блок - работа с ШИМ (ВКЛ, частота, скважность) - 8-bit T/C0
Самый низкий уровень - блок 2-wire и блок 8-bit timer
шим таймер:
изначальные регистры инициализация
до куда считать и когда сбрасывать
компаратор
Ширина импульса (скважность) изменяется в зависимости от значения, записанного в регистры сравнения OCR1A.
Когда значение в счетчике достигает значения регистра сравнения, то соответствующий ему вывод OC1A сбрасывается в ноль.
Используем Таймер 1 (16 bit Timer/Counter 1):
Конфигурируем регистр управления таймера TCCR1A
COM1A1, COM1A0 0 0 PWM отключен, нормальная работа порта
COM1A1, COM1A0 1 0 Сброс OC1A при совпадении
Включить/выключить ШИМ: конфигурация портов
WGM13, WGM12, WGM11, WGM10 1 1 1 1 Режим FAST PWM, TOP OCR1A, Update of OCR0A BOTTOM, TOV Flag set on TOP.
Установить частоту (12 бит целое, 4 дробная часть):
4095,31 максимальное число, 0,0625 минимальное число
Частота = Частота_мк / (Предделитель * OCR1A)
Чем больше значение в OCR1A тем меньше частота
Значение OCR1A и OCR1B должно быть в пределах от 0 до 100
Частота приходит от Master
CS12, CS11, CS10 1 0 1 Устанавливаем предделитель 1024
OCR1A = 16000000UL / 1024 / Частота
Конфигурируем регистр управления таймера - TCCR1B
Установить скважность (от 0 до 100%)
Скважность приходит от Master (в %)
OCR1B = OCR1A * Скважность / 100
ДОБАВИТЬ:
tempTCCR1A, tempTCCR1B - присваивать TCCR1A и TCCR1B
скважность посчитать через доп переменную
freq целая и freq дробь это разные переменные приходящие от master
Информация:
pwm
https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf
https://robotclass.ru/tutorials/pwm/
https://3d-diy.ru/wiki/arduino-moduli/interfeys-peredachi-dannykh-i2c/
https://smartep.ru/index.php?page=avr_c_examples#p12
http://microsin.net/programming/avr/example-using-the-twi-i2c.html
https://forum.amperka.ru/threads/%D0%B0%D0%BF%D0%BF%D0%B0%D1%80%D0%B0%D1%82%D0%BD%D1%8B%D0%B9-i2c-%D0%B2-atmega328p.18806/
ATmega328 - Таймеры и настройка ШИМ |AlNotes|
I2c
https://docs.arduino.cc/learn/communication/wire
https://embedjournal.com/two-wire-interface-i2c-protocol-in-a-nut-shell/
https://wiki.bas-ip.com/2wire/ru/podklyuchenie-2752639.html