я говорю не просто так. в своё время пробовал Cocox, IAR, Keil. остановился на последнем. 32к? есть лекарства. многие сидят на эклипсе+гцц, я не щупал, ничего не скажу.
разбираться и переписывать чужой код - двойная работа.
STM32 - замена Arduino
m16
Модератор
Тамбов
1.9K 1K
Отв.40 20 Апр. 18, 22:02
Mnz
Магистр
Город
254 86
Отв.41 20 Апр. 18, 22:07, через 6 мин
Keil. остановился на последнемm16, 20 Апр. 18, 22:02В чем его преимущество в сравнении в другими IDE?
разбираться и переписывать чужой код - двойная работаm16, 20 Апр. 18, 22:02Это зависит от кода.
Z_h_e
Доцент
г. Чайковский
1.1K 313
Отв.42 20 Апр. 18, 22:13, через 6 мин
Автор был выпивший
Попробую выдернуть из своего проекта код для диммера. Вход детектора и выход на симистор указаны в схеме БАРСа.
Инициализация таймера.
Я писал что прерывание не нужно, а тут оно включается, типа неувязочка. На самом деле оно используется, но для другой задачи.
В частности, для того чтобы установить угол открытия симистора достаточно установить значения двум регистрам.
Добавлено через 2мин.:
Смайлки внутри тегов "код" - зло.
Инициализация таймера.
Скрытый текст
//инициализация таймера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
Доцент
г. Чайковский
1.1K 313
Отв.44 20 Апр. 18, 22:25, через 6 мин
Автор был выпивший
pre. Надо было другой взять тег? Я мышкой поводил по кнопкам тэгов, вылез хинт "код", его и использовал.
Кстати, на STM8 тоже можно организовать подобный режим на таймере, но только на первом. Я делал диммер на stm8 с внешним прерыванием, не захотел ремапить пин. А вот для эмуляции ds18b20 таймер1 на stm8 работает в подобном режиме (у меня есть такой проект).
Кстати, на STM8 тоже можно организовать подобный режим на таймере, но только на первом. Я делал диммер на stm8 с внешним прерыванием, не захотел ремапить пин. А вот для эмуляции ds18b20 таймер1 на stm8 работает в подобном режиме (у меня есть такой проект).
SedoY
Профессор
Новосибирск
5.1K 2.2K
Отв.45 20 Апр. 18, 22:31, через 6 мин
m16, я старый (картинка внизу ) привычки трудно искоренять)))
куб хорош тем что позволяет подумать о назначении ног не на бумашке и в мозгах,
в свое время когда для моторолл в кодевариоре появилось чтото похожее - ох радости было, и всеравно переписывали инициализацию.
инициализацию потом писать свою однозначно, зато - есть куда подглядеть, безусловно прошелся по всему коду библиотек которые заюзал. (по первости освоения стм32 две платы rbt6 и ret6 запустил, светиком помигал, а вот на c8t6 проруха случилась - RCC_OSC_OUT не включил и неделю подбирал кварц и конденсаторы к нему ).
St-link давно с китая приехал, а упражняюсь пока в кокосе, да и менять его нужды не вижу. или не хочу видеть. для меня и так огромный прогресс))) после 14 шарообразных мониторов какая разница в чем буковки печатать. или может ещё не вырос над собой.
одно в стм плохо - сильно не хватает битовых команд, чистых битовых (привычки после моторолл остались)
куб хорош тем что позволяет подумать о назначении ног не на бумашке и в мозгах,
в свое время когда для моторолл в кодевариоре появилось чтото похожее - ох радости было, и всеравно переписывали инициализацию.
инициализацию потом писать свою однозначно, зато - есть куда подглядеть, безусловно прошелся по всему коду библиотек которые заюзал. (по первости освоения стм32 две платы rbt6 и ret6 запустил, светиком помигал, а вот на c8t6 проруха случилась - RCC_OSC_OUT не включил и неделю подбирал кварц и конденсаторы к нему ).
St-link давно с китая приехал, а упражняюсь пока в кокосе, да и менять его нужды не вижу. или не хочу видеть. для меня и так огромный прогресс))) после 14 шарообразных мониторов какая разница в чем буковки печатать. или может ещё не вырос над собой.
одно в стм плохо - сильно не хватает битовых команд, чистых битовых (привычки после моторолл остались)
arkhnchul
Доктор наук
Москва, Уфа
990 367
Отв.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
Профессор
Новосибирск
5.1K 2.2K
Отв.47 20 Апр. 18, 22:42, через 5 мин
плюсы-то чем не угодилиarkhnchul, 20 Апр. 18, 22:37старый я, а они новые )))))
Добавлено через 3мин.:
а это которыхarkhnchul, 20 Апр. 18, 22:37с конкретной адресацией бита в байте, логику обустраивать удобно, время исполнения меньшее (хотя за время исполнения грех жаловатся - ядро быстро шуршит, но темнеменее - вдруг где узкое место возникнет, а считать-анализ да ещё если записать - три команды, вместо одной. да и разрядность широкая. непонятно - почему не сделанно
посмотри систему команд mc908HC08 например. оно конечно с ограничениями, но когда знать как пользоваться - инструмент становится удобным
привычки
Z_h_e
Доцент
г. Чайковский
1.1K 313
Отв.48 20 Апр. 18, 22:49, через 7 мин
Автор был выпивший
Кокос часто ругают. Но я нашел в нем только следующие проблемы (я про 1.7.8)
1. Запускается очень долго.
2. В отладке не отображает буферную память USB.
3. Если отладка в ОЗУ, закрыв проект и открыв выскакивает какая-то ошибка при дебаге. Надо лишь переключить код во флеш и обратно в озу, кнопки радиобатон на стр. линкера.
4. Самая главный "баг" - проект перестали развивать.
1. Запускается очень долго.
2. В отладке не отображает буферную память USB.
3. Если отладка в ОЗУ, закрыв проект и открыв выскакивает какая-то ошибка при дебаге. Надо лишь переключить код во флеш и обратно в озу, кнопки радиобатон на стр. линкера.
4. Самая главный "баг" - проект перестали развивать.
SedoY
Профессор
Новосибирск
5.1K 2.2K
Отв.49 20 Апр. 18, 22:51, через 3 мин
Кокос часто ругаютZ_h_e, 20 Апр. 18, 22:49от неумения использования.
у нас была поговорка: "старый баг лучше новых двух" .
Z_h_e
Доцент
г. Чайковский
1.1K 313
Отв.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
Доцент
г. Чайковский
1.1K 313
Отв.52 20 Апр. 18, 22:54, через 3 мин
Автор был выпивший
bit bandingMnz, 20 Апр. 18, 22:52Как оказалось магии и тут нет. МК не имеет доступ к битам, шина то 32ух битная. Это аппаратный |= .
SedoY
Профессор
Новосибирск
5.1K 2.2K
Отв.53 20 Апр. 18, 22:56, через 2 мин
Mnz, да читал конечно, вник и разочаловался, не то. обслуга не восхитила.
это как морковка после конфеты. вроде и сладко но не конфета
это как морковка после конфеты. вроде и сладко но не конфета
m16
Модератор
Тамбов
1.9K 1K
Отв.54 20 Апр. 18, 22:57, через 2 мин
я старый (картинка внизу ) привычки трудно искоренять)))SedoY, 20 Апр. 18, 22:31аналогично, не вижу смысла в регулярной разводке пп, юзаю макетки. на лету можно легко переделать/добавить/убрать
SedoY
Профессор
Новосибирск
5.1K 2.2K
Отв.55 20 Апр. 18, 22:59, через 2 мин
трехфазный синус на TIM1 и DMA делали уже, аппаратный и с одной таблицей синуса в пол периода? (ОЗУ надо экономить - мало ли для чего пригодится)
по общался бы приватно, код выкладывать мне свой стыдно честно сказать - "мал я ещё" в STM32
по общался бы приватно, код выкладывать мне свой стыдно честно сказать - "мал я ещё" в STM32
Mnz
Магистр
Город
254 86
Отв.56 20 Апр. 18, 22:59, через 1 мин
Это аппаратный |= .Z_h_e, 20 Апр. 18, 22:54Если предположить что были бы асм инструкции для работы с битами, разве это не был бы тот же аппаратный |=?
SedoY
Профессор
Новосибирск
5.1K 2.2K
Отв.57 20 Апр. 18, 23:00, через 1 мин
m16,
Добавлено через 1мин.:
можно личное время, можно время заказчика
Добавлено через 1мин.:
были бы асм инструкции для работы с битамиMnz, 20 Апр. 18, 22:59ненужно было бы проводить настройку (какое то время у ядра отнимать) опять же привычки все планировать, каждому такту пристальное внимание. просрать можно все))))
можно личное время, можно время заказчика
arkhnchul
Доктор наук
Москва, Уфа
990 367
Отв.58 20 Апр. 18, 23:05, через 5 мин
а настройку чего?)
кстати, у моторол битовые команды умели со всей памятью обращаться, или как и arm-ы - только с регистрами?
кстати, у моторол битовые команды умели со всей памятью обращаться, или как и arm-ы - только с регистрами?
m16
Модератор
Тамбов
1.9K 1K
Отв.59 20 Апр. 18, 23:06, через 2 мин
одно в стм плохо - сильно не хватает битовых команд, чистых битовыхSedoY, 20 Апр. 18, 22:31у авра тоже нет. я написал макросы сброс/установка/переход по сотоянию бита. в памяти выделяю место под битовое поле и вуаля. всё решаемо.