Где в AVR Studio 4 задаётся частота процессора ???????

Тема в разделе "Микроконтроллеры AVR", создана пользователем Ariadna-on-Line, 22 фев 2019.

  1. parovoZZ

    parovoZZ Гуру

    Нет, не правильно. Если в коде встречается макрос, определяющий частоту кварца, то значение макроса необходимо определять. Грамотно написанный код без определения данного макроса не должен компилироваться. Но как минимум предупреждение в консоль выдать обязан.

    А вот это не верно в корне. Какие-то фантазии (с). Компилятор такой ерундой не занимается.
     
  2. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Моя дочь в 3 года на это примерно бы сказала - "Канесно удалит, если она не нузная, но дети-то останутся". Дети - в виде расчитанных из нее при компиляции количеств нопов, циклов, значений регистров таймеров.
    Кстати, сохранить именно значение частоты, на которую программа скомпилирована полезно для самоадаптации проги. Например задать проге, что на пин А - всегда подается, например 50 герц. И подпрограмму самопроверки частоты своего кварца и еесно пересчета всех временных констант. Ну это примерно как все живое на Земле адаптирует свои ритмы по периоду суток.
     
    Последнее редактирование: 27 фев 2019
  3. DetSimen

    DetSimen Guest

    не обязательно самопроверяца. достаточно гденить запомнить значение F_CPU
     
  4. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Никто не говорит об обязательности. (Фу ненавижу обязаловки). Но, я к примеру, нахально перепаяю кварц у железяки, а она засечет, что периферия не отвечает, проверит по внешнему (гарантированному) сигналу и самоадаптируется под новый (кварц). Вот для этого ей пригодится запомненная F_CPU.
     
  5. AlexU

    AlexU Гуру

    Да уж развели балабольство на несколько страниц, а правильный ответ на поставленный вопрос состоит из двух слов:
    А что касается всех рассуждений на тему определения частоты в программе, то тут отчасти можно согласиться с высказываниями Паравозза, но с оговоркой -- если являетесь любителем поизобретать велосипеды, да такие, чтобы цепная передача шла на переднее колесо.
    Всё дело в том, что люди которые дорожат своим временем, будут пользоваться уже готовыми решениями (которые были вылизаны почти до идеала за годы использования). И одним из таких готовых решений является библиотека avr-libc, которая является самой распространённой для AVR. Так вот в этой библиотеке предусмотрен макрос F_CPU, который отвечает за определение частоты, на которой должен работать микроконтроллер, для корректной работы прошивки. И в связи с тем, что на базе этой библиотеки основаны множество других прошивок и библиотек, то адекватные разработчики используют именно этот макрос для вычисления других параметров, зависимых от частоты микроконтроллера.
    И что касается:
    типа компилятор не занимается вычислением длительности и других параметров, связанных с таковой частотой. Всё зависит от стиля написания программы. В большинстве случаев расчётом таких параметров должен заниматься именно компилятор. Вот к примеру расчёт значений регистров UBRRn(H|L), которые задают скорость USART (интерфейса Serial). Как поступит грамотный разработчик? Он скажет компилятору: "Эй, компилятор, вот тебе частота МК, вот тебе скорость на которой должны передаваться/приниматься данные, а вот тебе алгоритм расчёта -- ну-ка посчитай мне значения регистров и зашей эти значения в прошивку! И впредь, какую-бы я частоту не задавал, сам всё считай!". А что сделает начинающий программист -- он возьмёт калькулятор, документацию и начнёт тратить своё драгоценное (а может и не очень, он же всё-таки начинающий) на подсчёт значений регистров или, например, будет каждый раз лазить в доку и искать нужную таблицу:
    Вот зачем? Если есть умный компилятор, который всё может посчитать.
    Не только. Частота нужна для таймеров, интерфейсов (I2C (master), SPI (master), USART (async)). Но, повторюсь, если грамотно подходить к написанию кода...
     
    ИгорьК, Airbus и Ariadna-on-Line нравится это.
  6. Airbus

    Airbus Радиохулиган Модератор

    От теперь все стало на места.