Форум самогонщиков Сайт Барахолка Магазин На пивко

STM32 - замена Arduino

Форум самогонщиков Автоматика
1 2 3 4 5 6 3
m16 Модератор Тамбов 1.9K 1K
Отв.40  20 Апр. 18, 22:02
я говорю не просто так. в своё время пробовал Cocox, IAR, Keil. остановился на последнем. 32к? есть лекарства. многие сидят на эклипсе+гцц, я не щупал, ничего не скажу.
разбираться и переписывать чужой код - двойная работа.
Mnz Магистр Город 254 86
Отв.41  20 Апр. 18, 22:07, через 6 мин
Keil. остановился на последнемm16, 20 Апр. 18, 22:02
В чем его преимущество в сравнении в другими IDE?

разбираться и переписывать чужой код - двойная работаm16, 20 Апр. 18, 22:02
Это зависит от кода.
Z_h_e Доцент г. Чайковский 1K 301
Отв.42  20 Апр. 18, 22:13, через 6 мин Автор был выпивший
Попробую выдернуть из своего проекта код для диммера. Вход детектора и выход на симистор указаны в схеме БАРСа.

Инициализация таймера.
Скрытый текст
//инициализация таймера2, он будет запускаться от детектора и давать импульс на тиристор
void InitTimer2(void)
{
   //затактируем Таймер2 (36 МГц*2)
      RCC->APB1ENR|=RCC_APB1ENR_TIM2EN;

      //--------------------------------
      // Настраиваем прескалер 72
      TIM2->PSC = 71;

      // Настраиваем максимум таймера, это число в микро секундах.
      TIM2->ARR = MaxPhase;
      phaseEND=MaxPhase;

      // Настраиваем скважность .Пока выключен поулчаеттся
      TIM2->CCR2 = MaxPhase+2;
      phaseSet=MaxPhase+2;

      //---------------
      // Настраиваем таймер на использование 2 канала (т.е. контакта A1)
      TIM2->CCER |= TIM_CCER_CC2E;
      //-----------
      TIM2->CR1=
            TIM_CR1_ARPE|   //обнолвение при событии
            TIM_CR1_OPM|   //однократный счет

            0;
      //----------

      //слайв мод регистр запуск от ETR
      TIM2->SMCR=
            //TIM_SMCR_ETP|   //ETR полярность, спад в данном случае
            TIM_SMCR_TS|   //ETR включен
            TIM_SMCR_SMS_2|TIM_SMCR_SMS_1|   //110: Trigger Mode - The counter starts at a rising edge of the trigger
                  0;


      //----------
      //Выход ШИМ для управления тиристором
      TIM2->CCMR1=
            //TIM_CCMR1_OC2CE|   //:Output compare 2 clear enable ХЗ что такое
            TIM_CCMR1_OC2M|   // вроде как нужный мне режим ШИМА
            TIM_CCMR1_OC2PE|   // видимо буферное обноввление Output compare 1 preload enable

            0;

      //--------------------------------

      //Разрешение прерывания по переполнению.
      //нужно успеть обновить данные работы ШИМ псоле того как счетчик переполнился

      //разрешеаме прерывание при совпадении  с регистром  CCR1, это для начала или конца
      //сбора данных от АЦП
      TIM2->CCR1 = 1;
      TIM2->DIER|=TIM_DIER_CC1IE;

      NVIC_SetPriority(TIM2_IRQn,10); //установить приоритет
      NVIC_EnableIRQ(TIM2_IRQn);

      //-----------
      //Включаем таймер
      //TIM2->CR1|=TIM_CR1_CEN;

}

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

В частности, для того чтобы установить угол открытия  симистора достаточно установить значения двум регистрам.
   TIM2->CCR2=phaseSet;
   TIM2->ARR=phaseEND;
Никакие прерывания и участие основной программы больше не нужны. Счетчик начнет считать от импульса детектора и выдаст управляющий импульс на симистор сам.

Добавлено через 2мин.:

Смайлки внутри тегов "код" - зло.
Mnz Магистр Город 254 86
Отв.43  20 Апр. 18, 22:20, через 7 мин
Смайлки внутри тегов "код" - зло.Z_h_e, 20 Апр. 18, 22:13
Использован тег pre или code?
Z_h_e Доцент г. Чайковский 1K 301
Отв.44  20 Апр. 18, 22:25, через 6 мин Автор был выпивший
pre. Надо было другой взять тег? Я мышкой поводил по кнопкам тэгов, вылез хинт  "код", его и использовал.

Кстати, на STM8 тоже можно организовать подобный режим на таймере, но только на первом. Я делал диммер на stm8 с внешним прерыванием, не захотел ремапить пин. А вот для эмуляции ds18b20 таймер1 на stm8 работает в подобном режиме (у меня есть такой проект).
SedoY Профессор Новосибирск 5K 2.1K
Отв.45  20 Апр. 18, 22:31, через 6 мин
m16, я старый (картинка внизу
STM32 - замена Arduino
STM32 - замена Arduino. Автоматика.
) привычки трудно искоренять)))
куб хорош тем что позволяет подумать о назначении ног не на бумашке и в мозгах,
в свое время когда для моторолл в кодевариоре появилось чтото похожее - ох радости было, и всеравно переписывали инициализацию.
инициализацию потом писать свою однозначно, зато - есть куда подглядеть, безусловно прошелся по всему коду библиотек которые заюзал. (по первости освоения стм32 две платы rbt6 и ret6 запустил, светиком помигал, а вот на c8t6 проруха случилась - RCC_OSC_OUT не включил и неделю подбирал кварц и конденсаторы к нему  
STM32 - замена Arduino
STM32 - замена Arduino. Автоматика.
).
St-link давно с китая приехал, а упражняюсь пока в кокосе, да и менять его нужды не вижу. или не хочу видеть. для меня и так огромный прогресс))) после 14 шарообразных мониторов  
STM32 - замена Arduino
STM32 - замена Arduino. Автоматика.
 
STM32 - замена Arduino
STM32 - замена Arduino. Автоматика.
 
STM32 - замена Arduino
STM32 - замена Arduino. Автоматика.
какая разница в чем буковки печатать. или может ещё не вырос над собой.
одно в стм плохо - сильно не хватает битовых команд, чистых битовых (привычки после моторолл остались)

WhatsApp Image 2018-04-21 at 02.18.37.jpeg
WhatsApp Image 2018-04-21 at 02.18.37.jpeg STM32 - замена Arduino. Автоматика.
arkhnchul Доктор наук Москва, Уфа 990 366
Отв.46  20 Апр. 18, 22:37, через 6 мин
при чем без всяких плюсовSedoY, 20 Апр. 18, 20:57
плюсы-то чем не угодили?)
ни в коем случае не пользовать  Cubem16, 20 Апр. 18, 21:28
почему бы и нет? Сам по себе куб как генератор инициализации вполне себе удобен и нагляден. Сейчас, после того как туда запилили генерацию кода с LL (ST называет эту реинкарнацию SPL "Low Level Library", но вообще сие есть скорее "HAL, сделанный не через жопу"), за ним даже переделывать особо не надо.

одно в стм плохо - сильно не хватает битовых команд, чистых битовых (привычки после моторолл остались)SedoY, 20 Апр. 18, 22:31
а это которых?
SedoY Профессор Новосибирск 5K 2.1K
Отв.47  20 Апр. 18, 22:42, через 5 мин
плюсы-то чем не угодилиarkhnchul, 20 Апр. 18, 22:37
старый я, а они новые )))))

Добавлено через 3мин.:

а это которыхarkhnchul, 20 Апр. 18, 22:37
с конкретной адресацией бита в байте, логику обустраивать удобно, время исполнения меньшее (хотя за время исполнения грех жаловатся - ядро быстро шуршит, но темнеменее - вдруг где узкое место возникнет, а считать-анализ да ещё если записать - три команды, вместо одной. да и разрядность широкая. непонятно - почему не сделанно
посмотри систему команд mc908HC08 например. оно конечно с ограничениями, но когда знать как пользоваться - инструмент становится удобным
привычки
Z_h_e Доцент г. Чайковский 1K 301
Отв.48  20 Апр. 18, 22:49, через 7 мин Автор был выпивший
Кокос часто ругают. Но я нашел в нем только следующие проблемы (я про 1.7.8)
1. Запускается очень долго.
2. В отладке не отображает буферную память USB.
3. Если отладка в ОЗУ, закрыв проект и открыв выскакивает какая-то ошибка при дебаге. Надо лишь переключить код во флеш и обратно в озу, кнопки радиобатон на стр. линкера.
4. Самая главный "баг" - проект перестали развивать.
SedoY Профессор Новосибирск 5K 2.1K
Отв.49  20 Апр. 18, 22:51, через 3 мин
Кокос часто ругаютZ_h_e, 20 Апр. 18, 22:49
от неумения использования.
у нас была поговорка: "старый баг лучше новых двух" .
Z_h_e Доцент г. Чайковский 1K 301
Отв.50  20 Апр. 18, 22:51, через 1 мин Автор был выпивший
я про (1.7.8) - это ( 1 . 7 . 8 )
Mnz Магистр Город 254 86
Отв.51  20 Апр. 18, 22:52, через 2 мин
сильно не хватает битовых командSedoY, 20 Апр. 18, 22:31
Есть bit banding http://www.gaw.ru/...x_arh/2_3_7.htm
http://we.easyelectronics.ru/STM32/stm32---bit-banding.html
Z_h_e Доцент г. Чайковский 1K 301
Отв.52  20 Апр. 18, 22:54, через 3 мин Автор был выпивший
bit bandingMnz, 20 Апр. 18, 22:52
Как оказалось магии и тут нет. МК не имеет доступ к битам, шина то 32ух битная. Это аппаратный |= .
SedoY Профессор Новосибирск 5K 2.1K
Отв.53  20 Апр. 18, 22:56, через 2 мин
Mnz, да читал конечно, вник и разочаловался, не то. обслуга не восхитила.
это как морковка после конфеты. вроде и сладко но не конфета
m16 Модератор Тамбов 1.9K 1K
Отв.54  20 Апр. 18, 22:57, через 2 мин
я старый (картинка внизу ) привычки трудно искоренять)))SedoY, 20 Апр. 18, 22:31
аналогично, не вижу смысла в регулярной разводке пп, юзаю макетки. на лету можно легко переделать/добавить/убрать
3f.jpg
3f. STM32 - замена Arduino. Автоматика.
1u.jpg
1u. STM32 - замена Arduino. Автоматика.
SedoY Профессор Новосибирск 5K 2.1K
Отв.55  20 Апр. 18, 22:59, через 2 мин
трехфазный синус на TIM1 и DMA делали уже, аппаратный и с одной таблицей синуса в пол периода? (ОЗУ надо экономить - мало ли для чего пригодится)
по общался бы приватно, код выкладывать мне свой стыдно честно сказать - "мал я ещё" в STM32
Mnz Магистр Город 254 86
Отв.56  20 Апр. 18, 22:59, через 1 мин
Это аппаратный |= .Z_h_e, 20 Апр. 18, 22:54
Если предположить что были бы асм инструкции для работы с битами, разве это не был бы тот же аппаратный |=?
SedoY Профессор Новосибирск 5K 2.1K
Отв.57  20 Апр. 18, 23:00, через 1 мин
m16,  
STM32 - замена Arduino
STM32 - замена Arduino. Автоматика.


Добавлено через 1мин.:

были бы асм инструкции для работы с битамиMnz, 20 Апр. 18, 22:59
ненужно было бы проводить настройку (какое то время у ядра отнимать) опять же привычки все планировать, каждому такту пристальное внимание. просрать можно все))))
можно личное время, можно время заказчика Смеющийся Смеющийся Смеющийся
arkhnchul Доктор наук Москва, Уфа 990 366
Отв.58  20 Апр. 18, 23:05, через 5 мин
а настройку чего?)
кстати, у моторол битовые команды умели со всей памятью обращаться, или как и arm-ы - только с регистрами?
m16 Модератор Тамбов 1.9K 1K
Отв.59  20 Апр. 18, 23:06, через 2 мин
одно в стм плохо - сильно не хватает битовых команд, чистых битовыхSedoY, 20 Апр. 18, 22:31
у авра тоже нет.  я написал макросы сброс/установка/переход по сотоянию  бита. в памяти выделяю место под битовое поле и вуаля. всё решаемо.