Страница 482 из 628

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пн янв 20, 2014 15:47:07
coredumped
Леонид Иванович писал(а):Есть. На Дискавери код работает. Но разве этого достаточно? Сомневаюсь, всё ли я учел.
Есть такая штука - отладка называется. Вы пишите код, запускаете отладку и проверяете все ли работает так, как задумано. За Вас это никто не сделает, тк никто не знает, что Вы хотели в результате получить. Как можно знать, что Вы учли, а что - нет? Если код на дискавери работает так, как задумано, чего Вам еще "не достаточно"?
Леонид Иванович писал(а):Т.е. предлагаете осваивать программирование STM32 тяп-ляп, используя чужой код и не понимая, как он работает? Что ж, это по-молодежному.
Нет, лучше писать код, который 100500 раз проверен каждый раз - "с нуля"? 100 раз Вам сказано - инициализация есть готовая, проверенная - берите и пользуйтесь. Хотите понять, как это работает - запустите отладку в пошаговом режиме, откройте RM и ПОЙМИТЕ!

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пн янв 20, 2014 15:53:03
Леонид Иванович
dosikus писал(а):Я предлагаю не лезть сломя голову на амбразуры , а изучать новый для себя МК постепенно.
Но ведь для Вас этот МК не новый, могли бы и поделиться.

К примеру, как быть с прерываниями. Например, у меня есть класс, который реализует протокол обмена. Как мне реализовать обработчик прерывания? Для AVR было просто и понятно:

Код: Выделить всё

#pragma vector = USART_TXC_vect
__interrupt void USARTTxComplete()
{
   MyClass::OnTXC();
}
Но для STM32 нет ключевого слова __interrupt.

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пн янв 20, 2014 15:58:18
dosikus
Леонид Иванович писал(а): Но ведь для Вас этот МК не новый, могли бы и поделиться.
С радостью БЫ , но Вас же понесло в плюсы , а в них я увы и ах .
И вообще не понимаю - зачем они в ембедде ....

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пн янв 20, 2014 16:07:10
Леонид Иванович
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 */
Зачем это всё делается? Для каких "for debug purpose"? Где об этом почитать? Что будет, если этого не сделать? По reset всё и так сброшено. Без всего этого у меня на Дискавери всё работает. Получается, это написали идиоты?

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пн янв 20, 2014 16:26:09
dosikus
Леонид Иванович писал(а):
Получается, это написали идиоты?
Отключим AVR мышленье на время , ОК ?
Вам не приходило в голову, что конфигурацию тактирования можно менять на ходу , а не только при старте?
И вот теперь кто идиот ? :)))

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пн янв 20, 2014 17:16:41
coredumped
Чуть дополню. Если не выполнять аппаратный ресет, а перезапустить процедуру инициализации в отладочной сессии, регистры не получат своих "значений по умолчанию". Вот поэтому и делается их инициализация. Если клацать аппаратным ресетом - все это не нужно. Но есть еще одна штука - watchdog timer... Короче, чтоб не биться головой о клавиатуру и не чувствовать себя идиотом - делайте, как Вам ST советует. Несколько записей в регистры ваш говнокод не замедлят, а количество сотрясений могут уменьшить :)

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пн янв 20, 2014 17:54:16
Леонид Иванович
dosikus писал(а):Вам не приходило в голову, что конфигурацию тактирования можно менять на ходу , а не только при старте?
И вот теперь кто идиот ?
Менять можно. Но для этого не требуется очищать все эти регистры. И вряд ли кто-то это будет делать вызовом SystemInit(), потому что она не содержит никаких параметров тактирования (все задано константами). Так что Ваш ответ мимо. Кто идиот - пока не ясно.
coredumped писал(а):Но есть еще одна штука - watchdog timer...
В AVR срабатывание WDT было полностью эквивалентно аппаратному сбросу. А в STM32 что, не так? :shock:

Еще насчет стандартной функции включения тактирования: запускаю программу, всё работает. Птом выдергиваю кварц из панельки, программа продолжает работать, но неправильно. такое меня решительно не устраивает! Что делать?

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пн янв 20, 2014 18:10:25
dosikus
Леонид Иванович писал(а): Менять можно. Но для этого не требуется очищать все эти регистры. И вряд ли кто-то это будет делать вызовом SystemInit(), потому что она не содержит никаких параметров тактирования (все задано константами). Так что Ваш ответ мимо. Кто идиот - пока не ясно.
Во первых сначала переходим на HSI и сбрасываем все настройка PLL и конфигурации по дефолту . Объяснить зачем сие ?
Затем вызывается SetSysClock(); Которая и устанавливает нужный источник тактирования
Вынужден в очередной раз Вас просить выключить дурака(AVR) .
Здесь естественно не универсальная функция переключения тактирования ,
а всего лишь настройка на один источник с одной конфигурацией и повторюсь :
Сгенерированно скриптом
Но и при варианте с переключением частоты , процедура выглядела примерно так же - сброс на HSI и дефолт и только затем установка других значений .
Леонид Иванович писал(а): Еще насчет стандартной функции включения тактирования: запускаю программу, всё работает. Птом выдергиваю кварц из панельки, программа продолжает работать, но неправильно. такое меня решительно не устраивает! Что делат
Снова выключить AVR .
А Вы в AVR такое частенько проделывали ? :))) Ну и как ?
Настройки по дефолту HSE - PLL включен , HSI - PLL выключен .
При аварии HSE , тактирование происходит от HSI напрямую , без PLL .
Сие кстати ответ почему при переключении частот сбрасывают на HSI и дефолт .

Для Вашей хотелки - надо задействовать CSS .

Изображение

ЛИ , предлагаю перенести обсуждение на казус http://kazus.ru/forums/forumdisplay.php?f=34 , Вы не против ?

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пн янв 20, 2014 18:58:12
Леонид Иванович
dosikus писал(а):сбрасываем все настройка PLL и конфигурации по дефолту . Объяснить зачем сие ?
Да, объяснить! Зачем сбрасывать по дефолту?
dosikus писал(а):выключить дурака(AVR)
У меня обратное мнение. Дураки (STM32) юзают какие-то исходники с горами мусора и не знают, что зачем нужно.
dosikus писал(а):А Вы в AVR такое частенько проделывали ? :))) Ну и как ?
Да, проделывал, всё нормально - программа виснет, как и должно быть.
dosikus писал(а):Для Вашей хотелки - надо задействовать CSS .
Как именно? Написать обработчик прерывания NMI, который будет каким-то образом останавливать систему?

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пн янв 20, 2014 19:55:50
dosikus
Леонид Иванович писал(а):
Да, объяснить! Зачем сбрасывать по дефолту?
Мои надежды не оправдались , ЛИ не смог догадаться .
Да для того что бы перейти на HSI, и работая на нем конфигурировать другую тактовую .
По фантазируйте - вы выключаете HSI , включая одновременно HSE - который не заводиться - что будет ?

Леонид Иванович писал(а): У меня обратное мнение. Дураки (STM32) юзают какие-то исходники с горами мусора и не знают, что зачем нужно.
Я вынужден снова повторить - использовать на первых порах, пока не снизойдет озарение.
Леонид Иванович писал(а): Да, проделывал, всё нормально - программа виснет, как и должно быть.
Вариант "живучести" - когда система продолжает работать с сдохшим внешним кварцем, Вам в голову не приходил?
Не тупо дохнуть , а выдать юзеру - "неисправность -внешний кварц сдох" .


Леонид Иванович писал(а): Как именно? Написать обработчик прерывания NMI, который будет каким-то образом останавливать систему?
Тупо уважаемый , весьма тупо - сконфигурировать тактовую как нужно , а не сдохнуть...

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пн янв 20, 2014 23:18:12
coredumped
dosikus, забейте. ЛИ, кроме себя, никого не слышит.
Записки палаты №6 :))

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Ср янв 22, 2014 20:55:18
urbanknight
Дня доброго :) Есть идея, создать свою GlaDOS. Скажите пожалуйста, реально-ли запитать микроконтроллер от картошки, и воспроизвести пару фраз? На базе какого мк это будет сделать проще, с учетом, что программировать слегка умею (php), а с мк дела еще не имел.
Заранее спасибо

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Ср янв 22, 2014 22:36:38
dosikus
urbanknight, поменьше тытрубы смотреть надо.
Там не питают от картофелины , она как кнопка работает . Батарейка прилагается... :)))

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Ср янв 22, 2014 22:37:14
oleg110592
от картошки вряд ли - батарейка нужна:
http://www.youtube.com/watch?v=8t7jBtSzFgM
готовая конструкция на карточке все звуки: http://elm-chan.org/works/sd8p/report.html

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Ср янв 29, 2014 16:08:25
aam
Здравствуйте!
Допустим у меня ноги AVRки, к которым подключается ISP-программатор, задействованы как выходы. Где при этом должны стоять последовательные резисторы? В байтбластере или на плате устройства?

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт янв 30, 2014 10:32:28
den2
Хотел бы узнать,можно ли считать залоченную Атмегу?Для 89С51 коллега находил схему,для чтения информации с неё.Читал что можно попытаться сбить биты защиты высоким напряжением (как при высоковольтном программировании),но этот способ работает 50/50.
Может чего придумали для этих целей.

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт янв 30, 2014 15:08:07
coredumped
den2 писал(а):Хотел бы узнать,можно ли считать залоченную Атмегу?
Принято верить, что нет.

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Чт янв 30, 2014 17:37:26
BCluster
den2 писал(а):Хотел бы узнать,можно ли считать залоченную Атмегу?
растворить корпус микросхемы и смотря через микроскоп переписать на бумажку все биты из флэш ))))
В домашних условиях считайте никак.

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пт янв 31, 2014 11:56:25
service47
Не запускается таймер2, обработчик прерываний и регистры таймера2 на ATmega88:
Даташит: http://www.atmel.com/images/doc2545.pdf
Нужно, чтобы таймер при переполнении вызывал прерывание...
Спойлер

Код: Выделить всё

ISR(TIMER2_OVF_vect)
{
	PORTB = 0x00;
	PORTC = ~(1 << segcounter);
	switch (segcounter)
	{
		case 0:
		PORTB = SEGMENTE[display % 10 / 1];
		break;
		case 1:
		PORTB = (SEGMENTE[display % 100 / 10])|0x80; // добавляем десятичную точку
		break;
		case 2:
		PORTB = SEGMENTE[display % 1000 / 100];
		break;
		case 3:
		PORTB = SEGMENTE[display % 10000 / 1000];
		break;
	}
	if ((segcounter++) > 2) segcounter = 0;
}

	
	TIMSK2 |= (1 << TOIE2); // разрешение прерывания по таймеру2
	TCCR2A |= (1 << CS21);  //предделитель на 8 
	
Делал по примеру тут: http://mainloop.ru/avr-atmega/avr-timer-counter.html

Re: Мелкие вопросы по МК и ПЛИС.

Добавлено: Пт янв 31, 2014 13:38:12
Леонид Иванович
Бит CS21 расположен в регистре TCCR2B.