ATmega8 + PCF8574: 8-битный сдвиговой регистр на I2C интерфейсе

разделы: AVR, Arduino, I2C, HD44780, дата: 24 октября 2017г.

    Сдвиговые регистры, оглавление:
  1. ATmega8 + Proteus: работа со сдвиговыми регистром 74HC595
  2. ATmega8 + Proteus: входной сдвиговый регистр 74HC165, совместная работа с 74hc595
  3. ATmega8 + PCF8574: 8-битный сдвиговой регистр на I2C интерфейсе

Этот сдвиговый регистр наиболее известен по китайским драйверам дисплея HD44780, которые можно приобрести на али или ибэе. Сам регистр довольно подробно был разобран здесь: "Сообщество EasyElectronics.ru: I2C расширитель портов PCF8574". Я в свою очередь, попытаюсь сосредоточиться на программировании микроконтроллера ATmega8 для работы с этим регистром. Впрочем, начну я все же с Arduino и имеющегося у меня зоопарка: ATmega328/MSP430G2553/STM32F103C8.

Сдвиговый регистр PCF8574 может выпускаться разными фирмами, мне попались чипы с суффиксом "T", что обозначает производителя как "NXP Semiconductor". Руководство на pcf8574t можно скачать с официального сайта NXP: "PCF8574; PCF8574A Remote 8-bit I/O expander for I2C-bus with interrupt".

    Основные особенности сдвигового регистра PCF8574:
  1. Регистр 8-битный, псевдо-двунаправленный;
  2. Регистр работает на "медленной" I2C шине - 100 kHz;
  3. Рабочее напряжение от 2.5 до 6.0 Вольт;
  4. Регистр выпускается в двух вариантах: с суффиксом "A" и без него. Эти варианты различаются I2C адресам 0х3F для чипов с "A" и 0х27 для чипов без А.
  5. На шину можно ставить до восьми чипов одного варианта или шестнадцать чипов обоих вариантов.
  6. Регистры не соединяются последовательно в "паровозик" как 74HC595, они независимы друг к другу.

На мой взгляд, штука идеальная для подключения дисплея HD44780. Если сравнивать с драйвером на 595-м регистре, то вариант с pcf8574 будет немного дороже, но разница чисто условная: 25р за готовую плату на pcf8574 и ~19р за самодельный вариант на 595-м(3р за чип + 11р за плату + 5р за подстроечный резистор). Сам дисплей HD44780 не слишком скоростной, необходимости в скоростях SPI интерфейса нет. С другой стороны, драйвер на 595-м собирается из рассыпухи "на коленках" за полчаса-час, а посылка из Китая идёт от пары недель в лучшем случае.

Но внешне, готовый вариант все же будет выглядеть более культурно:

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

ATmega8 + Proteus: входной сдвиговый регистр 74HC165, совместная работа с 74hc595

разделы: AVR, SPI, Proteus, HD44780, дата: 13 октября 2017г.

    Сдвиговые регистры, оглавление:
  1. ATmega8 + Proteus: работа со сдвиговыми регистром 74HC595
  2. ATmega8 + Proteus: входной сдвиговый регистр 74HC165, совместная работа с 74hc595
  3. ATmega8 + PCF8574: 8-битный сдвиговой регистр на I2C интерфейсе

Вначале я хотел дополнить предыдущую статью входным регистром 74hc165, но потом понял понял, что он заслуживает "свои пять минут славы". Сложности возникают при подключении входного регистра совместно с выходным 74hc595 на один SPI порт. Кроме того, как оказалось, организация работы по SPI в ATmega8 имеет свои интересные особенности.

Итак, сдвиговый регистр 74hc165 преобразует параллельную шину в последовательную, работает только на вход, и имеет разрядность 8-бит. Их так же можно подключать цепочкой из n-элементов, которая даст 8^n - входов.

Руководство на SN74HC165N можно скачать например с сайта Texas Instruments.

Сдвиговый регистр может работать на питании от 2-х до 6-и Вольт, и он имеет комплементарный выход.

Предельные рабочие частоты зависят от уровня питающего напряжения: от 6MHz при двух Вольтах до 62 MHz при шести Вольт.

Распиновка микросхемы выглядит следующим образом:

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

Отладка микроконтроллеров STM8 в Linux, сборка toolchain для STM8

разделы: STM8, дата: 4 октября 2017г.

До недавнего времени отладка микроконтроллеров STM8 в Linux была невозможна, для этого приходилось использовать Windows, сталкиваясь при этом с ограничениями проприетарного ПО. Например, даже в COSMIC STM8, где формально сняли ограничение на размер кода, при копировании виртуальной машины слетает лицензионный ключ, и его приходится запрашивать заново.

Однако популярность микроконтроллеров STM8, как альтернативы STM32 Cortex-M0, продолжает расти, и нашлись таки светлые головы, которые собрали патчсет для сборки тулчейна STM8.

    Для начала, решим что нам нужно для отладки микроконтроллера:
  • Компилятор с возможностью выдавать ELF файл, а не только голый Intel Hex;
  • Собственно сам отладчик GDB;
  • Сервер для отладчика, который будет обеспечивать связь GDB с микроконтроллером.

В качестве компилятора будем использовать пропатченный SDCC, в качестве сервера OpenOCD, а отладчик GDB придется собирать из binutils.

На главной странице проекта излагаются краткие инструкции по сборке тулчейна:

export PREFIX=

To download, patch and configure:

./patch_binutils.sh
./configure_binutils.sh

./patch_sdcc.sh
./configure_sdcc.sh

Until stm8 openocd official binaries are available:

./patch_openocd.sh
./configure_openocd.sh

Когда я в первый раз увидел это, я не очень понял что к чему. Я бы предпочел скачать исходники и собрать их вместо того чтобы что-то патчить, поэтому далее я опишу краткую инструкцию по сборке тулчейна.

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