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

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

  1. Airbus

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

    То есть Вы просто тупо врёте.Пользуясь что я отдыхал на Бали и не мог залезть ни в Студию ни в Кодвижн?
     
  2. Airbus

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

  3. Airbus

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

    И в Кодвижн частота задаётся.К чему бы это?
     
  4. Daniil

    Daniil Гуру

    Мне кажется, что идёт недопонимание кому нужна частота.
    Как паровоз уже говорил (а проверить легко) в асме нет частотозависимых команд.
    При компиляции программы написанной на Си код "превращается" в набор операторов на асме, и опять таки, в асме нет частотозависимых операторов.
    Но человекам удобно работать с понятными(ощущаемыми) им величинами, т.е. Гц и сек. Поэтому умные дяди написали процедурки пересчета Гц и сек в нужные для замеров времени коэффициенты (регистры предделителей, счетчики..). Если после всех умных людей программист хочет отмерить нужное ему время, то он пользуется готовыми процедурами, а значит ему нужно указать частоту (и не гемороится с правильным расчетом делителей).
    Например в atsamg55j19 частота нигде не указывается явно, но пользователь знает, что должен тактировать часовым кварцем, а от него идет синхронизация с фап до 120 МГц. Если он хочет опустить частоту до 8 МГц, записывает нужный ему (расчитанный, конечно, самим МК) делитель в соответствующий регистр и получает нужную ему частоту тактирования. И отталкиваясь от нее собирает нужные делители для таймеров, делеев и т.п. Программист (пользуясь готовыми процедурками/макросами), не компилятор.
    Господа, нас разбаловали!
     
    parovoZZ нравится это.
  5. Airbus

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

    А delay?А бодрейт?Или опять как советует ПаровоЗЗ сделаем ассемблерные вставки заюзаем регистры и каждый раз будем заряжать их магическими числами чтобы получить необходимые задержки?Так ведь тоже можно.И тогда лучше всё на асме написать?Не?
     
  6. parovoZZ

    parovoZZ Гуру

    в ассемблере всего этого НЕТ. Бодрейт я сам на калькуляторе считал. Потом макрос написал)) Delay можно реализовать по разному. Но важно понимать - delay реализовывает НЕ_КОМПИЛЯТОР!!!! а ПРОГРАММИСТ. Так уж повелось, что псевдоостанов реализуется через асм команду nop. Это команда тупо декрементирует программный счетчик. На это уходит ровно один такт процессора. Я видел 3-4 реализации delay. Какие-то точно вычисляют интервал, какие-то нет - в попугаях) Вычислять правильную паузу - это дело ПРОГРАММИСТА, а не_компилятора. Он про время вообще ничего не знает.
    Все опции GNU С компилятора перечислены здесь:
    https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
    Если найдешь среди них частоту кварца MCU/CPU - я покупаю банку селедки, пару бутылок и еду в авиакишлак.
    Не ту ссылку дал. Вот все опции
    https://gcc.gnu.org/onlinedocs/gcc/Option-Index.html#Option-Index
     
  7. Daniil

    Daniil Гуру

    Именно это и происходит, в препроцессинге, после которого и идёт компиляция (но во всех ИДЭ это всё названо компиляцией), о которой тут говорили в начале, а потом всё смешалось кони, люди...
     
    parovoZZ нравится это.
  8. parovoZZ

    parovoZZ Гуру

    никто и ничто не мешает всё это делать на сях, что я здесь неоднократно и демонстрирую. Код будет не сильно толще.
     
  9. b707

    b707 Гуру

    паровоз прав, как ни странно
     
    Последнее редактирование: 27 фев 2019
    DetSimen и Daniil нравится это.
  10. parovoZZ

    parovoZZ Гуру

    Да я совсем не о том. Здесь люди думают, что магическим f_cpu, my_f_cpu мы передаём частоту кварца. Это не так. Данное число олицетворяет частоту кварца, но только в нашей голове. Для препроцессора, компилятора - оно так и останется числом. Мы можем его назвать так - qurz_shaitan_da. И оно тоже будет олицетворять частоту процессора. Можем задавать величину не в Гц, и даже не МГц, а в мГц! Ну вот нам так захотелось))) В умах людей так и сидит - без задания частоты кварца код скомпилируется на какой-то дефолтной частоте и не будет работать! Да, так и есть. В атмелоском delay.h если не определена F_CPU, то она приравнивается к 1МГц, но в логе ошибок появится предупреждение. Скомпилированный код будет работать, но правильно он будет работать только на 1МГц. Дальше пошли фантазии - мол, это нужно не delay.h, а аж компилятору, т.к. расчёт задержек производит он, а не функция delay_xx().
    Собственно, если в коде нет частотозависымых функций, то F_CPU определять совсем не нужно. Но можно определить абсолютно любым значением - в коде от этого не поменяется вообще ничего. Вот как-то так)
     
    Последнее редактирование: 27 фев 2019
  11. b707

    b707 Гуру

    да я тебя отлично понял. Ты же видишь - сначала написал про тебя сатирическую ремарку - а потом вчитался в дискуссию и согласился с тобой.
    Не спорь с ними. Аридна вообще по жизни не догоняет в Си, а Аэробус просто не разобрался в споре.
     
  12. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Ну исчезнет, если программист не постарается сохранить. Но в процессе компиляции компилятор из этой частоты вычислит необходимые нопы или значения регистров таймеров, или цисло циклов. Для получения времен. И вставит их куда надо. Все равно значение частоты будет использовано. Иначе ни один стандартный временной протокол не заработает, например UART.
     
  13. parovoZZ

    parovoZZ Гуру

    Не компилятор!!! А функция!!!! Что ж вы такие тугие-то???
     
  14. parovoZZ

    parovoZZ Гуру

    Да ты шо.... у меня работал. На 200 000 бодах. Да, я знаю - частота не совсем стандартная.
    Чтобы заработало, необходимо в соответствующие регистры занести соответсвующие значения из таблицы в даташите. И у нас опять получается, что частоты кварца в коде нет, а все работает как надо. Твой ход.
     
  15. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Ага. Я понял. Я под словом "компилятор" имел в виду ПРОЦЕСС превращения текста проги в бинарный машинный код. А Паровоз - технологию работы программы GCC. Но так или иначе - в бинарном коде будет использована частота процессора.
    Я нигде не говорил, что знаю СИ. Вот схемотехнику - это другое дело.
     
  16. DetSimen

    DetSimen Guest

    инкрементирует. PC = PC + 1
     
  17. parovoZZ

    parovoZZ Гуру

    Опять не угадал. Препроцессор все посчитает и удалит ее.
     
  18. Airbus

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

    Да и я понял.частота нужна в основном для реализации функции delay.Можно сделать это и другими способами только зачем.Да в принципе можно и без частоты кварца но зачем?
    Ну ладно сдаюсь здесь я согласен на асме задержку делаю двумя способами.1-заряжаю трёхразрядный счётчик и декреминирую его до ноля.2-заряжаю таймеры.Возможно и на си так можно только вот зачем?Есть же delay?Я в кодвижн пишу там сразу установка частоты выскакивает.Поэтому может глаз и замылен.Как там в Winawr не знаю делал пару раз как написано.В makefile выставлял частоту.Всегда.
     
  19. Airbus

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

    Я правильно понял что тот makefile под 8 мГц можно вообще не трогать?Код скомпилиться и будет работать с кварцем 16 мГц?
     
  20. Airbus

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

    Как нибудь надо.Для лучшего понимания кода.Водка из Duty Free есть.с тебя селёдка и ликбез )))))