Например TDA7294

Форум РадиоКот • Просмотр темы - Помогите начинающему армовводу :) Пара вопросов опытным
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 22:53:15

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


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



Начать новую тему Ответить на тему  [ Сообщений: 29 ]    , 2
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Помогите начинающему армовводу :) Пара вопросов опытным
СообщениеДобавлено: Чт сен 28, 2017 20:48:26 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
clawham, у вас опыт , и кто вас заставил юзать г.либы?
Это тупиковый путь.

ЗЫ . "Проблема" pashka решена.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите начинающему армовводу :) Пара вопросов опытным
СообщениеДобавлено: Чт сен 28, 2017 20:59:22 
Поставщик валерьянки для Кота

Карма: 11
Рейтинг сообщений: 58
Зарегистрирован: Пт окт 31, 2008 09:38:55
Сообщений: 1957
Откуда: Одесса
Рейтинг сообщения: 0
ну заставил не заставил то такое...режим утенка - что первое нашел использовал и получилось то и использую дальше :)

А по другим моим вопросам/проблемам кто что скажет?
1) 18 микрух впаралель входами. микрухи на 5 вольт, арм на 3.6 48 мегагерц(уже умерил аппетит - итак легко укладывается) и шлейфики длинные(относительно - 10 см макс) как оно себя чувствовать будет?

2) ФатФС спи 48 мегагерц проц /4 спи, флешка 8 гиг. - читаем в пустоту - 200 мсек 60 килобайт данных а запись на флешку - 7 секунд! иногда..а иногда тоже 200 мвек! я хочу всегда 200 мсек :)

П.С. нашел почему надо было первую ногу моей рамки держать на земле - а она не SRAM! Она псевдосрам - тоесть внутри она драма + декодер ROW COL и если первая нога в единице - самообновление не работает! она и забывала все что я в неё писал :)
она такаяже как и http://www.datasheet.hk/search.php?part ... stype=part вот эта

_________________
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите начинающему армовводу :) Пара вопросов опытным
СообщениеДобавлено: Сб окт 07, 2017 18:07:17 
Прорезались зубы
Аватар пользователя

Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Сб янв 14, 2012 22:53:50
Сообщений: 225
Рейтинг сообщения: 0
Цитата:
/* это я закоментил

//ptr = malloc(sizeof(uint8_t) * BlockSize);
ptr = (uint8_t *) █
// if (ptr == NULL)
// {
// goto error;
// }

// visnet tut

memset(ptr, SD_DUMMY_BYTE, sizeof(uint8_t) * BlockSize);

*/

в этой процедурке зависало на строке

Код:
memset(ptr, SD_DUMMY_BYTE, sizeof(uint8_t) * BlockSize);


заремил её и вроде как все полетело и без проблем! а что не так с этит мемсетом? это ж просто очистка буффера!? что тут я сделал не так?


Стесняюсь спросить, а что делает функция malloc(), как вы думаете?

И еще просто очаровало вот это

Цитата:
Код:
      uint32_t ClrA = 0xFF << 16;
...
     *buf = GPIOA->IDR&0xFF;

Сами придумали, или скопировали где-то?


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Помогите начинающему армовводу :) Пара вопросов опытным
СообщениеДобавлено: Сб окт 07, 2017 22:19:20 
Поставщик валерьянки для Кота

Карма: 11
Рейтинг сообщений: 58
Зарегистрирован: Пт окт 31, 2008 09:38:55
Сообщений: 1957
Откуда: Одесса
Рейтинг сообщения: 0
Код:
*buf = GPIOA->IDR&0xFF;


а что тут не то? мне надо положить в буффер часть порта а. у меня а0-а7 это шина данных оперативки. указатель буффера я инкрементирую вконце а это - ну читаю из входного регистра и накладываю маску чтоб попадало в фуффер только то что надо. Что в этом такого?

Код:
uint32_t ClrA = 0xFF << 16;


это были попытки оптимизации по скорости работы. кроме того это сейчас оно такой вид имеет а потом там будет битмаска покруче чем просто 8 единиц. просто на макетке разводка не важна а вот в реальной плате для удобства разводки без переходных - прийдется переназначать и не факт что получится поподряд выбрать биты на порту - армы эти по-идиотически сделаны в плане распиновки.

По поводу маллок и мемсет я знаю что они делают но вопервых не я заремил маллок а во вторых какова хрена мемсет мне стек портит? ведь если есть буффер и есть его размер - почему налазит на стек? Эти либы не я писал - это в CubeMX FatFS и ведь у многих она ж работает без проблем..ну да нету sdio у f100 ну дак и что? spi режим запрещен?

_________________
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Помогите начинающему армовводу :) Пара вопросов опытным
СообщениеДобавлено: Вс окт 08, 2017 01:10:02 
Прорезались зубы
Аватар пользователя

Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Сб янв 14, 2012 22:53:50
Сообщений: 225
Рейтинг сообщения: 0
Цитата:
а что тут не то? мне надо положить в буффер часть порта а. у меня а0-а7 это шина данных оперативки. указатель буффера я инкрементирую вконце а это - ну читаю из входного регистра и накладываю маску чтоб попадало в фуффер только то что надо. Что в этом такого?


В функции Ram_Read задан тип указателя char* buf, т.е. он и без всяких эндов скопирует только младшие 8 бит за проход.

Код:
uint32_t ClrA = 0xFF << 16;


Цитата:
это были попытки оптимизации по скорости работы. кроме того это сейчас оно такой вид имеет а потом там будет битмаска покруче чем просто 8 единиц.

Идея, конечно, гениальная. Да, два байта справа занулятся. Второй байт проэндится с 0xFF. А байт слева?

Цитата:
просто на макетке разводка не важна а вот в реальной плате для удобства разводки без переходных - прийдется переназначать и не факт что получится поподряд выбрать биты на порту - армы эти по-идиотически сделаны в плане распиновки.

А работать через указатели с портами не пробовали? Хотя кодвижн, да...

Цитата:
По поводу маллок и мемсет я знаю что они делают но вопервых не я заремил маллок а во вторых какова хрена мемсет мне стек портит? ведь если есть буффер и есть его размер - почему налазит на стек? Эти либы не я писал - это в CubeMX FatFS и ведь у многих она ж работает без проблем..ну да нету sdio у f100 ну дак и что? spi режим запрещен?

Сложно сказать, судя по отрывкам вашего кода, что конкретно там не так. Надо смотреть переменные, которые вы передаете в функцию, в частности uint16_t BlockSize. Как вариант, поскольку память заранее выделена не была, memset, возможно, затирает действительные переменные. С другой стороны, учитывая сам стиль кодинга в местах работы с периферией прямо из while(), довольно неочевидные приемы обращения к памяти, уже как-то не сильно удивляет, что дивайс ваш глючит, имхо конечно.


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Помогите начинающему армовводу :) Пара вопросов опытным
СообщениеДобавлено: Вс окт 08, 2017 11:24:01 
Поставщик валерьянки для Кота

Карма: 11
Рейтинг сообщений: 58
Зарегистрирован: Пт окт 31, 2008 09:38:55
Сообщений: 1957
Откуда: Одесса
Рейтинг сообщения: 0
ненене вы не поняли!
ClrA = 0xFF << 16; это маска для атомарного сброса битов портов! Там где единички - там будет сброшено в ноль. ClrA это битовая маска для регистра BSRR.

с указателями конечно же можно и сразу я так и сделал - набрал пинов попдоряд абы каких глдавное чтоб шиной шли и поназначал им алиасы а дальше уже как с одним лонг интом с ним работал а то что оно таам разворачивается в 3 порта и 100500 сдвигов то меня не интересовало. с таким подходом на 48 мегагерцах я смог с внешней памяти качать только 0,3-0,4 мегабайт в секунду! когда полностью перешел на один порт для данных а второй для адреса - стало 3 мегабайта в секунду. Дальше больше - когда перестал использовать функции HAL и прочее - стало 3.4 мегабайта в секунду, потом убрал расчет масок для BSRR и получил 4.2 мегабайта в секунду! мне очень важна скорость работы с памятью. тем более что эта память просто sram подключенная к произвольным пинам проца. я согласен что возьми F103 и не парься но есть этих 5 штук и они справляются.

Ну а по char*buf ну дак до этого он был не чар :) остатки оптимизаций :) по хорошему надо будет открыть новый проект и переписать с нуля все это неподобство.

в плане глючит не глючит - ну я не могу точно сказать но я в те бибилиотеки и не лазил - они автоматом создаются. Ну да предназначены для SDIO но я нашел реализацию SPI драйвера нижнего уровня. а этот кусок с очисткой буфера - это бибилиотечкая штатная функция она общая и для SDIO и для моего варианта и идет из CUbeMX а он походу из елм чана. может эта очистка и лишняя я хз. но почемуто через дма если делать передачу - становится совсем тухло по скорости. нене я понимаю что по спи 800 килов в секунду получать это круто. но вот записть сильно печальная. иногда. как затык.

И да...я использую кеил ювижн 5,24,1 и причем тут кодевижн? :)это ж аврки

_________________
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите начинающему армовводу :) Пара вопросов опытным
СообщениеДобавлено: Вс окт 08, 2017 12:30:43 
Друг Кота

Карма: 38
Рейтинг сообщений: 618
Зарегистрирован: Пн апр 06, 2015 11:01:53
Сообщений: 3092
Откуда: москва, уфа
Рейтинг сообщения: 0
ведь если есть буффер и есть его размер - почему налазит на стек?

а вы уверены, что у вас есть block?)
в исходном варианте не зря проверяется результат malloc-а - для большого куска непрерывной памяти может не найтись места в куче. Вы же хотите выделить ее на стеке. Там достаточно места на этот момент?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите начинающему армовводу :) Пара вопросов опытным
СообщениеДобавлено: Вс окт 08, 2017 12:34:05 
Поставщик валерьянки для Кота

Карма: 11
Рейтинг сообщений: 58
Зарегистрирован: Пт окт 31, 2008 09:38:55
Сообщений: 1957
Откуда: Одесса
Рейтинг сообщения: 0
конечно недостаточно :) у меня всего 8 кил оперативки и 3кила заняты буферами моими а не фатовыми. в том то и вопрос - почему так получается? и как минимизировать пожирание оперативы этой либой?

_________________
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите начинающему армовводу :) Пара вопросов опытным
СообщениеДобавлено: Вс окт 08, 2017 12:48:32 
Друг Кота

Карма: 38
Рейтинг сообщений: 618
Зарегистрирован: Пн апр 06, 2015 11:01:53
Сообщений: 3092
Откуда: москва, уфа
Рейтинг сообщения: 0
не страдать фигней и использовать кучу, как оно и было.

и этсамое. Я смотрел исходник из архива, там закомменчены оба memset-а. Вчитался в первое сообщение - а ничо, что вот тут
Код:
// visnet tut
       memset(ptr, SD_DUMMY_BYTE, sizeof(uint8_t) * BlockSize);
   */
    ptr = (uint8_t *) &block;

вы сначала пытаетесь сделать memset на NULL, а уже потом инициализируете ptr адресом массива block?
можно обойтись вообще без ptr
Код:
...
memset(block, SD_DUMMY_BYTE, BlockSize);
...
SD_IO_WriteReadData((uint8_t *)&block, (uint8_t*) pData + offset, BlockSize);
...


ЗЫ туплю, sizeof там не сработает


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

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


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

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


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

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


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