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

О блоге

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

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

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

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

parovoZZ

parovoZZ

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

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

parovoZZ

parovoZZ

USI as SPI

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

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

USI

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

parovoZZ

parovoZZ

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

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

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

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