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

*Leks*

Свой
  • Постов

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

  • Посещение

Сообщения, опубликованные *Leks*


  1. Добрый день.

    Есть довольно громоздкий проект на STM32F103C8T6, написанный в IAR с помощью SPL. По определённым причинам требуется перенести его в Keil5. Как наиболее грамотно это сделать? Понятно, что ругается на pragma. Это исправляется. А что ещё?

  2. А если совсем ничего не записать в МК, сколько потребляет? :rolleyes:

    На днях запаял в новую плату чистый stm32f303 и включил. Так он грелся, зараза. Я думал, что что в топологии напутал чего, но заливка прошивки прошла штатно и греться перестало.

  3. В SQ1 занесите номер канала 1, в SQ2 - 2, в SQ3 - 3. Это разные вещи - позиция канала в последовательности и аппаратный номер канала. Вы можете все 16 позиций забить одним номером, например.

    Да, действительно так заработало! :cheers:

     

    Неправильно я понимал эту настройку каналов.

     

  4. Вы начинаете настройку последовательности со второй позиции. В первой по умолчанию ноль, вот и получается так.

     

    Где 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

  5. Проц 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 и игнорирую нулевой.

  6. Занимаюсь электроприводом уже достаточно давно, работаю с семейством С2000 и в частности с 28335. Из отладчиков есть XDS100v1,2,3 и XDS560, но пользуюсь только XDS100 v2 и 3, и своим софтом который работает по CAN.

    Когда идёт отладка на работающем инверторе, о JTAG лучше забыть, зависания гарантированы точно и скорее всего взрывы тоже, поэтому использую CAN ну или другой интерфейс, например SCI (UART), как и предложили.

    Премного благодарен за инфо от практика.

     

    Гальваническая изоляция не спасает?

    Не в изоляции дело, а в том, что нужно строго по времени коммутировать транзистором сотни ампер в ШИМ режиме, отслеживая положение ротора.

  7. Неправильно ;)

    Кроме реалтайма у Вас там куча ещё всего будет, где JTAG очень поможет. Заранее себя ограничивать и увеличивать время разработки - глупо. Тем более Вы - начинающий, Вам ещё матчасть осваивать и осваивать, а эмулятор+даташит для этого - лучшее средство. Не поставите JTAG - потом не раз пожалеете когда плата уже будет.

    О симуляторе лучше сразу забыть. Отлаживать нужно на реальном железе. Кроме эмулятора выведите ещё UART для реалтайм-отладки. Этого достаточно.

    Ок. JTAG оставлю. UART в обязательном порядке будет.

    Сколько денег и каким образом надо заплатить за полноценный отладчик/компилятор без ограничений размера кода? Ссылку бы.

    Покупаешь плату и считай, заплатил за лицензию? Или не так?

     

    Посмотрел.

    Хотя, вряд ли подойдёт. Плату уже начали разводить.

  8. Приветствую всех!

    Имеется опыт разработки и внедрения в серию устройств на PIC и AVR.

    Предстоит разработка системы управления электроприводом (motorcontrol). Двигатели будут асинхронные и синхронные мощностью до 100 кВт. Микроконтроллер предварительно выбран TMS320F28335 в основном, потому, что имеется аналог для военки от НИИЭТ. Техас Инструмент для меня новинка.

     

    Мои рассуждения такие:

    -отладка motorcontrol вряд ли возможна через JTAG из-за больших вычислительных нагрузок и жёсткой привязки к оборотам двигателя. Пошагово отлаживать можно только без нагрузки. Поэтому отладчик в железе не нужен. Нужна отладка в симуляторе.

    -нужен программатор для заливки кода в контроллер. Какой правильный?

    -нужна среда разработки. Как я понимаю, это - CCS. Он ведь платный? Как производится оплата? Покупая некую плату с железным ключом или некий код установки?

    -возможно, CCS не оптимален и есть некие другие более православные среды разработки?

     

  9. В EE2007.7 сделал полигон Plane Shape. На рисунке видны только лишь его контуры красного цвета. В предыдущих версиях был пункт "Generate Plane Data", если не ошибаюсь. Полигон заливался целиком, и я это видел.

    Какие кнопочки надо нажать, чтоб и здесь было так же?

    post-13719-1272993037_thumb.jpg

  10. :bb-offtopic: прошу прощения что вмешиваюсь - но все как по написанному :biggrin:

     

    говорят есть такой прием у "суровых" HR-ов

    задают Вам вопрос типа - каким Вы хотите видеть "идеального" начальника и человек начинает рассказывать о все проблемах которые когда либо возниками у него со своими начальниками - что собственно HRу и надо узнать. Вычисляют "обиженных", "непонятых, "недооцененных" и пр. Вообщем надо хорошо подумать что Вы от новой работы хотите...

    Знаете как должен отвечать нанимаемый в иностранную компанию?

    - Начальник должен выдавать чёткое задание и контролировать его выполнение.

    Все отклонения от приведённого варианта засчитываются не в пользу нанимаемого.

  11. Отличный магазин.

    Хотя как пожелание выскажу: лучше начинать работу на час позже и заканчивать на час позже. Думаю, что по прибыльности тот первый час работы будет значительно уступать этому добавленному вечернему часу.

  12. Радиолюбителям и им сочувствующим в связи с инвентаризацией.. Имеются платки (Ethernet, RS232, сбор инфомации с датчиков) с установленными компонентами и приличные корпуса для самодельных приборов. Не все платы могут оказаться рабочими. Что из полезного есть на платах:

    PIC18F452-I/P (микроконтроллер)

    ATMEGA64-16AU (микроконтроллер)

    ADM202EARW (RS232)

    RTL8019AS (Ethernet)

    AM1S-2405SZ (DC-DC преобразователь)

    FB2022

    24LC16

    7805CT (стабилизатор 5В)

    Реле 5В

    кварц 20 МГц

    разъёмы Ethernet, телефонные и питания

    светодиоды

     

    th_34294_DSC03088_122_142lo.JPG

    th_34298_DSC03085_122_552lo.JPG

    th_31203_DSC03089_122_435lo.JPG

    th_34593_DSC03090_122_158lo.JPG

    th_31364_DSC03092_122_496lo.JPG

    th_34296_DSC03091_122_1187lo.JPG

     

    Общий объём можно оценить по последним двум фоткам.

    Хочу бутылочку коньяка. Хотя, если совесть позволит, можете забрать бесплатно.

    Самовывоз из Москвы от метро Первомайская

  13. Зигзагами именно выравнивают дорожки чтобы время прохождения сигнала по разным проводникам одной шины данных было одинакого. Нельзя сделать длину проводника в шине короче самого длинного проводника. Да и требования к клоковому сигналу бывают првязаны определённым образом времени прохождения сигналов по шине данных и адреса. Требования к сигналам в даташите на процессор или память или ТЗ разработчика цифровой схемы.

  14. Здравствуйте. Разбираюсь с Mega8L. Написал простой алгоритм winavr – бегущие огни, в stk500 светодиоды мигают (порты PC0..PC5). Собрал на макетке из радиодеталей, которые были под рукой, блок питания от мобилы. Схема на рисунке, код на Си приложен, все в архиве, на светодиод посадил только один выход PC5. Светодиод не мигает, а горит. К светодиоду вместо нуля подавал +, не работает. В чем ошибка?! Может конденсаторы, а может руки не оттуда растут.

    Спасибо за внимание.

    Ну так и не должно работать, если собрано как на схеме. По крайней мере, полярность светодиода надо поменять. И при использовании БП от мобилы нужен хотя бы простой стабилизатор на КРЕН5. На ногу reset не плохо бы повесить конденсатор 0,01-0,1 мкФ.

    А что, winavr понимает такое представление числа "DDRC = 0b111111;" ?

×
×
  • Создать...