Мелкие вопросы по МК и ПЛИС.
Что же это за изучение, если использовать готовый файл? Даташит на STM32F100 я уже проштудировал и написал код. Хотел, чтобы спецы по STM32 его проверили. Но в ответ слышу всякую фигню.
- Реклама
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
То есть у Вас ни камня ни дискавери нет ?Леонид Иванович писал(а): Даташит на STM32F100 я уже проштудировал и написал код. Хотел, чтобы спецы по STM32 его проверили.
Как любят здесь сыпать аллегориями :Что же это за изучение, если использовать готовый файл?
Вы для изучения вождения так же проверяете состав бензина на спектрографе, или просто заливаете ?
При изучении чего либо - разделите процесс , пока тактирование принимайте как есть...
Есть. На Дискавери код работает. Но разве этого достаточно? Сомневаюсь, всё ли я учел.dosikus писал(а):То есть у Вас ни камня ни дискавери нет ?
Т.е. предлагаете осваивать программирование STM32 тяп-ляп, используя чужой код и не понимая, как он работает? Что ж, это по-молодежному.dosikus писал(а):Вы для изучения вождения так же проверяете состав бензина на спектрографе, или просто заливаете ?
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
Я предлагаю не лезть сломя голову на амбразуры , а изучать новый для себя МК постепенно.
Что бы потом не думалось - "все ли я учел"...
Что бы потом не думалось - "все ли я учел"...
Есть такая штука - отладка называется. Вы пишите код, запускаете отладку и проверяете все ли работает так, как задумано. За Вас это никто не сделает, тк никто не знает, что Вы хотели в результате получить. Как можно знать, что Вы учли, а что - нет? Если код на дискавери работает так, как задумано, чего Вам еще "не достаточно"?Леонид Иванович писал(а):Есть. На Дискавери код работает. Но разве этого достаточно? Сомневаюсь, всё ли я учел.
Нет, лучше писать код, который 100500 раз проверен каждый раз - "с нуля"? 100 раз Вам сказано - инициализация есть готовая, проверенная - берите и пользуйтесь. Хотите понять, как это работает - запустите отладку в пошаговом режиме, откройте RM и ПОЙМИТЕ!Леонид Иванович писал(а):Т.е. предлагаете осваивать программирование STM32 тяп-ляп, используя чужой код и не понимая, как он работает? Что ж, это по-молодежному.
Все будет только лучше, в крайнем случае - хуже.
- Реклама
Но ведь для Вас этот МК не новый, могли бы и поделиться.dosikus писал(а):Я предлагаю не лезть сломя голову на амбразуры , а изучать новый для себя МК постепенно.
К примеру, как быть с прерываниями. Например, у меня есть класс, который реализует протокол обмена. Как мне реализовать обработчик прерывания? Для AVR было просто и понятно:
Код: Выделить всё
#pragma vector = USART_TXC_vect
__interrupt void USARTTxComplete()
{
MyClass::OnTXC();
}
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
С радостью БЫ , но Вас же понесло в плюсы , а в них я увы и ах .Леонид Иванович писал(а): Но ведь для Вас этот МК не новый, могли бы и поделиться.
И вообще не понимаю - зачем они в ембедде ....
Хорошо, готовая, так готовая. Смотрим:coredumped писал(а):100 раз Вам сказано - инициализация есть готовая, проверенная
Код: Выделить всё
void SystemInit (void)
{
/* Reset the RCC clock configuration to the default reset state(for debug purpose) */
/* Set HSION bit */
RCC->CR |= (uint32_t)0x00000001;
/* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */
#ifndef STM32F10X_CL
RCC->CFGR &= (uint32_t)0xF8FF0000;
#else
RCC->CFGR &= (uint32_t)0xF0FF0000;
#endif /* STM32F10X_CL */
/* Reset HSEON, CSSON and PLLON bits */
RCC->CR &= (uint32_t)0xFEF6FFFF;
/* Reset HSEBYP bit */
RCC->CR &= (uint32_t)0xFFFBFFFF;
/* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */
RCC->CFGR &= (uint32_t)0xFF80FFFF;
#ifdef STM32F10X_CL
/* Reset PLL2ON and PLL3ON bits */
RCC->CR &= (uint32_t)0xEBFFFFFF;
/* Disable all interrupts and clear pending bits */
RCC->CIR = 0x00FF0000;
/* Reset CFGR2 register */
RCC->CFGR2 = 0x00000000;
#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL)
/* Disable all interrupts and clear pending bits */
RCC->CIR = 0x009F0000;
/* Reset CFGR2 register */
RCC->CFGR2 = 0x00000000;
#else
/* Disable all interrupts and clear pending bits */
RCC->CIR = 0x009F0000;
#endif /* STM32F10X_CL */- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
Отключим AVR мышленье на время , ОК ?Леонид Иванович писал(а):
Получается, это написали идиоты?
Вам не приходило в голову, что конфигурацию тактирования можно менять на ходу , а не только при старте?
И вот теперь кто идиот ?
Чуть дополню. Если не выполнять аппаратный ресет, а перезапустить процедуру инициализации в отладочной сессии, регистры не получат своих "значений по умолчанию". Вот поэтому и делается их инициализация. Если клацать аппаратным ресетом - все это не нужно. Но есть еще одна штука - watchdog timer... Короче, чтоб не биться головой о клавиатуру и не чувствовать себя идиотом - делайте, как Вам ST советует. Несколько записей в регистры ваш говнокод не замедлят, а количество сотрясений могут уменьшить 
Все будет только лучше, в крайнем случае - хуже.
Менять можно. Но для этого не требуется очищать все эти регистры. И вряд ли кто-то это будет делать вызовом SystemInit(), потому что она не содержит никаких параметров тактирования (все задано константами). Так что Ваш ответ мимо. Кто идиот - пока не ясно.dosikus писал(а):Вам не приходило в голову, что конфигурацию тактирования можно менять на ходу , а не только при старте?
И вот теперь кто идиот ?
В AVR срабатывание WDT было полностью эквивалентно аппаратному сбросу. А в STM32 что, не так?coredumped писал(а):Но есть еще одна штука - watchdog timer...
Еще насчет стандартной функции включения тактирования: запускаю программу, всё работает. Птом выдергиваю кварц из панельки, программа продолжает работать, но неправильно. такое меня решительно не устраивает! Что делать?
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
Во первых сначала переходим на HSI и сбрасываем все настройка PLL и конфигурации по дефолту . Объяснить зачем сие ?Леонид Иванович писал(а): Менять можно. Но для этого не требуется очищать все эти регистры. И вряд ли кто-то это будет делать вызовом SystemInit(), потому что она не содержит никаких параметров тактирования (все задано константами). Так что Ваш ответ мимо. Кто идиот - пока не ясно.
Затем вызывается SetSysClock(); Которая и устанавливает нужный источник тактирования
Вынужден в очередной раз Вас просить выключить дурака(AVR) .
Здесь естественно не универсальная функция переключения тактирования ,
а всего лишь настройка на один источник с одной конфигурацией и повторюсь :
Сгенерированно скриптом
Но и при варианте с переключением частоты , процедура выглядела примерно так же - сброс на HSI и дефолт и только затем установка других значений .
Снова выключить AVR .Леонид Иванович писал(а): Еще насчет стандартной функции включения тактирования: запускаю программу, всё работает. Птом выдергиваю кварц из панельки, программа продолжает работать, но неправильно. такое меня решительно не устраивает! Что делат
А Вы в AVR такое частенько проделывали ?
Настройки по дефолту HSE - PLL включен , HSI - PLL выключен .
При аварии HSE , тактирование происходит от HSI напрямую , без PLL .
Сие кстати ответ почему при переключении частот сбрасывают на HSI и дефолт .
Для Вашей хотелки - надо задействовать CSS .

ЛИ , предлагаю перенести обсуждение на казус http://kazus.ru/forums/forumdisplay.php?f=34 , Вы не против ?
Последний раз редактировалось dosikus Пн янв 20, 2014 18:27:09, всего редактировалось 1 раз.
Да, объяснить! Зачем сбрасывать по дефолту?dosikus писал(а):сбрасываем все настройка PLL и конфигурации по дефолту . Объяснить зачем сие ?
У меня обратное мнение. Дураки (STM32) юзают какие-то исходники с горами мусора и не знают, что зачем нужно.dosikus писал(а):выключить дурака(AVR)
Да, проделывал, всё нормально - программа виснет, как и должно быть.dosikus писал(а):А Вы в AVR такое частенько проделывали ?Ну и как ?
Как именно? Написать обработчик прерывания NMI, который будет каким-то образом останавливать систему?dosikus писал(а):Для Вашей хотелки - надо задействовать CSS .
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
Мои надежды не оправдались , ЛИ не смог догадаться .Леонид Иванович писал(а):
Да, объяснить! Зачем сбрасывать по дефолту?
Да для того что бы перейти на HSI, и работая на нем конфигурировать другую тактовую .
По фантазируйте - вы выключаете HSI , включая одновременно HSE - который не заводиться - что будет ?
Я вынужден снова повторить - использовать на первых порах, пока не снизойдет озарение.Леонид Иванович писал(а): У меня обратное мнение. Дураки (STM32) юзают какие-то исходники с горами мусора и не знают, что зачем нужно.
Вариант "живучести" - когда система продолжает работать с сдохшим внешним кварцем, Вам в голову не приходил?Леонид Иванович писал(а): Да, проделывал, всё нормально - программа виснет, как и должно быть.
Не тупо дохнуть , а выдать юзеру - "неисправность -внешний кварц сдох" .
Тупо уважаемый , весьма тупо - сконфигурировать тактовую как нужно , а не сдохнуть...Леонид Иванович писал(а): Как именно? Написать обработчик прерывания NMI, который будет каким-то образом останавливать систему?
dosikus, забейте. ЛИ, кроме себя, никого не слышит.
Записки палаты №6
Записки палаты №6
Все будет только лучше, в крайнем случае - хуже.
- Сообщения: 6
- Зарегистрирован: Пн июл 09, 2012 05:49:20
Дня доброго
Есть идея, создать свою GlaDOS. Скажите пожалуйста, реально-ли запитать микроконтроллер от картошки, и воспроизвести пару фраз? На базе какого мк это будет сделать проще, с учетом, что программировать слегка умею (php), а с мк дела еще не имел.
Заранее спасибо
Заранее спасибо
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
urbanknight, поменьше тытрубы смотреть надо.
Там не питают от картофелины , она как кнопка работает . Батарейка прилагается...
Там не питают от картофелины , она как кнопка работает . Батарейка прилагается...
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
от картошки вряд ли - батарейка нужна:
http://www.youtube.com/watch?v=8t7jBtSzFgM
готовая конструкция на карточке все звуки: http://elm-chan.org/works/sd8p/report.html
http://www.youtube.com/watch?v=8t7jBtSzFgM
готовая конструкция на карточке все звуки: http://elm-chan.org/works/sd8p/report.html
Здравствуйте!
Допустим у меня ноги AVRки, к которым подключается ISP-программатор, задействованы как выходы. Где при этом должны стоять последовательные резисторы? В байтбластере или на плате устройства?
Допустим у меня ноги AVRки, к которым подключается ISP-программатор, задействованы как выходы. Где при этом должны стоять последовательные резисторы? В байтбластере или на плате устройства?
Хотел бы узнать,можно ли считать залоченную Атмегу?Для 89С51 коллега находил схему,для чтения информации с неё.Читал что можно попытаться сбить биты защиты высоким напряжением (как при высоковольтном программировании),но этот способ работает 50/50.
Может чего придумали для этих целей.
Может чего придумали для этих целей.


