avatar_zap

Универсальный бортовой компьютер iWattnick

Автор zap, 10 Окт. 2014 в 03:53

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

xxoma

[user]DIVAS[/user], Ну так если уже и делать функцию то делать ее рабочей, а не показывать ерунду которая не несет никакой информации, или не делать вообще. Или кому то интересна температура микроконтроллера?)
Kellys Blog, Bafang 750W 48V bbs02, 48V 23Ah.

zap

Посмотрим. Если действительно микроконтроллер греется, значит не будет использоваться внутренний датчик.
По идее, 90% времени микроконтроллер будет в состоянии спячки. Не думаю, что он при этом много потребляет, доли миллиампера.
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

mevial

Цитата: zap от 31 Окт. 2014 в 19:14
Посмотрим. Если действительно микроконтроллер греется, значит не будет использоваться внутренний датчик.
По идее, 90% времени микроконтроллер будет в состоянии спячки. Не думаю, что он при этом много потребляет, доли миллиампера.
У меня сейчас 3 i2c девайса на одной шине, дисплей, блютус и термосенсоры занимают 13% камня на 72МГц, без дисплея не замерял(загрузку на дисплее отображал), но предположим, что будет 10%, но практически ничего нету ведь. В принципе если сделать отправку через дма, то проц должен быть холоднее, но надо тогда сваливать весь текст в буфер и потом за 1 заход посылать, а не построчно. Надо над этим подумать.

zap

Ну, дисплей придётся выплёвывать в 8 заходов по 128 байт.
Такова особенность используемого там контроллера ST7567 - каждый блок 132x8 пикселей это отдельный банк памяти. На экране они расположены последовательно вертикально сверху вниз.
Надо сначала переключить номер банка (0-7) а потом запихать 132 байта подряд, в моём случае только 128 т.к. экран физически чуть меньше чем объём видеопамяти.
В любом случае, не думаю что это сильно скажется на потреблении.

Есть ещё сомнения насчёт компаса. У меня в телефоне компас часто показывает какую-то хрень, иногда правильно показывает, иногда нет. При том, что телефон топовый на текущий момент.
А на стальном руле компас так и вовсе будет работать как у капитана Себастьяно Перейро.
В общем, опыт покажет.
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

alex88

[user]zap[/user], Как там успехи? Проект развивается?

zap

Да, постараюсь на днях выложить видео с текущим статус-кво.
Вот тут видно что делается:
https://code.google.com/p/iwattnick/source/list
Правда, на англицком - дурная привычка молодости :ah:
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

Silvaticus

[user]zap[/user], улыбнуло
Цитироватьr25      Реализовал команды ERROR и READ
Забыли как по-английски?  :kidding:
Модератор 95% времени живущий в единственной теме флудилки это глобальный флудер с фееричным статусом модера.
Нередко красный фломастер это признак бессилия оппонента.

zap

#151
Забыл переключить регистр в голове, бывает :)

Итак, текущее состояние проекта следующее.

1. Полностью закончил разборки с USART. Работает полностью в фоне, DMA, прерывания, всё как полагается. Принимает команды, отвечает.
Документация на протокол здесь, я уже выкладывал в другой теме. Исходные тексты протокола здесь. Пока неизвестно, что будет использоваться в конечной версии, но по крайней мере одна рабочая альтернатива есть, и это хорошо.

2. Тем временем пришла посылка из Китая с дисплейчиками. Как они выглядят можно посмотреть на видео ниже (на макетку припаял разъёмчик, в который впихивается шлейф, дисплей снаружи обёрнут тремя слоями скотча так что изображение не совсем чтобы хорошее). Дисплее повесил на порт SPI1. Пока что завёл SPI на частоту 6 МГц, но и с 12ю работает без проблем, просто я не уверен в стабильной работе на такой, довольно высокой, частоте (в даташите контроллера ЖК ST7567 таблица таймингов пустая :facepalm:). В принципе, 6 мегагерц хватает на то, чтобы метать полный буффер экрана в дисплей более 500 раз в секунду /:-), причём практически без участия процессора (DMA рулит).

Кстати о даташите, опубликую здесь мой частичный перевод китайского даташита на ЖК экран, может кто в гугле будет искать.
JLX12864G-1504 English datasheet documentation ST7567 LCD controller.

Кроме питания, дисплей подключён к микроконтроллеру пятью ногами (MOSI, SCLK, SS, RS, RESET). В принципе, от RESET можно отказаться, без остальных - никак. Для подсветки внутри модуля имеется белый (синий, зелёный в других вариантах, их есть у меня) светодиод, который запитывается как обычно - через резистор, подсветка достаточно равномерная и приятная. Уже от 5 миллиампер ЖК светится весьма прилично, думаю можно подавать где-то до 20ма как обычно.

3. Написал с нуля графическую библиотеку для работы с монохромной графикой. Ну, линии там, прямоугольники, закрашенные прямоугольники, картинки, анимация. Всё с клиппингом по произвольно задаваемой прямоугольной области. На чистом C %-) (во времена моей молодости граф либы было принято пейсать исключительно на асме ;-D), скорости при таких разрешениях хватает с головой. Библиотеку назвал YAGL - Yet Another Graphics Library (Истчо Одна Графическая Библиотека). Исходники можно позырить тута.

4. Написал компилятор графических объектов GOC (Graphics Objects Compiler) из текстового вида в бинарный (на самом деле на выходе файл ассемблера, который далее компилируется/линкуется с программой). Всякую хрень типа букв или анимаций проще всего писать в каком-то удобоваримом текстовом формате, а потом из этого генерировать компактные бинарные данные, так ведь? Например, буквы у меня задаются как-то так (ну чисто для примера). Сейчас GOC умеет компилировать следующие типы объектов:

BITMAP (чёрно-белые картинки)
ANIM (последовательность BITMAP'ов с заданной межкадровой задержкой)
VAR (переменная, для отображения вызывается пользовательская подпрограмма которая может рисовать что угодно и как угодно - например, вывести значение какой-нибудь реальной переменной - скорость, амперы и т.п.)
ALIAS (можно задать альтернативное имя имеющемуся BITMAP либо ANIM, например для копирования русской А в латинскую A и т.п.)
TEXT (тексты состоят из глифов, глиф это либо BITMAP, либо ANIM, либо ALIAS, либо VAR).
ACTION (действия, которые выполняются при активации пунктов меню)
MENU (задаётся меню просто как список текстовых строк и соответствующего действия)
LAYOUT (схема экрана, набор графических примитивов которые образуют "экран", может содержать ссылку на меню).

Пример сценария для GOC можно позырить тут.

4. На основе связки YAGL+GOC реализовал схемы экранов (layouts) и менюшки. К примеру, вот так выглядит описание простенького экрана  с менюшкой:

var voltage
var current
action calibrate V
action back
text calibrate_header 1 Калибровка

menu calibrate 10 1
    calibrate(current) 1 Датчик тока\{align,right}\{current}
    calibrate(voltage) 1 Датчик напряжения\{align,right}\{voltage}
    back 1 Назад

layout menuframe 128 64
    color 1
    box 0 0 127 9
    line 0 10 0 63
    line 0 63 127 63
    line 127 63 127 10

layout calibrate 128 64
    draw menuframe 0 0
    color 0
    text calibrate_header 0 1
    color 1
    menu calibrate 1 10 94 46

Не знаю, насколько понятно выглядит, мне кажется что можно понять без описания :)

Демонстрация некоторых возможностей YAGL.
1. Первый экран - демонстрация работы с "видеопамятью" напрямую. Сначала вся видеопамять заполняется единицами, потом в неё построчно пишутся случайные данные. Впереди случайных данных пишется кот :). При этом экран аппаратно прокручивается по вертикали.
2. На втором экране уже через YAGL рисуются пикселы, область клиппинга ограничена чёрным прямоугольником. Попеременно рисуются то чёрные, то белые пиксели.
3. На третьем экране аналогично рисуются произвольные линии (с координатами, выходящих далеко за рамки экрана). Линии корректно обрезаются по видимой области.
4. Рисуются куча прямоугольников разных размеров, со смещением по синусоиде. Проверял, не глючит ли в разных условиях ускоренное рисование вертикальных линий.
5. На пятом экране тестируются функции отрисовки BITMAP'ов и ANIM'ов. Текст "ПРИВЕТ" со сменой направления прямо в середине, буквы "КА" прилеплены к правому краю директивой \{align,right}, крупные цифири - это VAR.
6. На последнем экране я проверял клиппинг глифов.

Yet Another Graphics Library

Демонстрация некоторых возможностей экранных схем.
Так как кнопка на демонстрационной плате всего одна, пришлось подключить плату через UART к компьютеру и симулировать две кнопки нажатием кнопок z и x, а длинное нажатие кнопок - кнопками a и s соответственно.
Первая менюшка специально сделана супердлинной, для тестирования кода в экстремальных условиях.
В первых трёх строчках присутствуют VAR'ы, "прибитые" к правому краю. При нажатии на пункты меню происходит либо изменение значение одной из переменных, либо переход к другим менюшкам.

YAGL Layouts

Размер всей библиотеки со всеми свистками пока не превышает 8к.
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

IvanM

Есть какие-нибудь новости по проекту?
1.Forward+Miniкрошка+Mark2+20S7P Sanyo 18650GA
2.Самовар+Quanshun 3кВт+Kelly+20S1P пакеты-монстры

PeaceHaver


zap

Прошу прощения, приходится в авральном порядке делать проект другого устройства по линии моей второй работы.
Уже в апреле должны отгрузить 500 девайсов, для которых пока что только схема нарисована :-D.
Поэтому iWattnick пока что на паузе, но продолжение обязательно будет!
Проект, кстати, тоже электротранспортный, если всё хорошо закончится - похвалюсь, а то может и продавать будем.
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

PeaceHaver


IvanM

[user]zap[/user],
Цитата: zap от 09 Фев. 2015 в 18:48
Проект, кстати, тоже электротранспортный, если всё хорошо закончится - похвалюсь, а то может и продавать будем.


Еще не пора похвалиться?
1.Forward+Miniкрошка+Mark2+20S7P Sanyo 18650GA
2.Самовар+Quanshun 3кВт+Kelly+20S1P пакеты-монстры

zap

Увы :( человек предполагает, а Бог располагает :)
Первый вариант оказался эпик фэйлом, пришлось кардинально сменить микроконтроллер.
На выходных только паять буду, оттаке :(
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

mevial

Цитата: zap от 10 Июль 2015 в 19:17
Увы :( человек предполагает, а Бог располагает :)
Первый вариант оказался эпик фэйлом, пришлось кардинально сменить микроконтроллер.
На выходных только паять буду, оттаке :(
Какой теперь?

stoyan


zap

Цитата: mevial от 10 Июль 2015 в 19:46
Какой теперь?
Это не про айваттник, а про проект на работе, который отобрал всё свободное время у айваттника.
Был atmega406, перешёл на atxmega8E5.

Кстати, обнаружил очень интересный микроконтроллер STM32F030.
Стоит $0.5, корпус TSSOP20, короче АРМ с ценой и форм-фактором тиньки.
Купил себе на тао маленькую демо-платку с ним, в отпуске освоил базовое кунг-фу (брал ноутбук, платку и программатор).
Через копеечный программатор STLink v2 можно даже спокойно отлаживать пошагово программы.
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

alex88

Цитата: zap от 11 Июль 2015 в 09:15
Кстати, обнаружил очень интересный микроконтроллер STM32F030.
Стоит $0.5, корпус TSSOP20, короче АРМ с ценой и форм-фактором тиньки.
Отличное решение.
Я "ЗА", чтобы устройство было на этом микроконтроллере. :exactly: