# 8. Устройство управления контроллером ШИМ. ## TODO: - ## Нормализовать отправку команд, добиться согласованности в отправке и чтении, пока с этим проблемы - ## Переделать отправку значение с мастера на слейв, брать состояния с текущего устройства, сначала их изменять по нажатию кнопки и только потом передавать модифицированные значения на slave - ## Переделать обработку команд,сделать более удобной - ## Убрать говнокод хд - ## Перетащить проект в Microchip Studio, вынести все .h и .c файлы по проекту ## Описание ### Устройство представляет из себя I2C ведущее устройство. ### Управляет устройством из задания 7. Имеет 6 кнопок: - #### Включить ШИМ. - #### Выключить ШИМ. - #### Увеличить частоту на 25% от текущего. - #### Уменьшить частоту на 20% от текущего. - #### Увеличить скважность на 10% от текущего. - #### Уменьшить скважность на 10% от текущего. ### Пояснения к заданию - #### Состояние ШИМ брать с Master устройста и передавать на Slave устройство. - #### Отправляемые команды - 16 бит, число с фиксированной запятой (12 бит целое, 4 - дробная часть). ### Набор команд | Команда | Описание | |:--------|:------------------------------------------| | 0x01: | Включить ШИМ. | | 0x02: | Выключить ШИМ. | | 0x03: | Увеличить частоту на 25% от текущего. | | 0x04: | Уменьшить частоту на 20% от текущего. | | 0x05: | Увеличить скважность на 10% от текущего | | 0x06: | Уменьшить скважность. на 10% от текущего | ### Описание регистров для I2C | Регистр | Описание | |:--------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------| | TWBR | Отвечает за задание битрейта передачи данных. Его значение вычисляется по следующей формуле: ((F_CPU / I2C_FREQ) - 16) / 2. Формула производит округление результата. | | TWCR | Регистр управления. Содержит в себе биты управления. | | TWDR | Отвечает за передаваемые или принимаемые данные. В этом регистре хранится один байт данных в памяти. | | TWAR | Cодержит адрес устройства, по которому микроконтроллер может быть доступен в сети I2C. | | TODO: | N/A | ### Описание флагов | Флаг | Описание | |:------|:---------------------------------------------------------------------------------| | TWINT | Флаг TWINT (TWI Interrupt Flag), показывающий, что операция TWI была выполнена. | | TWEN | флаг TWEN (TWI Enable), включающий работу TWI интерфейса. | | TWEA | флаг TWEA (TWI Enable Acknowledge), чтобы включить ответное подтверждение (ACK). | | TODO: | N/A | ### Иформация по TW **TWI (Two-Wire Interface)** - это двухпроводный последовательный интерфейс для обмена данными, основанный на коммуникационном стандарте I2C (Inter-Integrated Circuit). TWI был разработан компанией Atmel (теперь Microchip Technology) и является улучшенной версией I2C. TWI обеспечивает ориентированную на сообщения линию связи с возможностью мастер-ведомый обмен. Обычно в TWI существует одно устройство, которое устанавливает шину (master), и одно или несколько устройств, которые подключаются к шине в качестве активных (ved) узлов. TWI работает со скоростями передачи данных от 100 кбит/с до 400 кбит/с, хотя некоторые устройства могут поддерживать скорость в 1 Мбит/с. Принцип работы TWI основан на использовании двух проводов - SDA (Serial Data) и SCL (Serial Clock). SDA - это линия для передачи данных, а SCL - это линия для синхронизации передачи данных. Модулем TWI можно передавать данные и исполнять команды чтения/записи, после чего мастер подтверждает успешность операции. TWI нашел широкое применение во многих устройствах, таких как датчики, LCD-экраны, термометры, акселерометры, сенсорные панели, электронные блоки питания и т.д.