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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Chettuser

Сообщение Chettuser »

Всё! Сдаюсь!
Пытаюсь запустить STM32F030R8 от внутреннего HSI:
Спойлер

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

    RCC->CR = 0;
    RCC->CR |= RCC_CR_HSION;
    while((RCC->CR &RCC_CR_HSIRDY)==0){}

    RCC->CR &=~(RCC_CR_PLLON);              // Отключаем PLL
    while((RCC->CR & RCC_CR_PLLRDY) == 1){}

    RCC->CFGR &=~(RCC_CFGR_SW_PLL | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMUL);  // Обнуление CFGR
    RCC->CFGR |= RCC_CFGR_SW_PLL;
    RCC->CFGR |= RCC_CFGR_PLLMUL2;         // Умножить частоту PLL_MUL (2...16)

    RCC->CR |= RCC_CR_PLLON;                // Запустить PLL
    while((RCC->CR &RCC_CR_PLLRDY)==0){}    // Ожидание готовности PLL

    RCC->CFGR &= ~(RCC_CFGR_SW);            // Очистить биты SW0 и SW1
    RCC->CFGR |= RCC_CFGR_SW_PLL;           // Тактирование с выхода PLL
    while((RCC->CFGR & RCC_CFGR_SW) != RCC_CFGR_SW_PLL) {}  // Ожидание переключения на PLL
Где что не так?
А ещё у меня что то МК в ресет уходит раз в 200-300 мс. Это вижу по контрольному светодиоду на пине PF4. Может я его перегрел когда ставил? Маловероятно. Такого циклического сброса не происходило на первой макетке с STM32F030F4P6.
Реклама
Chettuser

Сообщение Chettuser »

Мучаю HAL. В нём есть HAL_Delay(ms);
Keil почему то не воспринимает ms больше 300. ЧЯДНТ?
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 101
Зарегистрирован: Пт окт 03, 2014 14:50:06

Сообщение Jeka_M »

Chettuser писал(а):Keil почему то не воспринимает ms больше 300
Прям так и пишет: "Я не воспринимаю ms больше 300"?
Chettuser

Сообщение Chettuser »

Разбираюсь с DMA.
Если я задействую DMA для работы, например с SPI, то я ведь не смогу задействовать его для работы например с внешней памятью? Только переконфигурировав?
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Сообщения: 115
Зарегистрирован: Ср дек 12, 2012 20:08:08

Сообщение gessor »

Есть два мелких вопроса по микроконтроллерам. Правильно понимаю, что если при написании программы на асме поставить директиву .ORG ,то программный счетчик будет все равно прощелкивать пустые ячейки?

И с какой целью обычно применяется внешняя RC цепочка? Чем может быть недостаточно внутреннего тактирования или нормального кварца?
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 25997
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Директива ORG не имеет никакого отношения к исполнению кода. Это директива РАЗМЕЩЕНИЯ кода в программной памяти.
Исполнение зависит от КОМАНД контроллера.
"Обычно" никто внешнюю RC-цепочку для целей тактирования не ставит. Обычно внешняя RC-цепь служит целям СБРОСА.
Хотя и это в большинстве случаев совершенно не требуется. Контроллер содержит на борту и супервизор (BOR) и таймер сброса.
Реклама
Встал на лапы
Сообщения: 115
Зарегистрирован: Ср дек 12, 2012 20:08:08

Сообщение gessor »

Допустим, с помощью директивы мы разместили код в середине памяти. Значит ли это что МК до начала выполнения кода потратит часть времени на прощелкивание пустых ячеек?
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 25997
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Пустых ячеек не бывает. По любому адресу есть какой то код, который интерпретируется контроллером как некая команда.
Если эта команда NOP, то счетчик команд действительно будет просто инкрементироваться. А если, например, первая команда будет переходом на адрес ORG, то программа ничего "прощелкивать" не будет.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18795
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

КРАМ писал(а):"Обычно" никто внешнюю RC-цепочку для целей тактирования не ставит.
помнится, у каких-то PIC-ов имелась возможность затактироваться от RC-генератора с внешней RC-цепочкой. не стану утверждать, что такая практика в настоящее время искоренилась всеми производителями МК.
так что обычно это или нет, зависит от контекста.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 25997
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

ARV писал(а):помнится, у каких-то
"Помнится" к случаю "обычно" никак отнести нельзя.
Из контекста вопроса следует лишь цепь сброса.
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Чт окт 01, 2015 13:59:33

Сообщение SEMuil »

Вопросик!
Пишу программку на CodeVisionAVR V2.04.4a для ATtiny13A (фьюзы не трогаю, т.е. частота 1,2 МГц)

У меня неправильно работает пауза,
часть кода:

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

PORTB=0b00000100;
DDRB=0b00000001;

TCCR0A=0b10100011;
TCCR0B=0b00000010;    
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;

GIMSK=0x00;
MCUCR=0x00;

TIMSK0=0x00;

ACSR=0x80;
ADCSRB=0x00;

while (OCR0A<maxA) {     // плавный розжиг LED1
 OCR0A++;    
 delay_ms(10); }; 

t=t_eep;
if (t>5) t=1; 
delay_ms(t*1000);        // ожидание 
В общем ожидание, delay_ms(1000); пролетает за мгновение, а должно быть 1 сек. На практике 1с. получается около delay_ms(9000);

Как в теории рассчитать эту паузу? Мне допустим надо точно 3с.
Последний раз редактировалось SEMuil Пн дек 21, 2015 16:19:13, всего редактировалось 1 раз.
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Чт окт 01, 2015 13:59:33

Сообщение SEMuil »

пока только одно на ум приходит, по умолчанию Тинька работает на другой частоте. (поэтому компилятор не правильно рассчитывает значение delay )
Фьюзы по умолчанию:
Изображение
Chettuser

Сообщение Chettuser »

ARV писал(а):у каких-то PIC-ов имелась возможность затактироваться от RC-генератора с внешней RC-цепочкой.
У 16-й и 18-й серий. Про 24-ю и 33-ю ничего не скажу, я с PIC переехал раньше, чем добрался до этих серий.
Друг Кота
Сообщения: 26671
Зарегистрирован: Пт май 18, 2007 22:56:58

Сообщение Upgrader »

SEMuil писал(а):Как в теории рассчитать эту паузу?
Проверьте фьюзы и правильность выставленной частоты в настройках проекта cvavr. Если все верно, то и задержка будет правильно точно идти.
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Чт окт 01, 2015 13:59:33

Сообщение SEMuil »

Upgrader писал(а):
SEMuil писал(а):Как в теории рассчитать эту паузу?
Проверьте фьюзы и правильность выставленной частоты в настройках проекта cvavr. Если все верно, то и задержка будет правильно точно идти.
Фьюзы я не трогаю, следовательно 1.2 МГц.
Поковырялся в настройках, нашёл это:
Изображение
Про эти настройки вы говорите?

4.800 000 Это я поменял для теста. Завтра буду прошивать, тестировать. (стояло 1.200 000)
Друг Кота
Сообщения: 26671
Зарегистрирован: Пт май 18, 2007 22:56:58

Сообщение Upgrader »

SEMuil писал(а):Фьюзы я не трогаю, следовательно 1.2 МГц.
Нет, не следовательно.
Надо прочитать их и посмотреть :) Это не сложно. Найдите любой калькулятор фьюзов, и сравните с ним то что у вас есть.
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Чт окт 01, 2015 13:59:33

Сообщение SEMuil »

Upgrader писал(а):
SEMuil писал(а):Фьюзы я не трогаю, следовательно 1.2 МГц.
Нет, не следовательно.
Надо прочитать их и посмотреть :) Это не сложно. Найдите любой калькулятор фьюзов, и сравните с ним то что у вас есть.
Пробежался на калькуляторе, значение фьюз выкладывал ранее:
Изображение
кто поопытнее, скажите какая тут частота работы чипа?

мои мысли 9,6 + включён делитель на 8 = 1,2 :dont_know:
akl
Друг Кота
Сообщения: 4475
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Судя по младшему байту конфигурации установлена частота 4,8МГц без делителя и максимальное время задержки включения.
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Чт окт 01, 2015 13:59:33

Сообщение SEMuil »

Опытным путём, только при установке в программе 9,6 МГц промежутки времени похожи на правду. мда ...
а ещё же частота зависит от напряжения питания, я правильно понимаю? (у меня будет работать на 5В, а тестирую я от компа там где то 4,5В в итоге будет одинаково?)
Друг Кота
Сообщения: 3342
Зарегистрирован: Ср янв 02, 2013 08:37:35

Сообщение АСУ »

SEMuil писал(а):кто поопытнее, скажите какая тут частота работы чипа?
Судя по картинке, МК тактируется от внутреннего генератора 1,2 МГц, это заводская установка.
Ответить

Вернуться в «Разные вопросы по МК»