8.Master_I2C_PWM/README.md
2023-06-21 17:29:39 +03:00

79 lines
6.6 KiB
Markdown
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.

# 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-экраны, термометры, акселерометры, сенсорные
панели, электронные блоки питания и т.д.