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

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

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

    Airbus Радиохулиган

  4. parovoZZ

    parovoZZ Гуру

    добавлю - вставлять перед #include того файла, который рассчитывает задержки!!!
     
  5. Создаю проект. Задаю, как Студия требует, имя процессора 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. Да нашел я это. Но аболютно не понимаю логику. Дебаг-меню можно увидеть активным только после компиляции. А под какую скорость компилятор сделает программу, если мы ее еще не задавали ? Из дебага я могу потом задать скорость проца. И что, чтобы потом снова компилировать ? Может и так, но это же не логично ?! Или я не понимаю ?
    ПС. Мужик на вашей ссылке мат... тоже удивляется.
     
  9. Airbus

    Airbus Радиохулиган

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

    parovoZZ Гуру

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

    parovoZZ Гуру

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

    parovoZZ Гуру

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

    parovoZZ Гуру

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

    Airbus Радиохулиган

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

    parovoZZ Гуру

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

    parovoZZ Гуру

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