26 января 2012 г.

Индикация на ЖК модуле TIC33

Прибор что-либо измеряющий без индикации результата измерения - неудобен во всех смыслах. Всегда приятно видеть, что твой прибор работает, ну, а если работает как задумано - так вообще песня. По-этому настала пора добавить индикацию. Выбор пал на компактный (14.8х37 мм) низкопотребляющий (до 1 мкА) модуль TIC33.
У драйвера этого ЖК-модуля нет (точнее он отключён) встроенного генератора и делителя частоты, так что будем использовать уже работающие часы реального времени. Изначально я планировал сделать именно так, но немного прогадал (причина банальна: невнимательное чтение документации): на вход LCLK индикатора надо подать сигнал с частотой 25-128 Гц, а выход P04/RTCDIV может выдать 512 Гц или 32768 Гц. Придётся ставить внешний делитель на 4, из-за чего весь выигрыш от отказа от использования внутреннего генератора может сойти на нет (как у TIC9153).

Управление индикатором совершенно тривиальное: по сути - это два 40-битных сдвиговых регистра (или один 80-битный) с буфером, управляемых трема входами: DIN, DCLK и LOAD. Подробности можно почерпнуть из документации на драйвер ML1001. Так как это чистый однонаправленный SPI, задействуем CLOCKED SERIAL INTERFACE B (выводы P54/SOB2 и P55/SCKB2 будут управлять DIN и DCLK соответственно, а вывод P53/SIB2 задействуем как вывод общего назначения для управления выходным буфером через LOAD). Все изыскания проводятся на демо-плате V850ES/Jx3-L Low Power Demo Kit.

Делитель соберём на сдвоенном Д-триггере:


В целях уменьшения потребления можно взять 74AUP2G80. Эта микросхема имеет низкое потребление: максимум 0.9 мкА (в отличие от 40 мкА у 74HC74 или 10мкА у 74LVC74A) в диапазоне температур -40°C +85°C. При +25°C максимальное потребление и вовсе равно 0.5 мкА. Возможно, мультивибратор, собранный на компараторе (например, MAX9117 или TSM9117), будет потреблять ещё меньше.

Документация на драйвер оказалась очень противоречивой по вопросу  максимальной частоты сигналов управления. По этому были испробованы частоты от 312 кГц до 10 МГц. На всех частотах модуль исправно принимал данные.

Так как драйвер рассчитан на 80 сегментов, а задействовано у нас только 9 цифр по 8 сегментов (итого 72 сегмента), нужно так же передавать недостающие незначащие 8 бит перед значащими 72-мя.

Проект, показывающий количество секунд от момента включения, прилагается:
lcd-tic33-project.zip

В этом проекте для преобразования числа в строку используется snprintf, но она не просто очень большая, а огрооомная. Так как библиотека IAR EW850 не содержит функцию ltoa, надо писать свою, что бы можно было отказаться от snprintf. Почти готовый вариант от Брайана Кернигана и Дениса Ритчи можно найти либо в книге, либо в wiki. Надо только адаптировать под unsigned long long и всё.

Комментариев нет:

Отправить комментарий