12.12.2011, 22:04
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Отладочные платы для STM32
Сообщение от CMaxx22
|
пс. Вам плата пришла уже? Датчики?
|
Да, сегодня первые испытания проходили. Уже запустил примитивную анимацию, завтра попробую руссифицировать. Все просто и понятно.
Датчики тоже пришли. Смутило, что на всех одинаковый код написан. Поработал с одним датчиком. Результаты вы видели. Все работает.
Сейчас еще добавил вывод на экран.
На счет указателей.
Фишка в том, что номера датчиков можно хранить во флеше, а значит экономить RAM.
|
|
|
|
13.12.2011, 06:39
|
|
Временная регистрация
Регистрация: 04.01.2008
Сообщений: 93
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Отладочные платы для STM32
Сообщение от Easyrider83
|
Поработал с одним датчиком. Результаты вы видели. Все работает.
|
Я правильно понял, что если у меня есть адреса то я могу обращаться к нескольким датчикам на одной шине при помощи этого кода? Подскажите как передать данные из двумерного массива в одномерный, например из massiv[5][8] передать все данные скажем второй строки в massiv1[8]? Чтото типа massiv1[8]=massiv[2][...] как сделать? Атот у меня адреса пяти датчиков хранятся в двухмерном массиве, а функции по работе с датчиком принимают только одномерный массив с одним адресом. Или проще перегнать данные в другой одномерный массив циклом, а потом присвоить?
Последний раз редактировалось CMaxx22; 13.12.2011 в 09:02.
|
|
|
|
13.12.2011, 12:39
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Отладочные платы для STM32
Сообщение от CMaxx22
|
Я правильно понял, что если у меня есть адреса то я могу обращаться к нескольким датчикам на одной шине при помощи этого кода?
|
Именно. Для того и сделано.
Сообщение от CMaxx22
|
Подскажите как передать данные из двумерного массива в одномерный, например из massiv[5][8] передать все данные скажем второй строки в massiv1[8]? Чтото типа massiv1[8]=massiv[2][...] как сделать?
|
Надо прояснить ситуацию. Мои функции не имеют своего массива. Они используют указатель на ваш массив. Таким образом в процедуру вместо массива передаются адреса ячеек памяти, где лежит ваш массив.
Как конкретно это написать я вам позже скажу.
Ну и поработаем с большим количеством датчиков тоже. У меня их 10.
Я предполагаю такой алгоритм - две ноги контроллера отводятся под шину 1-wire. На первой собственно шина и датчики. Когда надо подключить новый датчик - подключаем его ко второй ноге. Контроллер запоминает его адресс и затем обращается к ниму на основной шине.
Из расходов - одна нога и резистор. Не много.
|
|
|
|
13.12.2011, 13:13
|
|
Временная регистрация
Регистрация: 04.01.2008
Сообщений: 93
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Отладочные платы для STM32
Я не ведал, что творил но вобщем получилось. 5 датчиков на одной ноге опрашиваются и выдают значения. Этого мне хватит так как добавлять датчики я не буду. Спасибо вам огромное за качественную помощь в решении этого вопроса!
Пара нюансов только есть: в delays.h хоть 48 хоть 72 мгц ставь - всё равно работает. Ну и второй, иногда при включении зависает сразу или через несколько тактов, иногда нет... это наверное кварц какой-нибудь шалит и 1wire тут не причём?
И ещё одно, раз уж вы теперь обладатель похожей на мою платы не могли бы вы попробовать посадить датчики на РВ3 который джитаг? Ато вы пишите, что одна нога это не много, а для меня это много, у меня пока минус одна нога
У вас контроллер экрана тоже ILI939x? Хороших графических библиотек под него нет? С русскими буквами например?
Ну и на последок не знаете ли вы как сохранить/считать данные на устройстве во flash чтобы настройки меню сохранять? Я впринципе нашел одно описание, но там страшные структуры и всё в указателях, ничего не понятно. Может быть существует более простой способ?
|
|
|
|
13.12.2011, 21:09
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Отладочные платы для STM32
Сообщение от CMaxx22
|
Пара нюансов только есть: в delays.h хоть 48 хоть 72 мгц ставь - всё равно работает.
|
Боюсь ошибаться, завтра уточню, но возможно, я вам скинул проект, где работает функция задержки, которая завязана на systick. Ей по барабану частота кварца.
Сообщение от CMaxx22
|
иногда при включении зависает сразу или через несколько тактов, иногда нет... это наверное кварц какой-нибудь шалит и 1wire тут не причём?
|
Сложно говорить, не увидев кода. Циклы используете? Может зависать на некоторых циклах, которые вечно ждут какого-нибудь флага. Таймаут делать обязательно.
Сообщение от CMaxx22
|
И ещё одно, раз уж вы теперь обладатель похожей на мою платы не могли бы вы попробовать посадить датчики на РВ3 который джитаг?
|
Я понял. Вам нужен код, чтобы заставить PB3 работать как дигитальный пин. Хорошо, я проверю. Завтра, если будет возможность.
Сообщение от CMaxx22
|
У вас контроллер экрана тоже ILI939x?
|
Нет, у меня другой. Но, думаю, большой разницы не будет. Вам же не инитиализация нужна.
Сообщение от CMaxx22
|
Хороших графических библиотек под него нет?
|
Есть. Но хорошей не назовешь - ставит точку и рисует линию. Для меня достаточно - надо будет, еще напишем.
Сообщение от CMaxx22
|
С русскими буквами например?
|
Посмотрите внимательно процедуру вывода текста на экран. Она тупо рисует 8х16 прямоугольник, заполняя его данными из константного массива со шрифтами. Добавьте туда русских букв и будет у вас писать по-русски. Я, например, первым делом коэфициент масштабирования добавил. Чтобы большие буквы рисовать ))
Сообщение от CMaxx22
|
Ну и на последок не знаете ли вы как сохранить/считать данные на устройстве во flash чтобы настройки меню сохранять?
|
Много данных? Может быть хватит тех регистров, которые живут за счет батарейки?
Для работы с флешем есть библиотека. И даже примеров много. Я пока не использую. Я либо на батарейке держать буду, либо внешнюю eeprom повешу.
|
|
|
|
14.12.2011, 12:52
|
|
Временная регистрация
Регистрация: 04.01.2008
Сообщений: 93
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Отладочные платы для STM32
Цитата:
|
Сложно говорить, не увидев кода. Циклы используете?
|
Так и есть, я в условии одном забыл после else поставить фиг. скобки и написал несколько строк кода без них. Как ни странно компилятор не зашкнил и даже работало через раз
Сообщение от Easyrider83
|
Я понял. Вам нужен код, чтобы заставить PB3 работать как дигитальный пин.
|
Ну да, попробуйте пожалуйста подключить туда датчик и добиться от него ответа, у меня не вышло хотя плясал с бубном долго.
Сообщение от Easyrider83
|
Посмотрите внимательно процедуру вывода текста на экран. Она тупо рисует 8х16 прямоугольник, заполняя его данными из константного массива со шрифтами. Добавьте туда русских букв и будет у вас писать по-русски. Я, например, первым делом коэфициент масштабирования добавил. Чтобы большие буквы рисовать ))
|
Ну да я поверхностно уже смотрел, а где тогда взять эти значения, что в массив букв вписаны под русские буквы? Я видел в FreeRTOS есть программка которая может сгенерить эти коды для любого виндовского шрифта и вывести на экран массивы значений для любого символа. Впринципе можно оттуда содрать вручную, попробую потом. А насчёт функции масштабирования я бы с большой радостью послушал вашу идею! Сам тоже сделал чтото похожее но так коряво, что любой другой вариант был бы лучше. Я просто в процедуре, которая непосредственно рисует точки на экране из массива букв, сделал так, чтобы вместо пикселя по координатам Х,У рисовался закрашенный квадрат с координатами x-1,y-1,x+1,y+1 ну и расстояние между точками на 3 пикселя увеличил, вот такое масштабирование в 3 раза без вариантов выбора. Шрифт очень пикселированный и некрасивый получился
Сообщение от Easyrider83
|
Много данных? Может быть хватит тех регистров, которые живут за счет батарейки?
Для работы с флешем есть библиотека. И даже примеров много.
|
Впринципе не много, 20 регистров бэкап домена по 2 байта бы хватило, но кто знает как себя поведёт батарейка под давлением атмосфер так в 10-15? Кстати а кварц себя как будет чувствовать под таким давлением?
Можно с сылку на библиотеку для работы с флешем? Очень бы не помешало, найти сам не могу.
А с бэкап доменом проще работать чем с флеш?
И последний вопрос, который меня терзает со вчерашнего дня, как правильно работать с цветами при выводе на экран? Коды цвета шеснадцатеричные в 2 байта длинной каждый. Мне надо чтобы например цвет символа плавно изменился от чёрного к красному захватя все градации красного, но когда я нахожу например красный цвет и его десятичное значение равно 60012, то делая к примеру 60012++ или 60012-- я получаю не градации, а совсем разные цвета. Какова зависимость, как можно реализовать в цикле плавное включение одного цвета?
|
|
|
|
14.12.2011, 14:56
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Отладочные платы для STM32
Цитата:
|
Так и есть, я в условии одном забыл после else поставить фиг. скобки и написал несколько строк кода без них. Как ни странно компилятор не зашкнил и даже работало через раз
|
Маленький хинт - без скобок после оператора for, if, while и им подобных выполняется ОДИН следующий оператор.
Цитата:
|
Ну да, попробуйте пожалуйста подключить туда датчик и добиться от него ответа, у меня не вышло хотя плясал с бубном долго.
|
Работает. Надо было только дописать строчку для отключения JTAG:
AFIO-›MAPR=(AFIO-›MAPR&0xF8FFFFFF)|(1‹‹25);
На счет цветов пока не смотрел. Сейчас времени нет совершенно. Извините.
|
|
|
|
14.12.2011, 15:22
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Отладочные платы для STM32
Сообщение от CMaxx22
|
Мне надо чтобы например цвет символа плавно изменился от чёрного к красному захватя все градации красного, но когда я нахожу например красный цвет и его десятичное значение равно 60012, то делая к примеру 60012++ или 60012-- я получаю не градации, а совсем разные цвета. Какова зависимость, как можно реализовать в цикле плавное включение одного цвета?
|
Ну так и разберитесь с форматом представления цвета...
Если у вас rgb565, то красный - 0xF800...
Вам нужно инкрементировать/декрементировать 0x00F8, а потом результат задвигать на место...
|
|
|
|
14.12.2011, 17:43
|
|
Временная регистрация
Регистрация: 04.01.2008
Сообщений: 93
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Отладочные платы для STM32
Сообщение от Easyrider83
|
Работает. Надо было только дописать строчку для отключения JTAG:
AFIO-›MAPR=(AFIO-›MAPR&0xF8FFFFFF)|(1‹‹25);
|
Спасибо! Я попробую.
Сообщение от st_1
|
Ну так и разберитесь с форматом представления цвета...
Если у вас rgb565, то красный - 0xF800...
Вам нужно инкрементировать/декрементировать 0x00F8, а потом результат задвигать на место...
|
Но как это всё провернуть? Чуть бы подробнее. Вот так некоторые цвета дефайнятся может это чтото даст:
#define BLACK 0x0000 /* ºÚÉ«£º 0, 0, 0 */
#define NAVY 0x000F /* ÉîÀ¶É«£º 0, 0, 128 */
#define DGREEN 0x03E0 /* ÉîÂÌÉ«£º 0, 128, 0 */
#define DCYAN 0x03EF /* ÉîÇàÉ«£º 0, 128, 128 */
#define MAROON 0x7800 /* ÉîºìÉ«£º128, 0, 0 */
#define PURPLE 0x780F /* ×ÏÉ«£º 128, 0, 128 */
#define OLIVE 0x7BE0 /* éÏé*ÂÌ£º128, 128, 0 */
#define LGRAY 0xC618 /* »Ò°×É«£º192, 192, 192 */
#define DGRAY 0x7BEF /* Éî»ÒÉ«£º128, 128, 128 */
#define BLUE 0x001F /* À¶É«£º 0, 0, 255 */
#define GREEN 0x07E0 /* ÂÌÉ«£º 0, 255, 0 */
#define CYAN 0x07FF /* ÇàÉ«£º 0, 255, 255 */
#define RED 0xF800 /* ºìÉ«£º 255, 0, 0 */
#define MAGENTA 0xF81F /* Æ·ºì£º 255, 0, 255 */
#define YELLOW 0xFFE0 /* »ÆÉ«£º 255, 255, 0 */
#define WHITE 0xFFFF /* °×É«£º 255, 255, 255 */
#define IDMCOLOR(color) (((color & 0x001F) ‹‹ 11) | ((color & 0xF800) ›› 11) | (color & 0x07E0))
Красный тот Что означает инкрементировать/декрементировать 0x00F8, а потом результат задвигать на место..? Типа Line(10,10,100,100,0x00F8--) сразу даст мне предыдущую градацию красного? и всё?
Последний раз редактировалось CMaxx22; 14.12.2011 в 17:49.
|
|
|
|
14.12.2011, 19:07
|
|
Временная регистрация
Регистрация: 04.01.2008
Сообщений: 93
Сказал спасибо: 19
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Отладочные платы для STM32
Попробовал инкрементировать 0xF800 получилось немного не то, что я хотел. Там цвет от красного плавно переходит в розовый или в желтый если декрементировать. А мне нужно именно количество красного менять, скажем если в RGB красный это 0.0.255 то мне нужно получать 0.0.250 - 0.0.240 - 0.0.230 - 0.0.220 итд. Как это выразить в шеснадцатеричном коде где красный это 0xF800 а не 0.0.255?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:00.
|
|