28.08.2016, 12:47
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
|
Re: stm32F030f4 + ADC + DMA
Ну вот когда помножит, тогда и будет размер. А до тех пор - "Если на клетке слона прочтёшь надпись «буйвол», не верь глазам своим" (с)
Правильный порядок индексов, думаю, указан не случайно) Но можем сойтись на том, что указаны И размерность, И размер))
Никакой наглядности не вижу все равно. ДМА ничего не знает о массивах, и передаем мы ему в любом случае адрес первого элемента (имя массива без квадратных скобок). Соответствия элементов одномерного массива элементам двумерного такая запись никак не проясняет.
Union упрощает работу, когда в нем объединяются разнородные сущности, чтобы оперировать, например, структурой, как массивом байтов - для передачи по какому-нить последовательному интерфейсу, или для записи в EEPROM... И то только для тех, кто указателями пользоваться не любит) А вот конкретно в данном случае наоборот, только визуальное усложнение - две переменные, означающие одно и то же.
Последний раз редактировалось AR_Favorit; 28.08.2016 в 13:09.
|
|
|
|
28.08.2016, 14:16
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,085
Сказал спасибо: 2,564
Сказали Спасибо 11,898 раз(а) в 5,971 сообщении(ях)
|
Re: stm32F030f4 + ADC + DMA
Сообщение от AR_Favorit
|
Никакой наглядности не вижу все равно.
|
Может, и так.
Понятия наглядности и логичности очень растяжимые.
Попадались в текстах уважаемых неновичков в программировании многие, на мой первый взгляд, излишества, которые после размышления и взгляда с другой стороны были очень логичны. Тем более, что после компилятора, что "с", что "без" все идентично. Только вкус фломастеров разный.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
28.08.2016, 14:36
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
|
Re: stm32F030f4 + ADC + DMA
Сообщение от akegor
|
Понятия наглядности и логичности очень растяжимые.
Попадались в текстах уважаемых неновичков в программировании многие, на мой первый взгляд, излишества, которые после размышления и взгляда с другой стороны были очень логичны. Тем более, что после компилятора, что "с", что "без" все идентично. Только вкус фломастеров разный.
|
Ну в общем-то да, немало "неновичков" вообще считает, что union - конструкция устаревшая и вредная, и своя логика у них тоже присутствует.
|
|
|
|
28.08.2016, 18:23
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: stm32F030f4 + ADC + DMA
Да в принципе, не так уж и важно, как представлены результаты. ДМА то складывает в одну линию всё, чередуя каналы: 1-2-3-1-2-3-...
А нужно пересортировать массив в другом порядке.
union, как мне кажется, ничего такого не даст, ведь union объединяет разнородные данные, а тут они одни и те же, просто в другом порядке.
Потому результаты можно разобрать на отдельные массивы любым способом, например вот так:
PHP код:
|
//объявлен двухмерный массив с данными
uint16_t Array[5][3] = {50, 15, 25, 57, 158, 354, 549, 4667,
644, 654, 6468, 779, 794, 2045, 416};
// разбор на три отдельных массива
uint16_t Ch_1[5], Ch_2[5], Ch_3[5];
for (uint8_t measure = 0; measure ‹ 5; measure++)
{
Ch_1[measure] = Array[measure][0];
Ch_2[measure] = Array[measure][1];
Ch_3[measure] = Array[measure][2];
}
|
или вот так:
PHP код:
|
// объявлен одномерный массив с данными
uint16_t Array[15] = {50, 15, 25, 57, 158, 354, 549, 4667,
644, 654, 6468, 779, 794, 2045, 416};
// разбор на три отдельных массива
uint16_t Ch_1[5], Ch_2[5], Ch_3[5];
for (uint8_t measure = 0; measure ‹ 5; measure++)
{
Ch_1[measure] = Array[0 + 3 * measure];
Ch_2[measure] = Array[1 + 3 * measure];
Ch_3[measure] = Array[2 + 3 * measure];
}
|
на выходе будет одно и то же. Второй вариант даже чуточку быстрее работает.
Вместо раздельных массивов под разные каналы, их можно опять объединить в двухмерный массив, только теперь он будет с другой сортировкой.
А можно и не разбирать массив, а работать прямо в нем.
|
|
|
Сказали "Спасибо" NewWriter
|
|
|
28.08.2016, 18:43
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,085
Сказал спасибо: 2,564
Сказали Спасибо 11,898 раз(а) в 5,971 сообщении(ях)
|
Re: stm32F030f4 + ADC + DMA
Сообщение от NewWriter
|
union, как мне кажется, ничего такого не даст, ведь union объединяет разнородные данные, а тут они одни и те же, просто в другом порядке.
|
Ему до барабана - что объединять. Он просто говорит, что с одного и того же адреса находятся данные, которые можно воспринимать так или эдак.
Можно сказать, что с одного и того же адреса хранятся 60 байтов, 30 16-ти битных результатов АЦП и десять трехканальных результатов.
Если размерность массива определить как [трехканальный результат][номер канала], то ничего сортировать не надо.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
29.08.2016, 21:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: stm32F030f4 + ADC + DMA
Спасибо за разъяснения с массивом!
Вот схема как на АЦП подключаю сигнал. Если 21 вольт отключаю от резистора 300к то значение АЦП плавает от 35 до 45. Примерно 20 мВ. Как-то это можно устаканить в ноль?... Или может я чтото не так делаю...? Блин не заметил что второй мониор сфотал... Лень обрезать уже...
|
|
|
|
29.08.2016, 21:26
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,085
Сказал спасибо: 2,564
Сказали Спасибо 11,898 раз(а) в 5,971 сообщении(ях)
|
Re: stm32F030f4 + ADC + DMA
miwutka, кроме схемы еще и монтаж интересен.
Что куда и как подключено. Земли (аналог, цифра) раздельные?
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
29.08.2016, 21:48
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: stm32F030f4 + ADC + DMA
Чрезмерно высокие сопротивления делителя. Нужно как минимум, раз в 10-20 уменьшить.
К тому же, есть зависимость допустимой скорости преобразования от сопротивления источника сигнала.
А лучше всего подавать от выхода внешнего операционника, на входе которого будет делитель. Чтобы согласовать требуемое низкое входное сопротивление АЦП с желательным высоким входным сопротивлением измерителя
Последний раз редактировалось NewWriter; 29.08.2016 в 21:51.
|
|
|
Сказали "Спасибо" NewWriter
|
|
|
29.08.2016, 21:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: stm32F030f4 + ADC + DMA
Сообщение от akegor
|
Земли (аналог, цифра) раздельные?
|
Нет, они одной дорожкой. Керамика напаяна вторым этажом над резистором...
NewWriter, Во как... Значит в идеале лучше ОУ. Буду знать. Ну значит буду уменьшать сопротивления...
|
|
|
|
29.08.2016, 22:06
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: stm32F030f4 + ADC + DMA
Еще попутно вопрос: блок питания 14 вольт. Подаю на LD1117-3.3, дальше на stm32f030f4. На входе 100 мф 16 В. На выходе 100 мФ, 100 нф, 1 мф, 4.7 мф, 27пф. Так через 3-10 минут зависаем стм. Кренка гарячая. Потребление 100 ма. Подключил паралельно такую же только в большом диповском корпусе - отработала ночь, а утром на глазах так же зависла. Включаю сейчас с большой кренкой - виснет через 5-20 минут. Чтото с питанием скорее всего или перегрев кренки наверно маленькой? Ночью было прохладнее а сейчас жарко очень в комнате...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:10.
|
|