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

ViKo

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

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

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


  1. Можно вопрос, не по теме, но непосредственно вытекающий из предыдущего. Почему симулятор Keil останавливается на командах, которыми я инициализирую контроллер ЖКИ на внешней шине, и ходит только по шагам?
  2. Фактически "старт" должен начинаться с приходом первого импульса после паузы. Отсчитает нужное количество импульсов (в данном примере 4), и ждет нового "старта". А распознать 0 и 1 - после каждого фронта запускать счетчик, который посчитает до 130 ns и после этого прочитать сигнал. Если там 0 - значит 0, если 1 - сами знаете, что :)
  3. Только на разводку и влияют, насколько я понимаю :) И на выдачу результата - удовлетворяет / не удовлетворяет.
  4. А еще "правильнее" использовать удвоенную тактовую частоту изначально. А на выход выдавать поделенную. Тогда и для триггера разрешения найдутся такты. А на Verilog пишется по-людски: out_p = enable & CLK; Если Вы - любитель Паскаля, тогда да - VHDL. Во всех остальных случаях (C, программирование микроконтроллеров) - SystemVerilog. Мое личное мнение.
  5. У автора темы на картинке частота 10 MHz. То, что предлагает Джеймс, будет работать элементарно. Также, как и то, что говорил я (имея в виду примерно то же). Автора уже и след простыл... ой, извините, вижу, читает... А ему, может, снаружи ПЛИС важны срезы тактовой частоты, а не фронты?
  6. Пропорция примерно та же - 11,11. Потому что архитектура близкая. А 100 MHz тактовой частоты - конечно лучше, кто ж спорит. К тому же, у меня есть еще 3 nop'а. Я просто показал, на что можно рассчитывать с этим процессором. upd. А на MCO я вывел все 36 MHz :)
  7. Поделюсь своим решением подобной проблемы. Тоже на порте, к которому был подключен светодиод, висело около 2 V. Ничего там быстро не переключалось. Просто из-за утечек несконфигурированного порта через светодиод (анод подключен к питанию) и резистор протекал маленький ток, создавая то самое падение на светодиоде (около 1 V), и совсем чуть-чуть - на резисторе. Оказалось, что важно сначала подать такты на порт, а потом конфигурацию задавать. Я делал наоборот, казалось, так логичнее. Вот порт и не работал. Когда перенес тактирование вперед, светодиод засветился. Работаю с STM32F103, но, думаю, с другими микроконтроллерами от ARM должно быть так же. Хотя у автора, думаю, проблема в ином...
  8. Keil ULINK-ME

    Со стеком разобрался (в разделе для начинающих написано). Теперь о главном. Пытался использовать библиотеку STM32F10x_StdPeriph_Lib_V3.1.2. Имел описанные выше проблемы. Буквально только что установил V3.3.0. Цитирую CMSIS_changes.htm: Перевожу эту абракадабру так - "индусы" лажанулись, с внешней памятью работать не будет. Перешел на версию V3.3.0, выбросил из main, как написано, SystemInit - заработало! В-общем, с ULINK-ME проблем нет. С библиотекой, надеюсь,... Только не говорите выкинуть ее нахрен. Потом, потом...
  9. Для сравнения. Для STM32F103, чуть-чуть измененный код, по сравнению с тем, что уже приводил (чтобы получить скважность 50%) while (1) { GPIOB->BSRR = 0x0002; __nop(), __nop(), __nop(); GPIOB->BRR = 0x0002; Лично видел осциллографом на ноге частоту 6.0 MHz. Т.е., 12 тактов. А в симуляторе было 10. На записи в порт приходилось по 2 такта, на переход 3 такта, nop'ы по 1 такту. И два такта добавились при чтении команды из flash.
  10. Неправильно сказал - не через стек переписывает, а через память, отведенную под стек. Переносит указатель на 0x040, и в свободной области создает буфер для этих констант. Потом обратно стек восстанавливает. А за static - спасибо, попробую. upd. Попробовал - помогло. И размер кода уменьшился (естественно :))
  11. По поводу размера стека поделюсь информацией. Был у меня стек 0x0400, как, собственно, и стоял в startup. Думал я, зачем столько? Потом смотрю в симуляторе - осталось 0x040 примерно. Оказывается, когда инициализировал контроллер ЖКИ, висящий на внешней шине, процессор перенес массив констант для инициализации из флэш-памяти в стек, а уж потом оттуда по-быстрому забросил в контроллер ЖКИ. Кто бы мог подумать? :)
  12. Да, есть такая шняга. Решений 2: - изменить вид шрифта для комментариев с курсива на прямой - изменить в ключе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage значение «1252» на «1251» Я пользовался первым до недавнего времени. Теперь перешел на второй способ.
  13. Зачем триггер? Объедините по И такты и разрешение, и всех делов.
  14. Для Cortex у меня есть такая штука. Ассемблер тут ни к чему, я думаю. /*! ******************************************************************************* * @brief Delay (in sec) * @details Программа задержки * @note предполагается частота процессора 72000000 Hz \n * при задержке до 3.640 ms программа занимает 3 команды \n * при большей задержке используется 4-5 команд ассемблера * @param TIME - время в секундах (максимум 238.609 сек) * @return нет *******************************************************************************/ #define Delay(TIME) for (uint32 i = (72000000 / 4 * TIME); i; i--);
  15. А можно я еще чуть-чуть про Cortex-M3? Вернее, про STMicroelectronics. Для STM32F103 написал следующий код while (1) { GPIOB->BSRR = 0x0002; GPIOB->BRR = 0x0002; } Скомпилировалось в 0x08000226 F8C01C10 STR r1,[r0,#0xC10] 0x0800022A F8C01C14 STR r1,[r0,#0xC14] 0x0800022E E7FA B 0x08000226 Весь цикл выполняется за 7 тактов - 2 + 2 + 3. Итого, на частоте 72MHz имеем "дрыгание ножкой" с частотой чуть больше 10MHz. А вам с вашим SAM... слабо? Я, извините, SAM... "не читал" :)
  16. Отвечу (еще раз) - у Cortex вообще нет портов!
  17. Вот и Вы, похоже, нервничаете :) У ядра Cortex, которое Вы упомянули, есть только адресное пространство для периферийных устройств 0x40000000-0x5FFFFFFF. Какие там будут устройства, зависит от производителя конкретного микропроцессора. Когда Вы сказали "переходите на Cortex", подразумевая там некие регистры портов, это вызвало справедливое замечание zltigo. Надеюсь, я объяснил правильно? А bit-band я просто так упомянул, высказал свое мнение.
  18. У меня работает ACEX от 3.3V и PIC от 5V. Между ними резисторы 47 Ohm. А clamp-диоды в Альтере, наоборот, отключал. Называлось как-то PCI-compliant...
  19. Есть производители микроконтроллеров, использующие Cortex ядро. Как они сделают порты - их дело. Обычно делают, как надо. Это не вытекает из Cortex напрямую. Кстати, bit-band для портов - вещь мало нужная. Вполне должно хватать и тех регистров, которые отвечают за биты порта. Для того они и созданы.
  20. Это вопрос личных предпочтений. А на этапе освоения визард - самый легкий путь. Но не всегда кратчайший. Я вот связался с библиотекой от ST, теперь ноги разъезжаются, не знаю где глюки искать, или какую еще функцию не вызвал. Но "на переправе коней не меняют". Заработает - начну с нуля, все свое писать.
  21. То - не визард, а опции для проекта, закладка Target. В другие закладки Вы же заходили, процессор выбирали, отладчик выбирали, оптимизацию...? А, Вы же в IAR работаете...
  22. Я конкретно не указывал стек, иначе зачем бы я вопрос задавал. Как только указал в настройках, что есть внешняя память, и отметил птички default и noinit, так он сам туда переназначается. В симуляторе вижу R13(SP)=0x64000400. Убрал птичку default с адресов 0x64000000... - стек стал таким, как надо. Похоже, с этой бедой я "справился" :) За файлик - спасибо! А что ж тогда эта птичка default делает?
×
×
  • Создать...