Jump to content

snn_krs

Members
  • Content Count

    318
  • Joined

  • Last visited

Community Reputation

60 Обычный

About snn_krs

  • Rank
    Постоялец

Информация

  • Город
    Краснодар

Электроника

  • Стаж в электронике
    Более 20 лет
  • Сфера радиоэлектроники
    микроконтроллеры
  • Оборудование
    Осциллограф, мультиметр

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Все отлично работает. Покажите полный код с обеих устройств, тогда можно будет сказать, где ошибка.
  2. Наверно лучший вариант взять STM32F103 с двумя АЦП. Там они будут работать независимо. На вашем можно сделать иначе. Если 3 преобразования не получается, то делайте по 2. При 22 кГц время между двумя выборками 2.8 мкс ( меандр 45 мкс и 16 выборок = 2.8 мкс ). При Sample time = 1.5 время одного преобразования 1.17 мкс и двух соответственно 2.34 мкс.Делаете регулярные группы 0, 1, 0, 2 и запускаете по два канала. В буфере будет по 32 значения, канал 0 обрабатываете постоянно, а 1 и 2 по желанию.
  3. Думаю лучше задавать частоту одного таймера более высокочастотного, а второй запускать от него с постоянным делителем например 10. Книга называется "Мартин М. Инсайдерское руководство по STM32". Если не найдете могу скинуть.
  4. Похоже я не правильно понял. Запускать можно группу каналов, но если вам надо равномерно распределять выборки по меандру, то конечно надо второй таймер. Я имел ввиду вот такие преобразования.
  5. Да. Обработку я делаю по прерываниям от ДМА - половина буфера и полный. Пока обрабатываю первую половину, заполняется вторая.
  6. Зачем два таймера. АЦП сам запускает ДМА по окончанию каждого преобразования. У АЦП есть режим запуска по триггеру. Таймер будет запускать все 10 преобразований по вашему меандру. Только посмотрите какие таймеры и по какому событию могут запускать АЦП.
  7. Максимальная частота АЦП 12 МГц. Около 850 000 преобразований в секунду. Другая периферия на время преобразования не влияет. В ДМА лучше для АЦП поставить высший приоритет.
  8. Делал типа такого ADC_InitStr.ADC_ContinuousConvMode = ENABLE; ADC_InitStr.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStr.ADC_Mode = ADC_Mode_Independent; ADC_InitStr.ADC_NbrOfChannel = 4; ADC_InitStr.ADC_ScanConvMode = ENABLE; ADC_InitStr.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_Init( ADC1, &ADC_InitStr ); ADC_RegularChannelConfig( ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5 ); ADC_RegularChannelConfig( ADC1, ADC_Channel_1, 2, ADC_SampleTime_239Cycles5 ); ADC_RegularChannelConfig( ADC1, ADC_Channel_2, 3, ADC_SampleTime_239Cycles5 ); ADC_RegularChannelConfig( ADC1, ADC_Channel_TempSensor, 4, ADC_SampleTime_239Cycles5 ); ADC_TempSensorVrefintCmd( ENABLE ); ADC_DMACmd( ADC1 , ENABLE ); ADC_Cmd( ADC1, ENABLE ); ADC_InitStr.ADC_NbrOfChannel = 4; - это число каналов в группе ставите 16 ADC_RegularChannelConfig( ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5 ); - число 1 - канал 0 будет запущен первым и т. д. Лучше порядок преобразований и число задать через регистры ADC_SQR1, ADC_SQR2 и ADC_SQR3. ADC_SQR1 = 0х00F00000; - типа такого.
  9. Если устроит, то есть регулярные каналы и можно настроить групповое преобразование. В группе может быть до 16 каналов. Можно сделать 14 преобразований важного канала и 2 преобразования вспомогательных каналов. При этом можно задать любой порядок следования каналов например: 1,1,2,1,1,3,1,1... Не надо будет перенастраивать, ДМА будет складывать так как зададите. Число каналов и последовательность задается в регистрах ADC_SQR1,2,3.
  10. Почитайте это подробно все описано.
  11. Верхние транзисторы не открываются полностью. Обычно в верхнее плечо ставят pnp транзисторы. Другой вариант поставить готовые драйверы.
  12. snn_krs

    rcall

    На скриншоте видно, что функция main( uint32_t x ) тоже задана с аргументом и 6 байт стека сразу используются. Сделайте функцию main( void ) и освободятся 6 байт.
  13. snn_krs

    rcall

    Компиляторы аргуметны функций передают через стэк. Соответственно для функции void u32_color(uint32_t h) он помещает в стек 4 байта, а при выходе их удаляет. Для других типов он наверно использует другие команды типа push.
  14. Скачайте Candle 1.0.10 она работает с GRBL 0.9j. У меня проверял, работает.
  15. У вас просто установлена защита от чтения. Вот что написано об этом в даташите.
×
×
  • Create New...