|
0 / 0 / 0
Регистрация: 24.02.2011
Сообщений: 102
|
|
Органайзер? Может как-то иначе?22.12.2011, 21:42. Показов 25057. Ответов 49
Метки нет (Все метки)
Давно хотел собрать устройство, которое за бугром называют PDA - Personal Digital Assistent. Ума мало, амбиций много. Периодически возникают неотложные дела, и идею приходится забрасывать далеко и надолго, но потом она возвращается. В качестве ядра для такого девайса рассматривал и AVR (Ну конечно же, как не их?) и Z80 и даже 80186. Но компромисс никак не хотел находиться. С появлением на форумах информации о дисплеях от сотовых и их подключении интерес вернулся с новой силой. В результате было решено начать уж хоть с чего-нибудь. Отработанный и усвоенный умом алгоритм несложно перенести на любую привычную платформу, так я подумал и купил дисплей от Моторолы Т190. Товарищ Sporkir, участник данного форума, разработал программу по его управленю. Я ее удачно залил и проверил - хм, правда работает! Для начала мне такого дисплея очень хватало - разрешение сносное, скорость вывода - довольно шустро. Но...
Программа была написана на ассемблере и после переписи мною на си никак не хотела работать. Бился долго, мучал вопросами форумчан, но безрезультатно... Проект был заброшен, как обычно... Спустя некоторое время я вновь вернулся к нему, написал всё с нуля и, о чудо, программа заработала... Си мне уже как родной язык (не без помощи интернета, конечно), потому я решил улучшить алгоритм вывода на дисплей... Продолжение следует...
0
|
|
| 22.12.2011, 21:42 | |
|
Ответы с готовыми решениями:
49
Как создать приложение-органайзер новичку
Элементарный органайзер: как привязать текстбокс к календарю |
|
0 / 0 / 1
Регистрация: 22.01.2010
Сообщений: 4,000
|
|
| 22.12.2011, 21:57 | |
|
а чем имеющиеся варианты готовых устройств не удовлетворяют?
0
|
|
|
0 / 0 / 0
Регистрация: 24.02.2011
Сообщений: 102
|
|
| 22.12.2011, 22:23 | |
|
Идею хранить знакогенератор в памяти контроллера я отбросил сразу же - неэкономично для больших проектов. В конце концов, память I2C EEPROM стОит не так уж и дорого даже для начинающих. Решил я ее задействовать. Короче, для создания символов использовал программу LCD Font Kimerator. Скачать ее можно здесь http://softwaretopys.informir.... tor-excel/. В результате всех ковыряний она создает код, который предполагается заносить в хидер контроллерной прошивки. Но мне же не хочется тратить драгоценные байты. Поэтому я пошел несколько другим путем. Прошивку, которая была получена данной программой я обработал несложным скриптом в MS Excel. На выходе получаем бинарник следующей структуры:
блок 256 байт (ширина символа) блок 256 байт (старший адрес начала кодов символа) блок 256 байт (младший адрес начала кодов символа) остальное - коды символа В итоге, при необходимости вывода символа на дисплей, считываем из EEPROM по адресу, равному коду символа, его ширину. Затем прибавляем к коду символа число 256 и читаем старший байт его местоположения в EEPROM Так же и с младшим адресом запускаем цикл от 1 до ширины символа и считываем его, попутно выводя на дисплей побайтно. уффф. Надеюсь, внятно объяснил... Продолжение следует...
0
|
|
|
0 / 0 / 0
Регистрация: 24.02.2011
Сообщений: 102
|
|
| 22.12.2011, 22:27 | |
|
Ди, есть много чего уже готового, можно тупо купить и все. Но, как правило, там нет вот одной такой маленькой и почти ненужной хни, без которой жизнь не мила. Ну и мозг тренировать - оно ж никогда не лишне. Проект, который ваяю, содержит в себе несколько типов периферии, нужной не только для данного проекта. Тренировочное устройство или как... Не знаю как назвать, честно. Буду писАть дальше на суд посетителей, а там уж разберемся )))
0
|
|
|
0 / 0 / 0
Регистрация: 24.02.2011
Сообщений: 102
|
|
| 22.12.2011, 23:03 | |
|
После прошивки символов в EEPROM 24LC128 там осталась уйма места! Теперь есть мысль
Хочу сказать одну вещь, которая, стопудово, понизит меня в глазах форумчан.. Хотя дисплей управляется по протоколу I2C, посадить его на одну шину с памятью я так и не смог. Стучал в бубеен, меняя частоту МК и тайминги, но безрезультатно. Поэтому, как и ранее в оригинальной прошивке тов. Sporkirа, дисплей управляется софтверным I2C и сидит на отдельных ногах. Я понимаю, что это не гуд, но по-другому у меня не получилось. Проехали. Конечно же, первое, что мне захотелось иметь в некотором мобильном устройстве, стали часы. До этого я нигде не использовал DS1307 (Канеш, а Вы думали я что-то другое впаяю?))). И тут не обошлось без танцев с бубном. Это по моей вине, точно. Каюсь, но продолжаю работать. Слил где-то (источник не найден) пример работы с данными часами для AVR Studyo и переписал под CVAVR. Убрал проверку ошибок и прочее, они не нужны при работе, только на этапе разработки. Радует, что для работы с EEPROM и RTC не пришлось писать раздельный код для протокола I2C. Итак, пока я умею читать время с RTC, выводить его на дисплей в привычном для людей виде, меряю напряжение батареи и вывожу пиктограмму о ее заряде, создано несколько библиотек для работы с периферией (собсно дисплей, часы, EEPROM, пищалка, вибра, подсветка дисплея) В ближайшем будущем планируется перелопатить весь код для создания чего-то типа фреймвёка, организовать запись и чтение в EEPROM для организации будильников и напоминалок. Также планирую подключить кейпад на оставшиеся выводы, для ввода информации без ПК. Связь с ПК организовать пока не получается, так как не могу на VB6 написать процедуру приема данных из порта. Вот так все мелко. Сегодня, буквально, закончил запаивать новую печатку под это дело, коллеги увидели в ней мобильник(так же мало кнопок, дисплей, разъем SIM - туда можно вставить дополнительные EEPROM, батарея тоже от сотового). Фото и код ждите после праздников... Продолжение следует...
0
|
|
|
0 / 0 / 0
Регистрация: 12.09.2011
Сообщений: 212
|
||
| 23.12.2011, 19:39 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 24.02.2011
Сообщений: 102
|
|
| 23.12.2011, 20:46 | |
|
Впечатлило! Помотрю подробнее, как будет время...
0
|
|
|
0 / 0 / 0
Регистрация: 24.02.2011
Сообщений: 102
|
|
| 09.03.2012, 22:05 | |
|
Итак, продолжу. Извиняюсь за такую огромную задержку в материале тем, кого тема, возможно, заинтересовала. Не хотелось бы оправдываться, но были проблемы с временем и железом - убил дисплей, сделанная макетка хреново заработала, пришлось переделывать. В завершение всего железо вело себя скверно. Ну вроде разобрался.
Достигнутые результаты: Дисплей работает на одной шине с 24lc128 и M41T11 (аналог DS1307). Этого я долго не мог добиться по неизвестным до сих пор причинам. Видимо, виной этому разводка платы. Большая часть данных хранится в 24lc128. Там и пользовательские данные и, можно сказать, BIOS. Для связи с внешним миром прикручен виброзвонок, динамик и 4 кнопки. Их я подключил к аналоговому делителю и для получения их состояния опрашиваю ногу АЦП. Об этом позже.
0
|
|
|
0 / 0 / 0
Регистрация: 24.02.2011
Сообщений: 102
|
|
| 09.03.2012, 22:15 | |
|
Итак, кратенько о работе достигнутого результата.
При старте настраивается АВР, потом сливает байты конфигурации дисплея из EEPROM, настраивает его. Файловую систему при такой маленькой памяти (16КБайт), я надеюсь, мне не предложат использовать))) Поэтому, для получения данных из EEPROM AVR всегда знает, где они лежат. Т.е. прошивка МК и EEPROM неразлучны. Ну а после инициализации всего фарша запускается стейт машина. Ничего лучше я придумать не смог, а попытка использовать RTOS, описанную Ди провалилась с треском. Сколько не мучился - не заработала. Ну решил, что трачу время не на то, что хотел. Далее буду приводить код кусочками, а то за такой бардак стыдно как-то... Код для CVAVR, кстати.
0
|
|
|
0 / 0 / 0
Регистрация: 24.02.2011
Сообщений: 102
|
||||||
| 09.03.2012, 22:18 | ||||||
|
Для работы с периферией используется аппаратный TWI. Код работы с ним (да простит меня автор) где-то сдул, хотя, он вроде по ДШ:
RTC - 0xD0, 0xD1 LCD - 0x78 - только запись, чтение не использую, так как прочитать можно только флаги состояния
0
|
||||||
|
0 / 0 / 0
Регистрация: 24.02.2011
Сообщений: 102
|
||||||
| 09.03.2012, 22:28 | ||||||
|
Код инициализации дисплея:
0
|
||||||
|
0 / 0 / 0
Регистрация: 24.02.2011
Сообщений: 102
|
|
| 09.03.2012, 22:40 | |
|
Для вывода на дисплей нам нужны символы. Их вид я, конечно же, затолкал в EEPROM. Организация памяти следующая:
0x0000-0x00FF - старший байт 0x0100-0x01FF - младший байт 0x0200-0x02FF - ширина символа 0x0300-0x0AFF - сам знакогенератор Работа следующая: нам надо рисунок символа Ж, его код - 198 или 0xC6 получаем старший байт по адресу 0x00C6 - 0x09 получаем младший байт по адресу 0x01C6 - 0x30 получаем ширину символа по адресу 0x02C6 - 0x07 идем на адрес 0x0930 и качаем 7 байт Замечу, что сначала я делал адреса по ширине символа, но позже, убив много времени на перерисовку одного символа, решил оставлять под каждый символ по 8 байт для возможности его изменения без раздвигания последующих данных, но код переделывать не стал - не так уж много потрачено. Код вышеописанной процедуры выглядит так:
0
|
|
|
0 / 0 / 0
Регистрация: 24.02.2011
Сообщений: 102
|
||||||
| 09.03.2012, 22:51 | ||||||
0
|
||||||
|
0 / 0 / 0
Регистрация: 24.02.2011
Сообщений: 102
|
||||||
| 09.03.2012, 23:00 | ||||||
|
Код сыроват, вывод имеет косяки, буду дорабатывать, но уже работает. Далее...
Еще пара-тройка функций для работы с дисплеем:
0
|
||||||
|
0 / 0 / 0
Регистрация: 24.02.2011
Сообщений: 102
|
||||||
| 09.03.2012, 23:07 | ||||||
|
Эта функция выводит целые слова или даже строки из EEPROM
Для вывода слова необходим адрес его первого символа в памяти, вывод заканчивается, когда встречаем байт 0x00
0
|
||||||
|
0 / 0 / 0
Регистрация: 24.02.2011
Сообщений: 102
|
|
| 09.03.2012, 23:12 | |
|
Весь код подходит для дисплеев ч/б с выводом по байтам вертикально, хотя переделать его несложно и для горизонтального вывода. Как подключу цветной - переделаю и под него, пока просто памяти МК хватает только на такой.
Это, повторюсь, текущие наработки. Просто совесть замучила, что обещал и не выложил. Есть недочеты в виде остающихся черных палочек после смены изображения с инверсного на обычное (ширина слова меньше на 1 БАЙТ получается), пока не разбирался с этим, так как пишу основной алгоритм работы.
0
|
|
|
0 / 0 / 0
Регистрация: 24.02.2011
Сообщений: 102
|
|
| 09.03.2012, 23:22 | |
|
Работа с часами так много где описана, что даже не знаю, приводить ли здесь код. Пока объясню, как это сделано у меня.
Для получения актуального времени при каждом цикле состояния стейт-машины происходит опрос часов. Динные сохраняются в глобальный массив переменных. Если требуется вывод - берем данные из этого массива и выводим. Тут также есть недочеты - время я беру как есть и массив содержит данные в формате BCD, то есть, например, один байт в младшей тетраде содержит единицы минут, а в старшей - десятки. Каждый раз перед выводом приходится проводить несколько логических операций для разделения этого формата на обычные цифры. Планирую переделать.
0
|
|
|
0 / 0 / 0
Регистрация: 24.02.2011
Сообщений: 102
|
|
| 09.03.2012, 23:29 | |
|
Ну и в доказательство
http://**************************/download/file.php?id=9317&sid=21d4178ed08270b0390 4ca25e1ece094
0
|
|
|
0 / 0 / 0
Регистрация: 24.02.2011
Сообщений: 102
|
|
| 09.03.2012, 23:38 | |
|
Первые старты:
http://**************************/download/file.php?id=9318&sid=21d4178ed08270b0390 4ca25e1ece094
0
|
|
|
0 / 0 / 0
Регистрация: 24.02.2011
Сообщений: 102
|
|
| 09.03.2012, 23:42 | |
|
Ну и сейчас это выглядит так:
На дату прошу не обращать внимания, выключал девайс, после включения не настраивал время и дату. http://**************************/download/file.php?id=9319&sid=21d4178ed08270b0390 4ca25e1ece094
0
|
|
| 09.03.2012, 23:42 | |
|
Помогаю со студенческими работами здесь
20
Как иначе?
Как составить блок схему хэширования? Может есть программа или может вы сами составите её? как и иначе перемешать массив? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|