-
Постов
176 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные *Leks*
-
-
Значит, придется повозиться. Я думал, что есть возможность заменить определённые файлы и всё. Ну да ладно, будут встречаться большие подводные камни, напишу.
-
Добрый день.
Есть довольно громоздкий проект на STM32F103C8T6, написанный в IAR с помощью SPL. По определённым причинам требуется перенести его в Keil5. Как наиболее грамотно это сделать? Понятно, что ругается на pragma. Это исправляется. А что ещё?
-
А если совсем ничего не записать в МК, сколько потребляет? :rolleyes:
На днях запаял в новую плату чистый stm32f303 и включил. Так он грелся, зараза. Я думал, что что в топологии напутал чего, но заливка прошивки прошла штатно и греться перестало.
-
В SQ1 занесите номер канала 1, в SQ2 - 2, в SQ3 - 3. Это разные вещи - позиция канала в последовательности и аппаратный номер канала. Вы можете все 16 позиций забить одним номером, например.
Да, действительно так заработало! :cheers:
Неправильно я понимал эту настройку каналов.
-
Вы начинаете настройку последовательности со второй позиции. В первой по умолчанию ноль, вот и получается так.
Где ADC_SQR3_SQ1_x?
Нулями этот канал включается. Как надо начать с первой позиции, чтобы его отключить? Я подозреваю, что никак.
Так он включается:
ADC1->SQR3 &= ~ADC_SQR3_SQ1_0; //0 ADC1->SQR3 &= ~ADC_SQR3_SQ1_1; //0 ADC1->SQR3 &= ~ADC_SQR3_SQ1_2; //0 ADC1->SQR3 &= ~ADC_SQR3_SQ1_3; //0 ADC1->SQR3 &= ~ADC_SQR3_SQ1_4; //0
-
Проц STM32F103C8T6
Пытаюсь в режиме DMA читать каналы ADC12_IN1, ADC12_IN2, ADC12_IN3. При этом читать ADC12_IN0 не нужно.
Настраиваю так:
#define DMA_BUFF_SIZE 3 uint16_t buff[DMA_BUFF_SIZE]; ... //длина последовательности равна 3, первый канал (010) ADC1->SQR1 |= ADC_SQR1_L_1; // первый бит установлен в 1 // ADC1->SQR1 &= ~ADC_SQR1_L_0 & ~ADC_SQR1_L_2; // нулевой и второй биты сброшены в 0 // Выбираем последовательность каналов для сканирования //Bits 4:0 SQ2[4:0]: 1st conversion in regular sequence PA1/ADC12_IN1 pin11 ADC1->SQR3 |= ADC_SQR3_SQ2_0; //1 ADC1->SQR3 &= ~ADC_SQR3_SQ2_1; //0 ADC1->SQR3 &= ~ADC_SQR3_SQ2_2; //0 ADC1->SQR3 &= ~ADC_SQR3_SQ2_3; //0 ADC1->SQR3 &= ~ADC_SQR3_SQ2_4 //0 //Bits 4:0 SQ3[4:0]: 2st conversion in regular sequence PA2/ADC12_IN2 pin 12 ADC1->SQR3 &= ~ADC_SQR3_SQ3_0; //0 ADC1->SQR3 |= ADC_SQR3_SQ3_1; //1 ADC1->SQR3 &= ~ADC_SQR3_SQ3_2; //0 ADC1->SQR3 &= ~ADC_SQR3_SQ3_3; //0 ADC1->SQR3 &= ~ADC_SQR3_SQ3_4; //0 //Bits 4:0 SQ4[4:0]: 3st conversion in regular sequence PA3/ADC12_IN3 pin 13 ADC1->SQR3 |= ADC_SQR3_SQ4_0; //1 ADC1->SQR3 |= ADC_SQR3_SQ4_1; //1 ADC1->SQR3 &= ~ADC_SQR3_SQ4_2; //0 ADC1->SQR3 &= ~ADC_SQR3_SQ4_3; //0 ADC1->SQR3 &= ~ADC_SQR3_SQ4_4; //0 ADC1->CR2 |= ADC_CR2_DMA //включаем работу с DMA | ADC_CR2_EXTTRIG //включаем работу от внешнего события | ADC_CR2_EXTSEL //выбираем триггером запуска регулярной последовательности событие SWSTART | ADC_CR2_JEXTSEL; // выбираем триггером запуска выделенной последовательности событие JSWSTART ADC1->CR1 |= ADC_CR1_SCAN; // включаем автоматический перебор всех каналов в последовательности DMA1_Channel1->CPAR = (uint32_t) &ADC1->DR; // Загружаем адрес регистра DR DMA1_Channel1->CMAR = (uint32_t) &buff[0]; //грузим адрес буфера обмена DMA1_Channel1->CNDTR = DMA_BUFF_SIZE; //длина буфера DMA1_Channel1->CCR |= DMA_CCR1_MINC //инкремент адреса памяти | DMA_CCR1_PSIZE_0 //размерность данных периферии 16 бит | DMA_CCR1_MSIZE_0 //размерность данных памяти 16 bit | DMA_CCR1_CIRC; // закольцевать буфер //макросы для включения/выключения АЦП с DMA ADC1->CR2 |= ADC_CR2_ADON; ADC1->CR2 |= ADC_CR2_SWSTART; DMA1_Channel1->CCR |= DMA_CCR1_EN; //включаем преобразование и прерывание DMA
Проблема в том, что читаются не ADC12_IN1...ADC12_IN3, а читаются ADC12_IN0...ADC12_IN2
Получается, что нулевой канал включен по умолчанию, т.к. биты ADC_SQR3_SQ1_0 ... ADC_SQR3_SQ1_4 равны нулю. Пробовал в них записывать единицы - не помогает. Всё равно читает этот IN0 канал, но в результат равен нулю.
Как сделать так, чтобы в режиме DMA этот нулевой канал вообще не читался? Пока в виде костыля читаю четыре канала IN0...IN3 и игнорирую нулевой.
-
Эх, старый
добрыйроссийский интернет. -
Остались очень довольны качеством и ценами ООО "Эталон" из Твери.
Находились на территории Химволокна.
-
Занимаюсь электроприводом уже достаточно давно, работаю с семейством С2000 и в частности с 28335. Из отладчиков есть XDS100v1,2,3 и XDS560, но пользуюсь только XDS100 v2 и 3, и своим софтом который работает по CAN.
Когда идёт отладка на работающем инверторе, о JTAG лучше забыть, зависания гарантированы точно и скорее всего взрывы тоже, поэтому использую CAN ну или другой интерфейс, например SCI (UART), как и предложили.
Премного благодарен за инфо от практика.
Гальваническая изоляция не спасает?Не в изоляции дело, а в том, что нужно строго по времени коммутировать транзистором сотни ампер в ШИМ режиме, отслеживая положение ротора.
-
Неправильно ;)
Кроме реалтайма у Вас там куча ещё всего будет, где JTAG очень поможет. Заранее себя ограничивать и увеличивать время разработки - глупо. Тем более Вы - начинающий, Вам ещё матчасть осваивать и осваивать, а эмулятор+даташит для этого - лучшее средство. Не поставите JTAG - потом не раз пожалеете когда плата уже будет.
О симуляторе лучше сразу забыть. Отлаживать нужно на реальном железе. Кроме эмулятора выведите ещё UART для реалтайм-отладки. Этого достаточно.
Ок. JTAG оставлю. UART в обязательном порядке будет.
Сколько денег и каким образом надо заплатить за полноценный отладчик/компилятор без ограничений размера кода? Ссылку бы.
Покупаешь плату и считай, заплатил за лицензию? Или не так?
Посмотрел.
Хотя, вряд ли подойдёт. Плату уже начали разводить.
-
Приветствую всех!
Имеется опыт разработки и внедрения в серию устройств на PIC и AVR.
Предстоит разработка системы управления электроприводом (motorcontrol). Двигатели будут асинхронные и синхронные мощностью до 100 кВт. Микроконтроллер предварительно выбран TMS320F28335 в основном, потому, что имеется аналог для военки от НИИЭТ. Техас Инструмент для меня новинка.
Мои рассуждения такие:
-отладка motorcontrol вряд ли возможна через JTAG из-за больших вычислительных нагрузок и жёсткой привязки к оборотам двигателя. Пошагово отлаживать можно только без нагрузки. Поэтому отладчик в железе не нужен. Нужна отладка в симуляторе.
-нужен программатор для заливки кода в контроллер. Какой правильный?
-нужна среда разработки. Как я понимаю, это - CCS. Он ведь платный? Как производится оплата? Покупая некую плату с железным ключом или некий код установки?
-возможно, CCS не оптимален и есть некие другие более православные среды разработки?
-
*Leks*
Включить Display Control>Layer>Planes>Plane Data; Display Control>Layer>Planes>Fill/Hatch
Спасибо! Hatch мне и нужен был.
-
-
-
Вот пусть попробуют себе найти сотрудника на сайтах по трудоустройству, забивая в поиск "электроник". На одного инженера 100 продажников бытовой электроники
-
:bb-offtopic: прошу прощения что вмешиваюсь - но все как по написанному
говорят есть такой прием у "суровых" HR-ов
задают Вам вопрос типа - каким Вы хотите видеть "идеального" начальника и человек начинает рассказывать о все проблемах которые когда либо возниками у него со своими начальниками - что собственно HRу и надо узнать. Вычисляют "обиженных", "непонятых, "недооцененных" и пр. Вообщем надо хорошо подумать что Вы от новой работы хотите...
Знаете как должен отвечать нанимаемый в иностранную компанию?
- Начальник должен выдавать чёткое задание и контролировать его выполнение.
Все отклонения от приведённого варианта засчитываются не в пользу нанимаемого.
-
Подходит ли "лицензия" от 2007.5 ?
-
Отличный магазин.
Хотя как пожелание выскажу: лучше начинать работу на час позже и заканчивать на час позже. Думаю, что по прибыльности тот первый час работы будет значительно уступать этому добавленному вечернему часу.
-
- прописка Москва, МО;
За это можно иск схлопотать
-
Радиолюбителям и им сочувствующим в связи с инвентаризацией.. Имеются платки (Ethernet, RS232, сбор инфомации с датчиков) с установленными компонентами и приличные корпуса для самодельных приборов. Не все платы могут оказаться рабочими. Что из полезного есть на платах:
PIC18F452-I/P (микроконтроллер)
ATMEGA64-16AU (микроконтроллер)
ADM202EARW (RS232)
RTL8019AS (Ethernet)
AM1S-2405SZ (DC-DC преобразователь)
FB2022
24LC16
7805CT (стабилизатор 5В)
Реле 5В
кварц 20 МГц
разъёмы Ethernet, телефонные и питания
светодиоды
Общий объём можно оценить по последним двум фоткам.
Хочу бутылочку коньяка. Хотя, если совесть позволит, можете забрать бесплатно.
Самовывоз из Москвы от метро Первомайская
-
Зигзагами именно выравнивают дорожки чтобы время прохождения сигнала по разным проводникам одной шины данных было одинакого. Нельзя сделать длину проводника в шине короче самого длинного проводника. Да и требования к клоковому сигналу бывают првязаны определённым образом времени прохождения сигналов по шине данных и адреса. Требования к сигналам в даташите на процессор или память или ТЗ разработчика цифровой схемы.
-
"кадровое агенство" и "Неплохое"
ИМХО понятия несовместимые
-
Здравствуйте. Разбираюсь с Mega8L. Написал простой алгоритм winavr – бегущие огни, в stk500 светодиоды мигают (порты PC0..PC5). Собрал на макетке из радиодеталей, которые были под рукой, блок питания от мобилы. Схема на рисунке, код на Си приложен, все в архиве, на светодиод посадил только один выход PC5. Светодиод не мигает, а горит. К светодиоду вместо нуля подавал +, не работает. В чем ошибка?! Может конденсаторы, а может руки не оттуда растут.
Спасибо за внимание.
Ну так и не должно работать, если собрано как на схеме. По крайней мере, полярность светодиода надо поменять. И при использовании БП от мобилы нужен хотя бы простой стабилизатор на КРЕН5. На ногу reset не плохо бы повесить конденсатор 0,01-0,1 мкФ.
А что, winavr понимает такое представление числа "DDRC = 0b111111;" ?
-
Хотелось бы узнать цену на собранную плату и комплект платы с деталюхами без сборки. Ставьте меня в очередь.
перенос проекта из IAR в Keil
в ARM
Опубликовано · Пожаловаться
Перенеслось без особых проблем. Даже папки CMSIS и STDPeriphLib перетащились без изменений.
Компилируется, дебажится, прошивается.
Тестируем сейчас.