freebits Опубликовано 12 января, 2019 Поделиться Опубликовано 12 января, 2019 (изменено) Насколько я понял, без внешней частотозадающей цепи с кварцевым резонатором при установке директивы #define F_CPU 8000000UL рабочая частота микроконтроллера должна быть 8 МГц. Но на практике это не так. Если в тело программы записать такой код void main(void) { while(1) { PORTA ^= 0b00100000; } } То на выводе PA5 будет сигнал частотой всего 35 кГц, т.е. частота выполнения записи в порт - 70 кГц, что в 100 раз меньше заявленной. Если подключить таймер без делителя (т.е. используется базовая частота), и вставить строчку PORTA ^= 0b00100000 в тело обработчика прерывания при переполнении счетчика таймера, то частота сигнала будет вовсе 5 кГц, т.е. частота срабатывания таймера 10 кГц. void timer0_init(void) //Инициализация таймера TIMER0 { TIMSK |= (1 << TOIE0); TCCR0 = (1 << CS00) | (0 << CS01) | (0 << CS02); // частота с делителем 1 TCNT0=254; //начальное значение таймера } ISR (TIMER0_OVF_vect) //обработка прерывания при переполнении счетчика таймера TIMER0 { PORTA ^= 0b00100000; TCNT0=254; //начальное значение таймера } Вопрос почему рабочая частота такая низкая ? Даже если учесть что операция чтения/записи в регистр PORTA и операция XOR занимает 10 тактов (хотя я уверен что меньше), все равно получается частота гораздо ниже - около 700 кГц. И почему переполнение счетчика таймера происходит не с базовой частотой, а с в 800 раз меньшей? Изменено 12 января, 2019 пользователем freebits 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
_abk_ Опубликовано 12 января, 2019 Поделиться Опубликовано 12 января, 2019 (изменено) 20 минут назад, freebits сказал: при установке директивы Источник тактирования определяется установленными фьюзами, разве нет? Изменено 12 января, 2019 пользователем _abk_ 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
andrusha152 Опубликовано 12 января, 2019 Поделиться Опубликовано 12 января, 2019 18 минут назад, freebits сказал: рабочая частота микроконтроллера должна быть 8 МГц При условии, что правильно запрограммированы Fusebits. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
freebits Опубликовано 12 января, 2019 Автор Поделиться Опубликовано 12 января, 2019 7 минут назад, _abk_ сказал: Источник тактирования определяется установленными фьюзами, нет? 6 минут назад, andrusha152 сказал: При условии, что правильно запрограммированы Fusebits. Спасибо, про это я был не в курсе. Сейчас буду изучать что это. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 12 января, 2019 Поделиться Опубликовано 12 января, 2019 (изменено) И ещё, 39 минут назад, freebits сказал: при установке директивы #define F_CPU вы сообщаете библиотекам, которые используют частоту МК для расчётов, (и себе для них же) на какой частоте работает МК. Если в коде не используются вычисления с частотой, то и использовать F_CPU не имеет смысла. Читаем, как работает #define. Изменено 12 января, 2019 пользователем Гость 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
freebits Опубликовано 12 января, 2019 Автор Поделиться Опубликовано 12 января, 2019 (изменено) 16 минут назад, a.sosh сказал: вы сообщаете библиотекам, которые используют частоту МК для расчётов, (и себе для них же) на какой частоте работает МК. Если в коде не используются вычисления с частотой, то и использовать F_CPU не имеет смысла. Читаем, как работает #define. Спасибо, теперь понятно почему delay неправильно отрабатывает (дольше чем должно). Я знаю как работает #define, мне почему-то изначально втемяшилось что этой строчкой задается значение некоего конфигурационного регистра, и особо не вдавался в ее смысл. Изменено 12 января, 2019 пользователем freebits 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
freebits Опубликовано 12 января, 2019 Автор Поделиться Опубликовано 12 января, 2019 (изменено) Про фьюзы изучил несколько статей. В принципе все ясно, в калькуляторе поглядел какие биты мне нужно установить. Только ни в одной статье не сказано в каком месте они задаются. Можете подсказать как это делается? В среде разработки? Если да, то где эти установки находятся в Atmel Studio? А все нашел - в программе для программатора МiniPro есть, попробую выставить)) Да, все вышло, спасибо больше всем за помощь! Микросхема в разы быстрее стала работать!)) Изменено 12 января, 2019 пользователем freebits 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.