Например TDA7294

Форум РадиоКот • Просмотр темы - указатели в keil
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 23, 2024 12:09:09

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 40 ]    , 2
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: указатели в keil
СообщениеДобавлено: Ср сен 12, 2018 14:53:04 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 403
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2479
Рейтинг сообщения: 0
Всего лишь хотел передать суть проблемы.
Суть вам описали в первом же ответе.

В М3 действительно все было норм, а М0 такая вот ерунда.
Ну да, M3 умеет невыровненный доступ.

Задача записывать во флеш настройки скопом из всех массивов и считывать в массивы при включении мк.
Откройте для себя memcpy.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: указатели в keil
СообщениеДобавлено: Ср сен 12, 2018 22:58:19 
Сверлит текстолит когтями

Карма: -10
Рейтинг сообщений: 97
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1154
Рейтинг сообщения: 0
Проблема исчезла при объявлении 32-разрядных массивов. Правда, появился дополнительный расход памяти.

Не знаю как там в кейл, но в IAR есть чудесный префикс __packed. И если объявить long-переменную с этим префиксом, то даже на МК не поддерживающих невыровненный доступ, обращения к таким невыровненным переменным будет происходить как по-маслу - без HF. И "дополнительный расход памяти" чудесным образом уйдёт в небытие. :)
Думаю что и в кейл должно быть что-то подобное.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: указатели в keil
СообщениеДобавлено: Чт сен 13, 2018 08:20:09 
Грызет канифоль
Аватар пользователя

Карма: 2
Рейтинг сообщений: 24
Зарегистрирован: Вс янв 18, 2009 20:15:27
Сообщений: 256
Откуда: UA ZT
Рейтинг сообщения: 1
http://www.keil.com/support/man/docs/ar ... 968737.htm

и
http://www.keil.com/support/man/docs/ar ... 966304.htm


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: указатели в keil
СообщениеДобавлено: Чт сен 13, 2018 08:33:35 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 403
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2479
Рейтинг сообщения: 0
И если объявить long-переменную с этим префиксом, то даже на МК не поддерживающих невыровненный доступ, обращения к таким невыровненным переменным будет происходить как по-маслу - без HF.
ТС злобный буратино, он невыровненный доступ с помощью приведения типа указателя получает. Против лома никакой __packed не спасёт. Если он захотел 32-битный доступ, то он его получит.


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: указатели в keil
СообщениеДобавлено: Чт сен 13, 2018 08:41:07 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Лучше объявить массив с 32х битными элементами, он то точно будет пословно выравнен, а побайтный доступ к нему работать будет.

Добавлено after 3 minutes 6 seconds:
Alex писал(а):
Или просто в union их объединить.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: указатели в keil
СообщениеДобавлено: Чт сен 13, 2018 08:48:51 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 403
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2479
Рейтинг сообщения: 0
Лучше объявить массив с 32х битными элементами
Вот нахрена эти извращения? ТС написал, что это копирование происходит ОДИН РАЗ ПРИ СТАРТЕ ПРОГРАММЫ для считывания конфигурации. На чём экономить собрались? Микросекунда при старте погоду сделает?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: указатели в keil
СообщениеДобавлено: Чт сен 13, 2018 08:59:37 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 41
Рейтинг сообщений: 306
Зарегистрирован: Пт сен 07, 2018 20:20:02
Сообщений: 2296
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Зачем изобретать велосипед и не пользоваться memcpy()? https://devel.rtems.org/browser/umon/ma ... a9b6214cd6
Причем это верно для любой платформы. Функция memcpy() почти всегда имеет оптимизацию под конкретную архитектуру. Уж больно часто необходимо копировать массивы данных.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: указатели в keil
СообщениеДобавлено: Чт сен 13, 2018 09:17:31 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 2
Зарегистрирован: Вт ноя 02, 2010 20:21:53
Сообщений: 35
Рейтинг сообщения: 0
объявляю массив таким образом:
__align(4) uint8_t adr_sensor[QTY_TERM_SENSOR][8];
и все норм.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: указатели в keil
СообщениеДобавлено: Чт сен 13, 2018 12:15:29 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
ТС, откройте для себя структуры и, как уже выше сказали, memcpy. И любые параметры пихайте в эту структуру.
Потом просто сохраняйте/читайте её, и никаких проблем не будет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: указатели в keil
СообщениеДобавлено: Чт сен 13, 2018 12:47:02 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 2
Зарегистрирован: Вт ноя 02, 2010 20:21:53
Сообщений: 35
Рейтинг сообщения: 0
В memcpy реализована процедура записи во flash?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: указатели в keil
СообщениеДобавлено: Чт сен 13, 2018 13:09:25 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 41
Рейтинг сообщений: 306
Зарегистрирован: Пт сен 07, 2018 20:20:02
Сообщений: 2296
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
В memcpy реализована процедура записи во flash?

Нет, но ссылку на исходник memcpy, обеспечивающий оптимальную скорость копирования я привел выше. Берите его за основу. Если, конечно, не жалко flash.
Я в таких случаях предпочитаю пользоваться EEPROM или AT24C*


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: указатели в keil
СообщениеДобавлено: Чт сен 13, 2018 14:35:39 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 2
Зарегистрирован: Вт ноя 02, 2010 20:21:53
Сообщений: 35
Рейтинг сообщения: 0
Если, конечно, не жалко flash.

Почему её должно быть жалко? Запись происходит максимум несколько десятков раз за всю жизнь девайса. Объем флеша МК вполне позволяет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: указатели в keil
СообщениеДобавлено: Чт сен 13, 2018 18:15:01 
Прорезались зубы
Аватар пользователя

Карма: 5
Рейтинг сообщений: 25
Зарегистрирован: Вт май 08, 2012 10:42:29
Сообщений: 232
Рейтинг сообщения: 0
На простое копирование из 8 битного массива 4 байтов в 32 битную переменную id_data, с реверсом данных в необходимый вид. Таким образом
id_data = moimassiv[1]<<8;
id_data = ( id_data + moimassiv[2])<<8;
id_data = ( id_data + moimassiv[3])<<8;
id_data = id_data + moimassiv[4];
Уходит 14 asm команд, если то же самое делаю применяя memcpy то уже 47 команд! Потом еще нужно сделать реверс __REV плюс еще пару команд.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: указатели в keil
СообщениеДобавлено: Чт сен 13, 2018 23:32:01 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Копирование маленьких объёмов данных с помощью memcpy, естественно, будет нерациональным по скорости. И это нужно понимать.
Вы бы ещё с одним байтом сравнили :))
Ну а реверс нужен не всем. ТС'у, для сохранения/чтения данных он явно ни к чему.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: указатели в keil
СообщениеДобавлено: Пт сен 14, 2018 13:44:53 
Прорезались зубы
Аватар пользователя

Карма: 5
Рейтинг сообщений: 25
Зарегистрирован: Вт май 08, 2012 10:42:29
Сообщений: 232
Рейтинг сообщения: 0
Не думаю что конфигурационные данные могут занимать большие объемы. Если увеличится объем то так же линейно увеличится и время, или memcpy больший объем будет копировать быстрее? сомневаюсь!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: указатели в keil
СообщениеДобавлено: Ср ноя 21, 2018 11:53:46 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 2
Зарегистрирован: Вт ноя 02, 2010 20:21:53
Сообщений: 35
Рейтинг сообщения: 0
Увеличил тактовую частоту с помощью PLL с 8МГц до 24МГЦ.

RCC->CR |= ((uint32_t)RCC_CR_HSEON);
while((RCC->CR & RCC_CR_HSERDY) == 0) { }

RCC->CFGR = (RCC->CFGR & (~RCC_CFGR_PLLMUL)) | RCC_CFGR_PLLMUL3 | RCC_CFGR_PLLSRC_HSE_PREDIV; // (6)

RCC->CR |= RCC_CR_PLLON; // (7)
while((RCC->CR & RCC_CR_PLLRDY) == 0) // (8)
{

}

RCC->CFGR |= (uint32_t) (RCC_CFGR_SW_PLL); // (9)
while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL) //(10)
{

}
RCC->CR &= ~((uint32_t)RCC_CR_HSION);
while((RCC->CR & RCC_CR_HSIRDY) == 0) { }

Стал виснуть MK при записи во flash на
*(__IO uint16_t*)(Address) = (uint16_t)data;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: указатели в keil
СообщениеДобавлено: Ср ноя 21, 2018 12:06:12 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 403
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2479
Рейтинг сообщения: 0
Код:
FLASH->ACR = FLASH_ACR_PRFTBE | FLASH_ACR_LATENCY_1;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: указатели в keil
СообщениеДобавлено: Ср ноя 21, 2018 12:36:11 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 2
Зарегистрирован: Вт ноя 02, 2010 20:21:53
Сообщений: 35
Рейтинг сообщения: 0
Не помогает.
Да и FLASH_ACR_LATENCY ставится если SYSCLK > 24MHz

Добавлено after 10 minutes 16 seconds:
Полжение дел одинаковое на stm32f030 и stm32f071


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: указатели в keil
СообщениеДобавлено: Ср ноя 21, 2018 12:53:27 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 1
RCC->CR &= ~((uint32_t)RCC_CR_HSION);
while((RCC->CR & RCC_CR_HSIRDY) == 0) { }

Стал виснуть MK при записи во flash на
*(__IO uint16_t*)(Address) = (uint16_t)data;

Запись во флеш тактируется от HSI, который ты отключил.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: указатели в keil
СообщениеДобавлено: Ср ноя 21, 2018 13:01:27 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 2
Зарегистрирован: Вт ноя 02, 2010 20:21:53
Сообщений: 35
Рейтинг сообщения: 0
Благодарю. Заработало.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 40 ]    , 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y