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

    

Polaris

Свой
  • Публикаций

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

  • Посещение

Репутация

0 Обычный

Информация о Polaris

  • Звание
    Местный
  • День рождения 25.12.1978

Контакты

  • Сайт
    http://
  • ICQ
    120577626
  1. ATSAMC21N18A, ASF4: Input capture

    Нет, не поможет, EmBitz не поддерживает кластеры в svd, так что результат будет тот же самый. Хорошая оболочка, но, к сожалению, автор ее не развивает... Да, мультиплексирование я включил, проблема не в этом.
  2. ATSAMC21N18A, ASF4: Input capture

    Я в EmBitz работаю, а он не понимает атмеловских svd с их кластерированием :(
  3. ATSAMC21N18A, ASF4: Input capture

    да я тоже уже неделю курю, правда, с отладчиком не так просто, у меня нет svd под этот контроллер, так что руками только по адресам. Но в целом ситуация такова, что никто пока не смог победить захват от входов: https://www.avrfreaks.net/forum/samc21-cannot-use-tc-capture-inputs-ppw-or-pw-modes Я точно такого же результата добился, от входа запускается только захват текущего значения, все более продвинутые режимы не работают. А с захватом от Event system вроде бы вышло вот с этим руководством: https://microchipsupport.force.com/articles/en_US/FAQ/SAM-D-L-C---TC-Capture-Example-using-Atmel-START?retURL=%2Fapex%2FNewCase&popup=true То есть, только с лайтовой версией драйвера TC и только с прерываниями. Мне кажется, что даже в AVR все было на порядок продвинутее, в сравнении с армами других производителей это, конечно, полное фиаско. Как-то я себе иначе представлял банальный захват PWM. Столько телодвижений (таймер, внешнее прерывание, EVSYS, все это связать) для того, чтобы потом в прерывании получить желаемое значение.
  4. ATSAMC21N18A, ASF4: Input capture

    Да, видел уже эту доку, свалили в кучу все процессоры, что есть, а на деле тот же D20 имеет совсем другую структуру регистров в плане TC. И в родной доке от C21/C21 WO стоят на схеме модуля как входы-выходы, а тут только как входы. Кому верить вообще - непонятно.
  5. ATSAMC21N18A, ASF4: Input capture

    Доброго всем дня! В данный момент пытаюсь запустить захват по фронту на контроллере ATSAMC21N18A. Во-первых, натолкнулся на странное. Документация по ASF4 гласит, что: Но нигде больше никакого упоминания драйвера input-capture нет, ни в ASF4, ни на онлайн-версии Atmel START, драйвер PWM есть, а этого нет. Баг в документации? А как тогда с ним работать? Второе. Попробовал настроить сам, минуя функции ASF4, потому что, судя по коду, там в драйвере Timer можно выставить только четкие периоды, которые ставятся через регистр CC, который мне нужен как раз для захвата. Обнаружил в документации, что можно использовать либо систему событий, либо входы-выходы таймера TC WO[0]/WO[1]. Вроде как достаточно выставить в регистре CTRLA функцию захвата: TC0->COUNT16.CTRLA.bit.CPTEN0 = 1; и настроить WO[0] как вход: TC3->COUNT16.CTRLC.bit.COPEN0 = 1; Все, больше ничего не нужно. Вопрос только в том, каким образом он должен понять, какой режим работы выбран? Это документация скромно обходит стороной. Я пробовал все возможные настройки, обнуляс счетчик в прерывании по MC0, но ничего не помогает, максимум, что я смог достичь - это расчет длины периода, то есть, расстояние между двумя восходящими фронтами PWM-сигнала, который я подаю на вход WO[0]. При этом та же документация на процессор вообще лишь раз упоминает, что WO[0] может работать как вход, сильно подозреваю, что ей вообще нельзя доверять, потому что настройка режима работы захвата (PPW/PWP/PW) предусмотрено только в режиме работы от ивентов, а не от входов. Ок, потратил кучу времени, бросил эту затею и решил перейти на ивенты. настроил в Start событие от внешнего прерывания, оба фронта, потребителем поставил таймер TC0, выставил режим PW - не работает вообще. Выставил PWP или PPW - работает, но криво, CC1 вообще никогда не обновляется, СС0 содержит расстояние между двумя фронтами. Ага, когда повезет - верное (между положительным и отрицательным), когда нет - то, что между отрицательным и положительным. То есть, если период PWM 1000 единиц, а длительность импульса - 300, получаем то 300, то 700. Вот мой код: hri_mclk_set_APBCMASK_TC0_bit(MCLK); hri_gclk_write_PCHCTRL_reg(GCLK, TC0_GCLK_ID, CONF_GCLK_TC0_SRC | (1 << GCLK_PCHCTRL_CHEN_Pos)); //timer_init(&TIMER_0, TC0, _tc_get_timer()); TC0->COUNT16.CTRLA.bit.ENABLE = 0; while (TC0->COUNT16.SYNCBUSY.bit.STATUS); TC0->COUNT16.CTRLA.bit.PRESCALER = 3; TC0->COUNT16.CTRLA.bit.PRESCSYNC = TC_CTRLA_PRESCSYNC_GCLK_Val; TC0->COUNT16.CTRLA.bit.MODE = TC_CTRLA_MODE_COUNT16; while (TC0->COUNT16.SYNCBUSY.bit.STATUS); TC0->COUNT16.CTRLA.bit.CAPTEN0 = 1; TC0->COUNT16.CTRLA.bit.CAPTEN1 = 0; while (TC0->COUNT16.SYNCBUSY.bit.STATUS); while (TC0->COUNT16.SYNCBUSY.bit.STATUS); TC0->COUNT16.EVCTRL.bit.TCEI = 1; TC0->COUNT16.EVCTRL.bit.EVACT = TC_EVCTRL_EVACT_PPW_Val; while (TC0->COUNT16.SYNCBUSY.bit.STATUS); TC0->COUNT16.CTRLA.bit.ENABLE = 1; while (TC0->COUNT16.SYNCBUSY.bit.STATUS); Инициализацию таймера через ASF4 отключил по причине ее неприспособленности к работе в режиме захвата. Внешнее прерывание точно работает, проверял вызовом обработчика. Генерация событий тоже точно работает, в противном случае ничего бы таймер вообще не ловил. Проблема, как мне кажется, в работе самого таймера. Это вообще как? Кто-то вообще смог настроить этот бред? Такое впечатление, что у некрочипа документацию вообще негры пишут уже за еду, методом копипасты.
  6. STM32F429 Discovery / uGFX

    Посмотрите в сторону RT1052, работает реально быстрее с графикой.
  7. Вышла Atmel Studio 7

    Речь не о контроллерах, они в целом очень даже неплохие, речь об экосистеме - нет ни нормальных отладчиков, ни нормальных средств разработки, и эта проблема никуда не девается уже второе десятилетие. А на ассемблере можно писать разве что мелочь какую-то, когда проекты вырастают до размеров десятков тысяч строк - не думаю, что у Вас с ассемблером получится совладать.
  8. Вышла Atmel Studio 7

    Ну все, Атмелу теперь точно крышка :)
  9. Энергопотребление STM32F103C8T6

    Вопрос закрыт. Достигнутый уровень потребления в Stop Mode - 15 мкА, что соответствует заявленным в даташите 14 мкА. С отключенным на время сна АЦП потребление снизилось до 70 мкА. SysTick на потребление никак не влияет, разве что упрощает отладку, с ним и подключенным отладчиком войти в режим сна не выходит. Еще 55 мкА потреблял вроде бы неиспользуемый LDO, видимо, через резистивный делитель, используемый в обратной связи: Всем спасибо!
  10. Вышла Atmel Studio 7

    С AVRISP mkII проблем такого рода нет, но это же не отладчик, видимо, Atmel пустил его уже на самотек.
  11. Вышла Atmel Studio 7

    Не по теме, но все-таки не сдержусь. Приобрел Dragon с целью отладки на XMega, цензурных слов нет просто никаких, ничего с ним достичь не получилось вообще, седьмая студия его видит, но не подсоединяет, шестая подсоединяет, но не может сбросить контроллер. После нескольких вечеров копания на форумах решил избавиться от него и больше с Atmel дела не иметь. И да, по поводу студии добавлю и родного Atmel-ICE. Стоит новейшая седьмая студия, отладчик родной и стоит не копейки, при подключении его к компьютеру он виден в списке устройств, студия же его не видит в упор. Проверил у коллеги - та же картина. Проверили на другом компьютере - видит. В чем отличие? Наличие Интернета! Все остальное идентично (Win10, версия студии). Видимо, этим гопникам-погромистам недостаточно денег, в охоте за китайскими копиями они даже готовы запретить полностью работу с их родным отладчиком без наличия возможности проверить серийники через Интернет. А у нас на работе сложная политика, рабочие машины в Интернет принципиально не пускаются, так что ой. Короче, Atmel - это живой труп, лучше его уже закопать.
  12. Зависание при записи во флэш Tiny45

    Прерывания были отключены, регистры не используются в тексте существенным образом. Проблема была все-таки в логике программы, так что с процессором все в порядке.
  13. Зависание при записи во флэш Tiny45

    Добрый день, пришлось заняться написанием загрузчика для Tiny45, с которым не работал уже тысячу лет, и возникла проблема с записью флэш при помощи SPM. Во внутренний буфер все пишется замечательно, а вот со стиранием/записью страницы есть вопросы. Код стирания, например выглядит вот так: LED_PIN_Set; #asm movw R30, R10 ldi R22, 0x03 out 0x37, R22 spm #endasm LED_PIN_Clear; while (SPMCSR & (1 << SPMEN)); Адрес страницы лежит в R10, это железно, так как страница пишется/стирается. Но вот выхода из SPM не происходит, так как светодиод загорается (LED_PIN_Set), но уже не гаснет, то есть до команды LED_PIN_Clear выполнение не доходит. Фьюз SELFPRGEN включен. Есть ли у кого-нибудь идеи, почему это может происходить? Потому как наполнение буфера для страницы работает, хотя там тоже используется SPM, хотя и не происходит изменений во флэш. Сама страница тоже пишется, но один раз - из пишущего страницу SPM выхода не происходит. Заранее спасибо!
  14. Прошивка AVR через STM32F7

    Почему же невозможно? Делал такое как на AVR - шил из одной меги другую, причем прошивка была частью прошивки ведущего устройства (мега128 и мега32, так что памяти хватало). Делал подобное и примерно так, как Вы описали в варианте 1 - LPC4088 читал с карточки прошивки и шил через CAN ведомые STM32Fxxx. Что конкретно Вас интересует?
  15. Энергопотребление STM32F103C8T6

    Удалось определить виновника утечки. Плата тут не при чем, ток потребляет АЦП, хотя я его вроде бы отключаю вот так: ADC_Cmd(ADC1, DISABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, DISABLE); Без АЦП потребление порядка 20 мкА, с включенным АЦП - 800 мкА, с дополнительно включенной внутренней опорой (я хочу использовать ее для измерения напряжения питания) потребляет 1,2 мА. Пока что буду думать, как все это хозяйство действительно выключить на время сна.