Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
09.01.2011, 00:54
|
|
Временная регистрация
Регистрация: 22.06.2006
Сообщений: 82
Сказал спасибо: 5
Сказали Спасибо 9 раз(а) в 8 сообщении(ях)
|
Re: Конкурс от EBV Elektronik и STMicroelectronics. Рассылают отладочные платы
Да все что угодно, название любое, а в объяснении я например указал пульт радиоуправления, не думаю, что кто то там вчитывается при таких массовых рассылках.
|
|
|
Сказали "Спасибо" pigtail
|
|
|
09.01.2011, 04:01
|
|
Прописка
Регистрация: 02.01.2011
Сообщений: 159
Сказал спасибо: 8
Сказали Спасибо 32 раз(а) в 28 сообщении(ях)
|
Re: Конкурс от EBV Elektronik и STMicroelectronics. Рассылают отладочные платы
Цитата:
|
Куда идут эти 24000/110/2=110 тактов?
Нашлись такты. Не оптимальная процедура вывода значения в DAC. Настройкой уровня оптимизации удалось увеличить вывод до 167 КГц. Получилось примерно 24000/167/2= 70 тактов
|
Кокосовый компилятор суров, зачем он использует стек ![Голова кругом](images/smilies/icon_rolleyes.gif)
При таком подходе стм-вская библиотека ему противопоказана.
При выключенной оптимизации кейл выдает такое
Код:
|
0x08000AFC F04F0170 MOV r1,#0x70
0x08000B00 F04F0008 MOV r0,#0x08
0x08000B04 F7FFFBFC BL.W DAC_SetChannel1Data (0x08000300)
DAC_SetChannel1Data:
0x08000300 2200 MOVS r2,#0x00
0x08000302 4A03 LDR r2,[pc,#12] ; @0x08000310
0x08000304 F1000308 ADD r3,r0,#0x08
0x08000308 441A ADD r2,r2,r3
0x0800030A 6011 STR r1,[r2,#0x00]
0x0800030C 4770 BX lr |
При включенной
Код:
|
0x080008D6 F04F0170 MOV r1,#0x70
0x080008DC F04F0008 MOV r0,#0x08
0x080008E0 F7FFFCF6 BL.W DAC_SetChannel1Data (0x080002D0)
DAC_SetChannel1Data:
0x080002D0 4A01 LDR r2,[pc,#4] ; @0x080002D8
0x080002D2 4410 ADD r0,r0,r2
0x080002D4 6081 STR r1,[r0,#0x08]
0x080002D6 4770 BX lr |
Оказалось, DAC_SoftwareTriggerCmd(DAC_Channel_1, ENABLE) тормозит значительно сильнее, т.к. там условные переходы. Вообще эта процедура бредовая, имхо. ENABLE там нафиг не нужен, не представляю, зачем может понадобится DISABLE.
А если процедуру переписать так
Код:
|
void DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data)
{
uint32_t tmp = (uint32_t)DAC_BASE + DHR12R1_Offset;
*(__IO uint32_t*)(tmp + DAC_Align) = Data;
} |
то получится без оптимизации
Код:
|
0x08000A4C 4A01 LDR r2,[pc,#4] ; @0x08000A54
0x08000A4E 5011 STR r1,[r2,r0]
0x08000A50 4770 BX lr |
с оптимизацией кейл вообще выкидывает ее и вместо вызова ставит одну команду STR
Интересно, что в этом случае сгенерит кокос (мне лениво его ставить).
Последний раз редактировалось akimych; 09.01.2011 в 04:04.
|
|
|
Сказали "Спасибо" akimych
|
|
|
09.01.2011, 14:05
|
|
Прописка
Регистрация: 02.01.2011
Сообщений: 159
Сказал спасибо: 8
Сказали Спасибо 32 раз(а) в 28 сообщении(ях)
|
Re: Конкурс от EBV Elektronik и STMicroelectronics. Рассылают отладочные платы
Ну в принципе быстродействие ЦАП-а и так известно из даташита. Если хочется самому посмотреть, то можно попробовать такой код
надеюсь у компилятора хватит ума положить переменные в регистры, констатны тоже можно положить в регистры заранее
Код:
|
__IO uint32_t *dac_reg1, *dac_reg2;
dac_reg1 = (__IO uint32_t *)(DAC_BASE + DHR12R1_Offset + DAC_Align_8b_R);
dac_reg2 = &DAC-›SWTRIGR;
while (1)
{
// в идеале 4*2 такта + команда перехода
*dac_reg1 = 120;
*dac_reg2 = 1;
*dac_reg1 = 136;
*dac_reg2 = 1;
} |
При включенном буфере на выходе ЦАП-а, мин и макс напряжение должно быть от +0.2В до VCC-0.2В (хотя я там видел не 0.2 а побольше, этак 0.8 ), так что лучше делать колебания не от 0, а в середине диапазона и не на всю шкалу, т.к. ограничена скорость изменения, т.е. грубо говоря, меандр небольшой апмлитуды будет более прямоугольный.
Кстати, в этом коде я не вижу команды запуска (типа SoftwareTriggerCmd)
Код:
|
8000454: 4620 mov r0, r4
8000456: 4629 mov r1, r5
8000458: f7ff ffb8 bl 80003cc ‹DAC_SetChannel1Data›
800045c: 4620 mov r0, r4
800045e: 4631 mov r1, r6
8000460: f7ff ffb4 bl 80003cc ‹DAC_SetChannel1Data› |
У меня без этого на выходе ЦАП-а глухо.
П.С.
Может лучше эту тему было развивать в соседней ветке "изучаем стм32"?
|
|
|
Сказали "Спасибо" akimych
|
|
|
09.01.2011, 14:59
|
|
Гражданин KAZUS.RU
Регистрация: 31.12.2010
Сообщений: 837
Сказал спасибо: 371
Сказали Спасибо 153 раз(а) в 113 сообщении(ях)
|
Re: Конкурс от EBV Elektronik и STMicroelectronics. Рассылают отладочные платы
В общем как я понял по написаному выше компилятор для этого контроллера настолько сыр что все критичные к скорости исполнения куски кода нужно писать исключительно на ассемблерных вставках, с таким объемом кода формируемым для простейших инструкций микроконтроллер может не справится даже с задачей чтения SD карты и вывода и проигрывания звукового файла с частотой дискритизации 44100Гц. А я уже замахнулся сделать на этом чипе VGA карту для вывода изображения на монитор в терминальном режиме ![Озадачен](images/smilies/icon_confused.gif) .
Сообщение от lsa
|
Только непонятно - 250 нс это 4МГц (где 24МГц?)
|
В соседней ветке (или в теме на радиокоте уже не помню) на ST8 добились частоты дрыга лапкой около 9Мгц при частоте квара 20Мгц, что то тут совсем не чисто.
Последний раз редактировалось Flopix; 09.01.2011 в 15:10.
|
|
|
|
10.01.2011, 01:27
|
|
Прописка
Регистрация: 02.01.2011
Сообщений: 159
Сказал спасибо: 8
Сказали Спасибо 32 раз(а) в 28 сообщении(ях)
|
Re: Конкурс от EBV Elektronik и STMicroelectronics. Рассылают отладочные платы
Цитата:
|
Где там 1 такт на команду при 24МГц?
|
Ну запись в память (str) 2 такта. Наблюдаю почти синусоиду ~2МГц, цап уже не успевает.
Но меня на самом деле сейчас больше заинтересовало ногодрыгание. А точнее, странный вид сигнала.
Если у нас есть код
Код:
|
0x0800057A 6101 STR r1,[r0,#0x10]
0x0800057C 6102 STR r2,[r0,#0x10]
0x0800057E E7FC B 0x0800057A |
то было бы логично ожидать короткую 1 и подлиннее 0. Так оно и есть, но почему-то через раз. Т.е. выглядит так, как будто на самом деле
Код:
|
STR r1,[r0,#0x10]
STR r2,[r0,#0x10]
STR r1,[r0,#0x10]
STR r2,[r0,#0x10]
B |
Если добавить NOP
Код:
|
STR r1,[r0,#0x10]
NOP
STR r2,[r0,#0x10]
B |
то этот эффект исчезает.
Интересно себя ведет команда перехода.
Если сделать
Код:
|
STR r1,[r0,#0x10]
STR r1,[r0,#0x10]
STR r2,[r0,#0x10]
STR r2,[r0,#0x10]
B |
то будет без хитростей, каждый виток цикла одинаковый.
А если так
Код:
|
reg2 = &GPIOA-›ODR;
reg1 = GPIO_Pin_7;
while (1)
{
reg1 ^= GPIO_Pin_7;
*reg2 = reg1;
}
EOR r4,r4,#0x80
STR r4,[r5,#0x00]
B |
то похоже, что переход занимает меньше тактов, чем в пред. вариантах.
Или мне показалось...
GPIO_WriteBit - тормозззз, ecли и пользоваться, то GPIO_SetBits/ResetBits.
Цитата:
|
В общем как я понял по написаному выше компилятор для этого контроллера настолько сыр что все критичные к скорости исполнения куски кода нужно писать исключительно на ассемблерных вставках, с таким объемом кода формируемым для простейших инструкций микроконтроллер может не справится даже с задачей чтения SD карты и вывода и проигрывания звукового файла с частотой дискритизации 44100Гц. А я уже замахнулся сделать на этом чипе VGA карту для вывода изображения на монитор в терминальном режиме
|
Да не, там не компилятор сырой. Это СТМ такую библиотеку выдал. Я вообще удивился, когда они начали повально использовать структуры для инициализации, в старых версиях такого не было. Да и вообще, уж слишком много лишнего в них. С выключенной оптимизацией код генерируется просто монстроидальный.
Ну а вообще, тут еще надо думать, как лучше использовать ресурсы мк.
Вот мы тут в цикле пытаемся закидать ЦАП данными, но это просто тест.
В реальной программе я бы не стал так делать. Данные через дма, синхронизация по таймеру, процессор занимается другимим делами или спит. То же самое и с чтением SD. Правда там с дма не все гладко, на каждом канале много чего висит, жаль нельзя выбирать, на какой канал что повесить.
Вот кстати тоже момент интересный. Сейчас запустил ЦАП через дма + ногодрыгание. В момент чтения данных ДМА (через ? тактов после изменения на выходе ЦАП-а) наблюдается доп. пауза. Хотя в этом ничего особенного нет.
А еще прикол, оказывает дрыгать ногами можно и через DMA, но получается медленно, ~1МГц всего
|
|
|
|
12.01.2011, 21:17
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Конкурс от EBV Elektronik и STMicroelectronics. Рассылают отладочные платы
Советую о STM32 писать в соответствующей ветке , так как эту ветку скоро потру . Ибо не о том она .
Теперь по теме : обломы начались где то числа 10 декабря .
Отпишитесь кто заказывал примерно в этих числах и кому пришло .
Может и ждать уже не стоит ?
__________________
Осторожно , злой кот
|
|
|
|
12.01.2011, 22:15
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Конкурс от EBV Elektronik и STMicroelectronics. Рассылают отладочные платы
Заказал 4-го декабря, получил мессагу типа надо подождать, 23-го отправили (а расчитывал получить в этих числах), получил 11-го января. Так что... надо ждать.
|
|
|
|
12.01.2011, 22:31
|
|
Гражданин KAZUS.RU
Регистрация: 30.05.2008
Адрес: Нижний Новгород
Сообщений: 903
Сказал спасибо: 90
Сказали Спасибо 1,276 раз(а) в 414 сообщении(ях)
|
Re: Конкурс от EBV Elektronik и STMicroelectronics. Рассылают отладочные платы
Я заказывал 25 ноября - мне пришло только 26 декабря. А с учетом "рождественских каникул" можно ожидать, что заказы после 10 декабря будут идти еще дольше.
|
|
|
|
12.01.2011, 22:43
|
|
Частый гость
Регистрация: 25.12.2009
Сообщений: 19
Сказал спасибо: 0
Сказали Спасибо 9 раз(а) в 8 сообщении(ях)
|
Re: Конкурс от EBV Elektronik и STMicroelectronics. Рассылают отладочные платы
Заказал 14 декабря, 20 декабря пришло сообщение о "6-8 недель" - пока ничего не получил. Координаты: Беларусь, Могилев.
|
|
|
Сказали "Спасибо" Gray_Wolf
|
|
|
12.01.2011, 22:53
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Конкурс от EBV Elektronik и STMicroelectronics. Рассылают отладочные платы
Сообщение от dosikus
|
Советую о STM32 писать в соответствующей ветке , так как эту ветку скоро потру . Ибо не о том она .
|
А зачем тереть? Может "вклеить" в соответствующую? Может кому (с учётом интереса народа к STM32) и пригодится, ну чтобы вопросов по второму кругу ни у кого не возникало (хотя... один фиг, "наша песня хороша..." ![Весело](images/smilies/icon_laugh.gif) ).
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:25.
|
|