генерация на 24мгрц
- Войдите на сайт для отправки комментариев
Чт, 11/01/2018 - 21:13
Ребята, дали пример генерации частоты 24мгц. это я так понял чисты С? помогите понять как здесь формируется эта частота
void init()
{
DDRB = (1 « PB1); // -нога в которую давим частоту???
PORTB = 0; //- начальное значение в 0?
TCCR1A = (1 « COM1A1) | (0 « COM1A0) | (1 « WGM11) | (0 « WGM10); //какой то таймер не пойму какой
TCCR1B = (1 « WGM13) | (1 « WGM12) | (0 « CS11) | (0 « CS12) | (1 « CS10);
ICR1 = 0xFFFF; //??????
}
int main(void)
{
init();
while(1)
{
OCR1A = 0x4000; //вызов таймера? зачем в цикле?
_delay_ms(500); //зачем именно 500мс?
}
}
Контроллер какой для начала? Собственная частота стандартной дуины - 16 МГЦ, так что на ней 24 МГц ну никак не сгенеришь.
b707 - спасибо. вот это проясняет ситуацию. т.е. быстрее не может быть чем сам кварц? Микроконтроллер - Atmega16
fsdb, тот кто вам дал этот пример разбирается не лучше вас :)
b707 - спасибо. вот это проясняет ситуацию. т.е. быстрее не может быть чем сам кварц? Микроконтроллер - Atmega16
Не совсем так. Частота кварца здесь непричем, частота кварца необзательно равна частоте ядра, в ядре может стоять как делитель частоты, так и умножитель. Но максимальная частота. прописанная производителем для Атмеги16 - 16МГЦ. значит без оверклокинга(не знаю, возможен ли) 24 МГц никак.
да, я уточнился. мне необходимо получить 24грц.
не могли бы помочь хотя бы этот не совсем корректный пример разобрать.
мне бы только вектор в нужное направление - я там разберусь.
по сути наверное какой то таймер должен быть? или пауза, какой то делитель 16000000
да, я уточнился. мне необходимо получить 24грц.
не могли бы помочь хотя бы этот не совсем корректный пример разобрать.
мне бы только вектор в нужное направление - я там разберусь.
по сути наверное какой то таймер должен быть? или пауза, какой то делитель 16000000
Неделя на изучение книги А.В. Евстифеев "Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL" и у вас отпадут все вопросы. Можно скачать в инете
согласен, но хотелось бы все равно получить хотя бы примерное объяснение если кто может. хоть в общих словах.
Неделя на изучение книги А.В. Евстифеев "Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL" и у вас отпадут все вопросы. Можно скачать в инете
если поискать в инете статьи "что такое таймеры МК и как ими пользоваться" - с общими принципами можно разобраться за один вечер (при наличии базовых программистких знаний, конечно). А дальше открываем даташит на нужный МК и ищем описания режимов таймера и значения констант настройки.
fsdb, на обычных МК вы не сможете получить частоты выше чем тактовая/2. Нужен МК с PLL синтезатором, например attiny85 тактируясь от внутреннего 8МГц rc-генератора может выдать через таймер до 32МГц, если включить PLL синтезатор.. Правда 24МГц всё равно не получить т.к. 24 не получается целочисленным делением от тактовой 64. Тут лучше взять stm32f103c8t6 ,с ним 24МГц точно можно.
если поискать в инете статьи "что такое таймеры МК и как ими пользоваться" - с общими принципами можно разобраться за один вечер (при наличии базовых программистких знаний, конечно). А дальше открываем даташит на нужный МК и ищем описания режимов таймера и значения констант настройки.
Это вы мне советуете? :)
согласен, но хотелось бы все равно получить хотя бы примерное объяснение если кто может. хоть в общих словах.
понимаете, для этого надо искать даташит на атмегу16 и смотреть, что там означают каждый из регистров. При всей кажущейся похожести значения констант в каждом МК даже одного семейства разные.
В общем словах тут запускается таймер1, устанавливается его режим (какой - надо смотреть в ДШ) и потом устанавливается делитель частоты. По задумке автора таймер должен генерить сигнал на ноге PB1.
Нафига в основном цикле все время обновляется переменная и зачем там задержка!!! - я не понимаю, по-моему это бред. Но точно сказать не берусь, для этого надо посмотреть, какой режим устанавливает автор для таймера. может в его действиях есть какой-то смысл.
Это вы мне советуете? :)
да нет, конечно. Это не совет вам, а рассуждения на основе ваших слов....
спасибо большое. теперь понятней стало. пойду читать и гуглить. теперь хотя бы понимаю как должно быть правильно
согласен, но хотелось бы все равно получить хотя бы примерное объяснение если кто может. хоть в общих словах.
В интернете куча статей по аппаратным таймерам - https://www.google.com/search?q=avr+таймеры
Вы внимательно прочли мои предыдущие ответы? Скетч из топика не решит вашу задачу, даже если вы осмыслите каждую его строчку. Разбираться с таймерами вам конечно нужно, в идеале, но применительно к данной задаче нет смысла, ибо 24МГц вы всё равно не получите, по крайней мере на AVR. Купите готовый кварцевый генератор, благо на 24 Мгц выпускаются. Ну или делать на СТМ32.
dimax, да спасибо, внимательно - на сколько это возможно в это время суток) я ошибся 1 посте написал про 24мгерца хотя имел ввиду 24герца. я усвоил из Ваших слов что больше чем /2 не получу. спасибо.
fsdb, 24 герца можно на чём угодно получить , и с таймерами и без таймеров..
fsdb, в самом простейшем случае откройте из примеров blink.ino, замените там в delay константу на 21 и получите примеоно то, что Вы хотите. Если нужна более высокая точность и возможность выполнять какую-либо другую работу, смотрите в сторону таймеров (как Вам уже посоветовали).
dimax, да спасибо, внимательно - на сколько это возможно в это время суток) я ошибся 1 посте написал про 24мгерца хотя имел ввиду 24герца. я усвоил из Ваших слов что больше чем /2 не получу. спасибо.
Я не совсем понимаю, зачем использовать ардуино для получения столь простого результата? Простейший мультивибратор на двух мп-шках, 555-й таймер, ну уж если нужна стабильность - генератор с кварцем 32768 на 176 микросхеме и делитель на 1365 - на выходе будем иметь 24.006 герца
Я не совсем понимаю, зачем использовать ардуино для получения столь простого результата? Простейший мультивибратор на двух мп-шках, 555-й таймер, ну уж если нужна стабильность - генератор с кварцем 32768 на 176 микросхеме и делитель на 1365 - на выходе будем иметь 24.006 герца
ну хотя бы затем, что например для меня ардуина куда доступнее, чем "генератор на 176 микросхеме с кварцем 32768". Ни микрухи 176 (что это вообще?:), ни кварца у меня нет, а ардуин всяких - мешок :)
Ни чё так автор ашибси .. поправьте кто-нибудь название темы, дабы в ступор народ не вводить. :)
ну хотя бы затем, что например для меня ардуина куда доступнее, чем "генератор на 176 микросхеме с кварцем 32768". Ни микрухи 176 (что это вообще?:), ни кварца у меня нет, а ардуин всяких - мешок :)
У вас нет кварца???? Тогда мы идем к вам! :)