Перейти к содержанию
  • записей
    8
  • комментариев
    7
  • просмотра
    1 804

О блоге

В некоторых МК семейства Attiny присутствует блок USI вместо привычных UART и USART. Давайте заглянем внутрь него и попробуем создать очень интересный прототип - сверхэкономичный монитор параметров окружающего воздуха с радиоинтерфейсом.

Записи в этом блоге

Управление периферией и потребляемой мощностью

Управление периферией и потребляемой мощностью В даташите можно отыскать вот такую табличку: Разумеется, что держать включенной неиспользуемую периферию незачем. Мы практически постоянно используем модуль USI, периодически ADC и никогда таймеры. В МК есть специальный регистр, который позволяет управлять ТАКТИРОВАНИЕМ перечисленными модулями. Регистр называется PRR. По умолчанию при включении и сбросе вся периферия тактируется. Мы это исправим. Сразу после загрузки выключаем всё

parovoZZ

parovoZZ

Получаем результат от датчика

Получаем результат от датчика Определим макросы команд, чтобы нам было легче писать код #define SHT1x_Get_Temp 0b00000011 #define SHT1x_Get_Humidity 0b00000101 #define SHT1x_Write_Status 0b00000110 #define SHT1x_Status 0b00000001 Определим буфер в виде массива volatile uint8_t data[8]; Т.к. с одним из элементов буфера мы будем работать в прерывании, то массив у нас с квалификатором volatile. Пишем код получения данных: SHT_USI_Init();

parovoZZ

parovoZZ

Пару слов о трансивере nRF24l01+

Трансивер nRF24l01+ Что нужно для энергоэффективно работы с данным трансивером? Прочитать даташит. Если с первого раза не всё понятно, то можно поискать в интернете его перевод. Для уточнения нюансов опять смотрим даташит и только его. Далее. Необходимо скачать заголовочный файлик с адресами регистров. Подобный легко ищется на том же гитхабе. Вопросы, которые возникают естественным образом при первом знакомстве с данным транисивером: 1. Как с ним общаться? У трансивера только один интерфей

parovoZZ

parovoZZ

Датчик температуры и влажности SHT10

Датчик температуры и влажности SHT10 Датчик из семейства SHT1x от SENSIRION. Типовые и интересные нам характеристики: Ток потребления при измерении от 0,55 до 1 мА Ток в режиме PowerDown - от 300 до 1500 нА Минимальное напряжение питания - 2.4в Время измерения - до 280 мс Датчики внутри семейства отличаются точностью. Диапазон рабочих температур у всех датчиков составляет от -40 до 123.8 (кто спрашивал про датчик для бани?). И, как и у всех датчиков, точность по краям диапазона хуже

parovoZZ

parovoZZ

Давайте начнем

Цель - разработка экономичного беспроводного монитора температуры и относительной влажности. Что мы имеем: МК Attiny24A, датчик SHT10 от SENSIRION, популярный трансивер nRF24l01+ и источник питания в виде пары батареек LR41. Работа будет весьма насыщенной и объемной, т.к. мы будем использовать модуль USI сразу в двух режимах, жонглировать регистрами (с) и заниматься прочими непристойными вещами. Но давайте сначала разберем и проанализируем ошибки первого моего прототипа такого устройства, но н

parovoZZ

parovoZZ

Выбор МК и схема

Теперь пару слов о Выбор МК Я никак не черепил по поводу общения с датчиком SHT1x с помощью аппаратного I2C (TWI у атмела), но особенности протокола общения с датчиком так и говорят - ну позвони мне, позвони! Позвони мне ради бога! Позвони мне по USI! Какие МК мы знаем с USI на борту? Attinyx313A, attinyx5, attinyx4A. Первый МК реально многоножка - мне столько не надо. Второй хорош, но не PicoPower (10 мкА в PowerDown!). Остался последний, на который и пал выбор. С включенным вачдогом при пита

parovoZZ

parovoZZ

USI as SPI

USI as SPI Для работы с трансивером нам необходим интерфейс SPI. Извлекать его будем всё из того же модуля USI. Здесь кратенько. Линии данных у SPI однонаправленные, а это значит, что пин DO всегда подключен к концу сдвигового регистра, а DI - к началу. Таким образом организован режим передачи full duplex. Здесь нам не нужны никакие подтягивающие резисторы, т.к. линия ВСЕГДА либо в нуле, либо в единице. А когда мы не работаем по интерфейсу SPI, то нам и пофигу, что творится на линиях. Здесь то

parovoZZ

parovoZZ

USI

Итак, USI В сети не так уж и много русскоязычного материала по данному модулю, с англоязычным дела не лучше. Я через яндекс нашел всего пару статей - одна из них на сайте уважаемого DiHalt, вторая просто очень хороший перевод даташита с комментариями редактора. Изучение USI рекомендую начать с этого материала, а за подробностями уже обратится к даташиту. Второе - необходимо обязательно скачать материалы апноута с сайта микрочипа - там есть примеры кода. Здесь не буду пересказывать сказанное, а

parovoZZ

parovoZZ

×
×
  • Создать...