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

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

  1. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Заранее извиняюсь. Но сломал голову, не могу найти. Задал вопрос с Интернете - ни одного внятного ответа. Но без заданной частоты, компилятор не расчитает задержки. Или расчитает по какому-то неизвестному дефолту.
     
  2. макрос F_CPU
     
    parovoZZ нравится это.
  3. Airbus

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

  4. parovoZZ

    parovoZZ Гуру

    добавлю - вставлять перед #include того файла, который рассчитывает задержки!!!
     
  5. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Создаю проект. Задаю, как Студия требует, имя процессора ATtiny15. Вставляю в Source Files готовый ассемблерный файл. Больше ничего. Компилирую. Без проблем. -> Скорость не та.
    Мне нужно в ассемблерный код добавить директиву задания скорости процессора ? Перед include ? Я правильно понял ?

    #define F_CPU 1600000 // Мне нужно 1.6 МГц. Её тут не было !
    .include "tn15def.inc"

    Добавляю директиву. Компилирую без проблем. Ничего не меняется.
    Какой файл в Студии расчитывает задержки ? Перед чем надо "вставлять" ?
    ПС. Странная однако "Студия" - самый важный параметр фиг задашь без головоломки.
     
    Последнее редактирование: 22 фев 2019
  6. parovoZZ

    parovoZZ Гуру

    какие задержки на асме? Там программист все сам делает.

    Вешай внешний кварц. По другому никак.
     
    Ariadna-on-Line нравится это.
  7. Airbus

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

    Я же ссылку дал?Debag-Avr simulations options Не ОНО?
     
    Последнее редактирование: 23 фев 2019
  8. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Да нашел я это. Но аболютно не понимаю логику. Дебаг-меню можно увидеть активным только после компиляции. А под какую скорость компилятор сделает программу, если мы ее еще не задавали ? Из дебага я могу потом задать скорость проца. И что, чтобы потом снова компилировать ? Может и так, но это же не логично ?! Или я не понимаю ?
    ПС. Мужик на вашей ссылке мат... тоже удивляется.
     
  9. Airbus

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

    Не помню если честно.Года три не писал на асме.
     
  10. parovoZZ

    parovoZZ Гуру

    В асме- не под какую. Надо четко знать, под какой кварц написана программа. Такой кварц и прицепить. Да даже на сях компилятору не надо передавать значение частоты кварца, если к этой частоте в программе нет привязки.
     
    Ariadna-on-Line нравится это.
  11. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Блиин. Паровозу мои почтения. Это же АССЕМБЛЕР. Тут всё саааааам. Это надо же, как привык к языку "высокого полета". А когда-то на ДОС-ассемблере шустро резидентные программы писАл...
    ПС. Аирбусу - спасибо за ссылку.
    Не знаток Си, но разве там нет функций типа delay() ? Без частоты проца компилятор ее не сможет расчитать.
     
    Последнее редактирование: 23 фев 2019
  12. parovoZZ

    parovoZZ Гуру

    Есть. Есть delay_us() и есть delay_ms(). Для этого надо заинклюдить delay.h. Но перед ним надо задать значение макросу f_cpu, потому как этот макрос прописан в этом заголовке. Но эти функции я использую только при отладке. Дальше все паузы у меня на таймерах. Соответсвенно, макрос f_cpu я удаляю вместе с этим заголовочником, если он (макрос f_cpu) больше у меня не фигурирует. Но иногда я его тоже вставляю для расчета каких-то величин на этапе компиляции.
     
  13. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Все-таки вы указываете частоту. Куда ее компилятор потом прячет - это уже его "кухня". По другому быть не может - по логике. "Квант времени должен быть задан".
     
  14. parovoZZ

    parovoZZ Гуру

    Это макрос. Компилятору он нужен только в том случае, если где-то в файле используется значение этого макроса. Тогда компилятор вместо макроса подставит указанное число. Все. Но самому компилятору до фени, что скрывается за этим макросом - для компилятора этого всего лишь цифра и не более. Да и назвать этот макрос можно как угодно - просто в библиотеках от атмела он назван именно так.
    Никакого кванта времени не существует! Даже не знаю, как ещё объяснить.
     
  15. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Увидев заданную ВАМИ частоту процессора, компилятор СИ вычисляет длительность одного машинного такта. Вот это и есть его квант времени. А потом расставляет нужное количество тактов в функциях типа delay (), деля в процессе компиляции нужные вам интервалы времени на длительность такта. ВОТ КАК-ТО ТАК-ТО.
     
    Последнее редактирование: 23 фев 2019
  16. parovoZZ

    parovoZZ Гуру

    Компилятор этого не делает. Ему это ни к чему. В функции типа delay на этапе компиляции вычисляется количество nop ов, которое необходимо вставить в программу для организации необходимой паузы. Но это забота программиста, а не компилятора. Если говорить на чистом русском, то компилятору абсолютно насрать, на какой частоте работает МК. Вместо F_CPU можно вставить любое другое название макроса и все будет работать также.
     
  17. Airbus

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

    ЕМНИП частота по дефолту в Студии 4 мГц.Раньше я и писал по дефолту под кварц 4 мгц и Тини2313.Поэтому ручками ничего не менял.
     
  18. parovoZZ

    parovoZZ Гуру

    Нет там такого.
     
  19. parovoZZ

    parovoZZ Гуру

    Это у вас абдурино-стайл мышление уже. Я потому и борюсь с этим говном, чтоб вот такие бессмыслицы не рождались в неокрепших головах.
     
  20. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Эй. Мы не о разных вещах толкуем ? В Студии очевидно два компилятора, или два режима - ассемблерный и СИ-шный. Ессно второму надо знать частоту, а первому - нет . Я сам вчера заблудился, что поднял тему. Спасибо Паровоз просветил. Всё тему можно закрыть.
     
    Последнее редактирование: 23 фев 2019