Перейти к содержанию
    

ViKo

Модератор
  • Постов

    12 216
  • Зарегистрирован

Весь контент ViKo


  1. С NIOS не знаком. Но, как и sergeeff, недоумеваю. Как в прерывание можно передать аргументы? Оно ж возникает в непредсказуемый момент. Кто ему что-то должен передать?
  2. Не сомневайтесь. Крутите эту мысль дальше. 100% успех. Только нужно, чтобы за самое короткое время конденсатор успел зарядиться до амплитудного значения напряжения. А разряжать лучше источником тока, чтобы наклон спада напряжения оставался постоянным. Дальше - компаратор.
  3. 1. Вас уже просили иметь уважение... отмотайте чуть назад. Неужели не нашли? Да в самом названии темы уже присутствует "глупость". Вы задаете простейшие вопросы. Когда вас послали книжку читать, то и книжка нашлась. Там же все подробно описано. Там есть ответы на все ваши прошлые и будущие вопросы, если они будут такого же уровня. 2. Есть правило переводить в свои за "информативные" сообщения. Я лично такими многие ваши сообщения не считаю. upd. Вообще-то, "Искусство схемотехники" должен иметь каждый. Это не то, что раньше, при всеобщем дефиците, по карточкам получали. Пойдите и купите. И прочитайте от начала до конца два раза!
  4. А не кажется ли вам, господа (модераторы, в частности) что топикстартер над вами слегка издевается? В то же время успешно набирает посты для перехода в группу "свои".
  5. Joseph Yiu. The Definitive Guide to the ARM Cortex-M3, 2 Ed (2010) здесь имеется, но доверие нужно заслужить Сами вектора прерываний заданы в начале startup_*.s А адрес обработчика подставляется командой DCD DCD SysTick_Handler ; SysTick Handler Потом идет обработчик-заглушка. Зацикленный на себя код. SysTick_Handler PROC EXPORT SysTick_Handler [WEAK] B . ENDP Но в другом файле (*_it.c обычно) можно создать другой обработчик прерывания, на c. Который и будет скомпилирован и собран в проект. До перехода в main() выполняются две функции. Функция __main копирует code и data, копирует или декомпрессирует RW data, инициализирует нулями ZI дата. Затем функция __rt_entry устанавливает stack и heap, инициализирует библиотечные функции, вызывает конструкторы верхнего уровня C++ (а также выходит из приложения после окончания работы основной программы). После этого вызывается функция main. Так написано в DUI0471C_developing_for_arm_processors.pdf Который (и кучу других) можно скачать с сайта ARM.
  6. Мне кажется, вы озадачились не очень важным вопросом. Думаю, со временем у вас пропадет желание видеть вместо понятных слов ничего не говорящие числа.
  7. Это не в настройках компилятора, а в настройках отладчика. Обработчик прерывания. Там еще указано [WEAK], что значит, что если найдется другой обработчик в проекте, то этот будет игнорирован. upd. неправильно слово написал, нужно WEAK
  8. А я с вами согласен :) Я привел простейший пример. Скажем, Cyclone. А со слайсами в Xilinx я слабо знаком. Да и со Stratix. Наворотили...
  9. Сколько у вас элементов с памятью (триггеров) - столько, как минимум, будет логических элементов. Если, конечно, это не сама память (RAM, ROM), которая размещается в блоках встроенной памяти. Для комбинаторной логики - завит от сложности логики. Если укладывается в 4-входовую LUT - займет один логический элемент. Если нет - займет несколько. Логика с триггерами, если повезет, может объединиться в один логический элемент.
  10. как и не каждую тему... Можно в шапке раздела опросов намекнуть о тематике и послать в оффтопик.
  11. В правилах форума понятие "опрос" вообще не фигурирует. Лично мне из правил не видно явно, что не каждый опрос можно создавать в разделе опросов.
  12. Насколько я понял, опрос технически можно создать в любом разделе форума. Нужно где-то об этом написать. Технические опросы - в техническом разделе, оффтопные - в общении. Модераторы имеют возможность их переносить. А то сразу - "наказывать" :)
  13. Вам проще все проверить в Spice. Значения резисторов там выбраны не "от балды".
  14. STM32F103. DMA Mem-to-Mem

    Заменил пересылки на 32-битовые // Программная пересылка буфера в контроллер ЖКИ 32-битовыми словами uint32_t *pSour = (uint32_t *)(DPYBUF + Offset); uint32_t *pDist = (uint32_t *)(LCDRAM + Offset); LED_On(); for (uint32_t i=Size/4; i--; ) { *pDist++ = *pSour++; } LED_Off(); Время пересылки уменьшилось с 18ms до 14ms. (До этого я еще уменьшил время доступа к контроллеру ЖКИ, поэтому время и для 16-битовых пересылок уменьшилось). Компилятор в этом случае использует LDM/STM, но только один регистр использует. Вот кабы он знал, что количество пересылок кратно 8, 16... байтам... ;;;415 *pDist++ = *pSour++; 0003d2 ca20 LDM r2!,{r5} 0003d4 c020 STM r0!,{r5} Пробовал заменить указатели на uint64_t *, но быстрее не стало, а размер кода увеличился.
  15. STM32F103. DMA Mem-to-Mem

    После того, как переписал все свои программы для работы с буфером ЖКИ во внешней памяти, вышеприведенный код перестал работать. Какие-то чудеса творятся. Решил плюнуть на эту затею, проверять бит TCIF сразу после запуска процедуры DMA. А то и совсем буду программно перекидывать, разница во времени по сравнению с DMA очень невелика.
  16. 1. Наверное, есть. Выводится в рабочую область генератор. Он же как усилитель работает. 2. Сигнал вы поделили, генератор его подтянул вверх. Наверное, можно было и сильнее поделить, генератор бы и такое воспринял. 3. вряд ли резисторы добавляют шума (наверное, искажают форму вы имели в виду), просто вы плохо смотрите.
  17. А также любой входной порт, таймер и т.д.
  18. Я ж не сказал, что сама malloc() инициализирует выделенную память, а что она инициализируется потом, когда функция, которая запросила память, начинает ее использовать.
  19. у меня Rev 11, не совпадают страницы и картинки, чем искать по компу, пойду с сайта скачаю :) Посмотрел. Да, правильно. Там еще сказано, что нужно флаг TC USART мониторить программно, чтобы удостовериться, что передача завершена.
  20. У меня были константы (static const), и брались в этом случае из Flash. Это, наверное, другое. Вопрос, как дальше использовалась память, выделенная с помощью malloc. Я только предположил, что для инициализации используется стек. А что, если самой malloc() требуется стек?
  21. Я думаю, как только DMA записал последний байт в TDR USART, он и докладывает, что все сделал. При этом данные еще будут выдвигаться из TSR, сначала предыдущий байт, бит за битом, затем последний перепишется в TSR и тоже будет выдвигаться. см. Figure 278
  22. не только емкость, и не только щупа. Отражения в линии, плохая разводка сигнала и земли, индуктивность заземляющего "крокодила" пробника осциллографа, и вообще, куда крокодил был прицеплен...
  23. Никогда нельзя. КМОП микросхемы могут запросто запитаться от напряжения, приложенного к входам или выходам. И даже как-то работать при этом. Только не так, как надо. ЗЫ. Разве что, на оптронах объединить сигналы. ЗЗЫ. Или на транзисторах, открытые коллекторы объединить.
  24. Когда импульсный сигнал вы подали через конденсатор, то сместили постоянное напряжение (половина от размаха) на ноль. Значит, на вход XIN полезли отрицательные полуволны, которые, наверное, обрезаются внутренними диодами или из-за самой структуры чипа. Неужели простой резистивный делитель сопротивлением пару килоом не смог сделать то, что надо? Например, 1kOhm рядом с выходом, последовательно, и 1kOhm у входа, на землю.
  25. Допустим, создается локальный массив из 512 байтов. При его создании нужно его инициализировать, забить нулями. У меня в функции, инициализирующей ЖКИ, использовался массив констант. Пока я не задал ему квалификатор static, этот массив сначала создавался в стеке.
×
×
  • Создать...