...Комуто интересно копаться в железе проца, видимо что бы выжать сколько то дополнительных процентов быстродействия из микрухи. А комуто этого быстродействия хватает и он хочет использовать хорошо отрабработанный и готовый инструментарий через готовые функции и драйвера. И тем и другим должно быть дано право использования АРМ.
Кстати вторые вполне могут давать тем самым хлеб первым...
Даже просто на переводе документации на руский вполне можно было б заработать...
Как, вон, различные сайты знакомств зарабатывают. Есть общий доступ для всех (для привлечения чайников) , а есть платный доступ для вип (для чего нить посерьезнее).
SashaN123, если так хочется простоты то откройте для себя куб. https://habrahabr.ru/post/213561/
Еще проще ардуино. Нужно уметь читать и тыкать мышкой.
SashaN123 писал(а):Как, вон, различные сайты знакомств зарабатывают.
Мурик писал(а):SashaN123, если так хочется простоты то откройте для себя куб. https://habrahabr.ru/post/213561/
Еще проще ардуино. Нужно уметь читать и тыкать мышкой.
Ну вообще-то не проще, так как это генератор шаблонов для ранее установленного компилятора. И аналог не Arduino, а скорее Codevision AVR. Который как-раз проще, в связке с отладчиком Proteus вообще творит чудеса, виртуально можно проверить ШИМ, таймеры, понажимать кнопки, отладить аналоговые части.
Andrew Martin писал(а):мечта и у STM - закрыть прямой доступ к периферии
Смысл? Многие сменят производителя МК и уровень продаж у ST уменьшится. Им это нужно?
Это всеобщая тенденция, а не только у STM. Поэтому к тому времени достойной альтернативы может и не быть. А STM попросту может продолжать демпинг, чем она нынче и занимается.
А смысл в том, что тогда можно изменять сколько угодно (до неузнаваемости) аппаратную часть, нисколько не заботясь о проблемах миграции и совместимости - только править HAL при этом.
Мурик писал(а):В протеусе часто работает не так как в железе.
Нужно знать специфику и ограничения протеуса, тогда и сюрпризов не будет
По-моему одна из основных ценностей отладчика - возможность пошаговой отладки. С этой точки зрения в ряде приложений отладчик абсолютно бесполезен.
Andrew Martin писал(а):
А смысл в том, что тогда можно изменять сколько угодно (до неузнаваемости) аппаратную часть, нисколько не заботясь о проблемах миграции и совместимости - только править HAL при этом.
Ну замутите не думая "о проблемах миграции и совместимости" хардварно 9-бит СПИ на Ф100 при переходе с Ф0ХХ. Что, не получается?
scorpi_0n писал(а):
Ну замутите не думая "о проблемах миграции и совместимости" хардварно 9-бит СПИ на Ф100 при переходе с Ф0ХХ. Что, не получается?
Не надо сравнивать несравнимые вещи.
Ф0 новее Ф1, и поэтому имеют более совершенную периферию. Неуместно в рамках эволюции говорить о совместимости "сверху вниз" и переходе на устаревшие семейства, только "снизу вверх".
Тогда зачем вообще твердить "о проблемах миграции и совместимости"? Можно замутить ногодрыгом аля ардуина, но разве это выход? И о каком "сверху вниз" может идти речь, если Ф0ХХ самая простая и нижняя линейка СТМ32?
В том то и прелесть закрытой аппаратной части, что производитель как раз может в HAL что-то замутить ногодрыгом, чтобы обеспечить работу "нового" кода на "старом" МК той же линейки, а вы и знать не будете
Глупо в общем-то говорить о совместимости "сверху вниз" линеек МК на разных ядрах, когда даже без периферии код всё равно будет работать неоптимально. Но возможно будет ещё более новая линейка на М0 (на замену Ф0), и тогда встанет вопрос совместимости.
scorpi_0n писал(а):
Ну так и перестаньте говорить глупости если не в теме. Или почитайте хоть что нибудь о линейках СТМ32 чтобы иметь представление о ядрах и периферии.
Я в отличие от вас не смешиваю мухи с котлетами и не задаюсь вопросом совместимости по периферии и миграции с относительно новых (хотя и "нижних", на ядре М0) F0хх до древних (хотя и на ядре М3) F100. Одно дело разделение на линейки, а другое - хронология их появления.
Правильная аналогия - это сравнение, например, ATMEGA8/16/32 и ATMEGA88/168/328. Последние - это результат эволюции первых, ядро у всех AVR, а по периферии (и особенно по доступу к ней) отличия существенные. Здесь как раз проблему совместимости может решить HAL, чтобы код для Меги8 работал на Меге88.
Здравствуйте. Вливаюсь в тему. Значит, перехожу я с меги на stm32. Пока в любительском русле, а там посмотрим. С мегами работал в иаре, тут тоже буду юзать его. Светодиодом моргал, даже програмный шимчик делал)) С цапом получилось поиграться. Но пока что очень трудно вложить в голову логику работы периферии, так сказать ее схему. Имею ввиду АЦП. Не хочу использовать HAL, не будем это обсуждать)
Хочу запустить АЦП в режиме ручного запуска, на один канал, самый простой пример использования.
RCC->APB2ENR|=RCC_APB2ENR_ADC1EN;//тактирование АЦП
ADC1->CR1|=ADC_CR1_EOCIE;//включить прерывание АЦП
ADC1->CR2|= ADC_CR2_EXTSEL_0 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_2;//програмный запуск АЦП
ADC1->CR2|=ADC_CR2_CAL;//калибровка (не факт что правильно использую)
ADC1->CR2|=ADC_CR2_CONT;//непрерывный режим преобразования
ADC1->CR2|=ADC_CR2_ADON;//включить АЦП
ADC1->SMPR2|=ADC_SMPR2_SMP1;//максимальное время преобразования для 1 канала
ADC1->SQR1&=~ADC_SQR1_L_0|ADC_SQR1_L_1|ADC_SQR1_L_2|ADC_SQR1_L_3;//0000 означает что в списке регулярных каналов у нас 1 канал
ADC1->SQR3|= ADC_SQR3_SQ1_0;//первый вход АЦП
ADC1->CR2|=ADC_CR2_SWSTART;//старт АЦП
while(1){
y=ADC1->SR;
ADC_complete=(ADC1->SR&ADC_SR_EOC);
while(ADC_complete){
x=ADC1->DR;
}
}
Подскажите что я не так включил? В прерывание не уходит, регистр статуса чекаю - бит готовности всегда 0 (x,y использую для мониторинга в отладчике).
интересный момент. Вообще оно как-то в голове все перемешалось регулярные, инжектированые, режим сканирования, непрерывный (а discontinius вообще еще не вкурил как - одноразовый чтоли). Только вторая неделя разбирательства, надеюсь в конце в голове выстроится рабочая модель и понимание логики внутри блока.
Ярослав555 писал(а):
ADC1->CR2|=ADC_CR2_CAL;//калибровка (не факт что правильно использую)
This bit is set by software to start the calibration. It is reset by hardware after calibration is complete.
Вроде все просто, нужно ждать пока битик не сбросится.
ADC1->CR2|=ADC_CR2_ADON;//включить АЦП
0: Disable ADC conversion/calibration and go to power down mode.
Тоже вроде все логично, калибровку нужно было делать после включения ADC, а не до
Ярослав555 писал(а):
ADC1->CR2|=ADC_CR2_CAL;//калибровка (не факт что правильно использую)
This bit is set by software to start the calibration. It is reset by hardware after calibration is complete.
Вроде все просто, нужно ждать пока битик не сбросится.
ADC1->CR2|=ADC_CR2_ADON;//включить АЦП
0: Disable ADC conversion/calibration and go to power down mode.
Тоже вроде все логично, калибровку нужно было делать после включения ADC, а не до
Упс. Установку битов делал в порядке следования в даташите.
Нет, пока не заработало. Перенес включение в конец инициализации, калибровку после включения - что включал, что выключал калибровку - одинаково. Видимо проблема еще где-то.
P.S. Но калибровку проходит - в дата регистре висит значение 0х41.