Софтварный I2C для MPL115A2 и AVR.

AVR
Почитав статью «Цифровой измеритель абсолютного давления (барометр) MPL115A2» решил запустить оный на AVR. С аппаратным I2C связываться не стал, т.к. барометр поддерживает очень высокие скорости обмена и получается выгоднее читать его софтварно, не мешая остальным прерываниям, чем долго и мучительно разгребать регистр TWR ради четырёх паршивых байт. Ну и отсутствие привязки к выводам радует.
Итак, в архиве Си файл со всеми необходимыми функциями, который надо просто прицепить к своему проекту. Написан под IAR, но из специфичного там только функция __delay_cycles(); Как следует из названия, она выполняет задержку в тактах контроллера. Просто заменяем её принятой в своём компиляторе для обеспечения необходимых выдержек между сменой состояния лапок. Задержки (скорость) подобрать по вкусу.

Настойка софтварного I2C сводится к изменению всего 5 дефайнов.
DS_I2C_PIN, DS_I2C_DDR, DS_I2C_PORT — регистры порта, к которому подключён барометр.
DS_SDA_LN, DS_SCL_LN — биты порта для соответствующих линий.
И всё, больше ничего трогать не надо.

Ну, ещё DS_I2C_T отвечает за задержку вкупе с параметром F_CLK, который обычно задаётся в основном коде. DS_I2C_T == 1000 достаточно для работы барометра при кварце 16 МГц (задержка получается 16000 тактов или 1 мс).

На выходе имеем три функции и два буфера:

void read_coef_soft(void); // считать коэффициенты и положить их в буфер MPL115A2_coef.
void start_conv_soft(void); // запустить преобразование температуры и давления.
void read_result_soft(void); // считать температуру и давление и сунуть в MPL115A2_result.

unsigned char MPL115A2_coef[8];   // буфер коэффициентов
unsigned char MPL115A2_result[4]; // буфер результата


Выполнив функции можно пользовать результаты в соответстующих буферах.

Разумеется, функции I2C можно использовать и в других разработках.
  • +3
  • 03 сентября 2012, 18:50
  • Dikoy
  • 1

Новые курсы от: MITx, HarvardX, BerkeleX

Если кто-то пропустил или как я не смог закончить прошлый курс MITx 6.002x: Circuits and Electronics добро пожаловать на EDX где представлено 7 удалённых курсов трёх ведущих учебных заведений.
  • +1
  • 18 августа 2012, 15:15
  • f1n

Импровизированный частотомер из контроллера PLL

Когда-то я описывал простенький измерятор LC. Вот ещё один «приборчик» из этой серии.

Первый запуск)

Он неточен, неудобен и небыстр, зато неспешно собирается из подручных деталек за пол часика)

Если настоящего прибора под рукой нет, то и такой показометр иногда может помочь.


Читать дальше

Запускаем электронно-световой индикатор

Валялась у меня на столе вот такая лампочка 6Е1П.

Внешний вид индикатора

А мну где-то на 4 месяца уезжал из города и успел соскучиться по паянию)
Было решено лампочку применить.


Описание процесса

Термодатчик TI TMP121

Термодатчик рядом с контроллером (TQFP44)Для контроля температуры в одном девайсе, разработкой которого я занимаюсь, присмотрел датчики температуры TMP121 от одной небезызвестной техаской фирмочки. Из каких соображений я выбрал именно их я сейчас уже не скажу — дело было ещё прошлым летом — зато могу сказать, почему не взял классические DS1820 и иже с ними: хотелось чего-то максимально простого с точки зрения контроллера, а 1-wire, хоть он и тысячу раз описан и разжёван, простым я бы не назвал. На той неделе у меня таки дошли руки написать код для работы с датчиками. Так вот — могу с уверенностью сказать, что эти термометры в использовании действительно просты как пять копеек.


Читать дальше

Клон USBee AX Pro и DX Pro (логанализатор+осцилл) за $38.99 и $82.39 (с купоном) из Китая

Клон USBee AX Pro: логанализатор+осцилл за $38.99
Клон USBee DX Pro: логанализатор 16 каналов + осцилл 2 канала за $86.39 (c купоном 80save4ru за $82.39, трек бесплатно)

Доставка бесплатно!

Со скидочными купонами можно сделать дешевле (купоны меняются).

Действуют купоны:
CP10 — скидка 10% (в сентябре)

Ахтунг! Почта России тормозит безбожно и безктулхно. Посылки потихоньку народу приходят, но сроки могут превышать 40-50 дней! Исключительно из-за нашей слоупокской почты.

Мы сделали это!

1.
Клон USBee Ax Pro $38.99 (c купоном еще дешевле)

Клон USBee AX Pro

2.
Переходник для USBee AX Pro с BNC-входом для щупа



3.
Клон USBee DX Pro: логанализатор 16 каналов + осцилл 2 канала за $86.39 (c купоном 80save4ru за $82.39, трек бесплатно)




4.
Кейс для USBee AX Pro, входит с кабелями впритык



1. При выборе валюты RUB в счете — можно оплатить с кошелька WMR. В остальных случаях оставляйте USD.
2. Для бесплатной доставки оставьте метод отправки Regular Post Service (не ставьте галочку Insurance — это +2$, страховка дает трек-код на заказы меньше $50).



Читать дальше

Контроллер BLDC

В целях приближения к построению квадрокоптера с прошлого года ковыряю тему бездатчикового управления бесколлекторными синхронными двигателями. По первым попыткам похоже, что это будет продолжаться до следующего года если не надоест.

Надо бы рассказать, что такое BLDC, чем отличается от PMSM, но я этого делать не буду, название тут ни о чем не говорит, некоторые аппноты утверждают, что последний имеет Sinusouidal Back-EMF вместо Trapezoidal у первого и управляется более эффективно с помощью FOC тогда как для BLDC и метод шести шагов дает хорошую эффективность.


Читать дальше

Библиотека для декодирования JPEG на МК

В процессе решения одной из задач столкнулся с необходимостью декодировать JPEG картинку на МК для ее последующего отображения на TFT дисплее HY32D (на базе контроллера SSD1289).

Источником картинки является «JPEG видеокамера» C328R. Эта камера умеет отдавать изображение по последовательному интерфейсу (USART, максимальная скорость 115200) либо в виде «сырого» (raw) потока данных либо картинку сжатую JPEG. Работать с «сырыми» данными проще, но для того чтобы передать один кадр нужно «пропихнуть» через последовательный интерфейс 153600 байт (320 х 240 х 16 бит), а на скорости 115200 это процесс не быстрый. Аналогичная картинка, сжатая JPEG, раз в 10 — 15 меньше и проблема скорости передачи изображения с камеры снимается, но появляется другая проблема – как декодировать JPEG на МК.


Читать дальше
  • +12
  • 18 февраля 2012, 18:22
  • e_mc2
  • 1

STM32 + uIP + enc28j60

Долго облизывался на подключение МК к Ethernet, ходил вокруг цикла статей Lifelover'a, и решил попробовать. Но как в том анекдоте «не в лото, а в покер, не Волгу, а сто рублей и не выиграл, а проиграл» отличия от проекта Lifelover'a будут следующие:

  • камень stm32f103v, флеша у которого аж 512к. Меньше 64к у STM32 — редкость, что не может не радовать
  • tcp стек решил взять готовый, в частности uIP. Пробовал стек от Lifelover'a, но там много AVR-овских особенностей — раздельная адресация как минимум. В итоге запустил, погонял, но решил все-таки перейти на стандартный стек.
  • ОС, естественно, FreeRTOS,
  • Ну а Ethernet-контроллер все тот же enc28j60, подключенный через SPI

В этой статье мы соберем минимальное приложение, которое висит на порту 1000 и что-то там пишет.



Читать дальше