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

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

  1. KindMan

    KindMan Гуру

    Так у вас проблема в чем? Зачем вам в асме частота контроллера?
     
  2. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Да заклинило меня на языках высокого уровня. А этож ассемблер...Всем спасибо.
     
    Последнее редактирование: 23 фев 2019
  3. parovoZZ

    parovoZZ Гуру

    ни первому, ни второму знать частоту не нужно. У них даже таких опций нет. И все это по одной простой причине - нет в асме инструкций, которые как-то зависят от частоты. Подсчет тактов полностью лежит на плечах программиста вне зависимости от компилятора!
     
  4. Airbus

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

    А на Си?Хрень какая то.Можно вместо кварца 16 мег кварц 4 мГц пихать?
     
  5. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Вы что и на СИ вручную высчитываете количества нопов для каждой строчки delay() ? Тогда чем СИ отличается от Ассемблера ? Значит правильно, что я его не изучал. .
     
    Последнее редактирование: 23 фев 2019
  6. Airbus

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

    В кодвижн частота кварца точно есть.Причем до сотых.Я недавно писал.
     
  7. Airbus

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

    Э....Там не нопами.Там трехразрядный счетчик инкремирует до ноля.Нопы для точности до мгновения.
     
  8. parovoZZ

    parovoZZ Гуру

    Компилятор ничего не знает про кварц - ему такой параметр не передается. Программу можно написать как тупо под один кварц, так и под любой (используя директивы препроцессора). В тех участках кода, где необходимо выдерживать определенные паузы, необходимо привязываться к частоте осциллятора. Как это будет сделано - сугубо личное дело программиста.

    Но только на стадии компиляции, а не на лету. Ещё раз - компилятору все равно, как будет назван макрос, который кем-то (не компилятором!!!) из атмела был вставлен в функцию расчета задержки. Можешь написать свою функцию задержки и указывать частоту кварца внутри или передавать в параметрах. В случае отсутствия ошибок работать будет также, как атмеловская. Возможно и лучше.
     
  9. Airbus

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

    Могу ошибаться но ЕМНИП частота кварца прописывается в makefile?А в Студии в Свойствах проекта?
     
  10. parovoZZ

    parovoZZ Гуру

    вот файл со свойствами моего проекта
    <?xml version="1.0" encoding="utf-8"?>
    <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="14.0">
    <PropertyGroup>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectVersion>7.0</ProjectVersion>
    <ToolchainName>com.Atmel.AVRGCC8.C</ToolchainName>
    <ProjectGuid>dce6c7e3-ee26-4d79-826b-08594b9ad897</ProjectGuid>
    <avrdevice>ATtiny44A</avrdevice>
    <avrdeviceseries>none</avrdeviceseries>
    <OutputType>Executable</OutputType>
    <Language>C</Language>
    <OutputFileName>$(MSBuildProjectName)</OutputFileName>
    <OutputFileExtension>.elf</OutputFileExtension>
    <OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory>
    <AssemblyName>Air_Monitoring</AssemblyName>
    <Name>Air_Monitoring</Name>
    <RootNamespace>Air_Monitoring</RootNamespace>
    <ToolchainFlavour>Native</ToolchainFlavour>
    <KeepTimersRunning>true</KeepTimersRunning>
    <OverrideVtor>false</OverrideVtor>
    <CacheFlash>true</CacheFlash>
    <ProgFlashFromRam>true</ProgFlashFromRam>
    <RamSnippetAddress>0x20000000</RamSnippetAddress>
    <UncachedRange />
    <preserveEEPROM>true</preserveEEPROM>
    <OverrideVtorValue>exception_table</OverrideVtorValue>
    <BootSegment>2</BootSegment>
    <ResetRule>0</ResetRule>
    <eraseonlaunchrule>0</eraseonlaunchrule>
    <EraseKey />
    <avrtool>com.atmel.avrdbg.tool.simulator</avrtool>
    <avrtoolserialnumber />
    <avrdeviceexpectedsignature>0x1E9207</avrdeviceexpectedsignature>
    <com_atmel_avrdbg_tool_simulator>
    <ToolOptions xmlns="">
    <InterfaceProperties>
    </InterfaceProperties>
    </ToolOptions>
    <ToolType xmlns="">com.atmel.avrdbg.tool.simulator</ToolType>
    <ToolNumber xmlns="">
    </ToolNumber>
    <ToolName xmlns="">Simulator</ToolName>
    </com_atmel_avrdbg_tool_simulator>
    <AsfFrameworkConfig>
    <framework-data xmlns="">
    <options />
    <configurations />
    <files />
    <documentation help="" />
    <offline-documentation help="" />
    <dependencies>
    <content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.45.0" />
    </dependencies>
    </framework-data>
    </AsfFrameworkConfig>
    </PropertyGroup>
    <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <ToolchainSettings>
    <AvrGcc>
    <avrgcc.common.Device>-mmcu=attiny44a -B "%24(PackRepoDir)\atmel\ATtiny_DFP\1.3.172\gcc\dev\attiny44a"</avrgcc.common.Device>
    <avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
    <avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
    <avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
    <avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
    <avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
    <avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
    <avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
    <avrgcc.compiler.symbols.DefSymbols>
    <ListValues>
    <Value>NDEBUG</Value>
    </ListValues>
    </avrgcc.compiler.symbols.DefSymbols>
    <avrgcc.compiler.directories.IncludePaths>
    <ListValues>
    <Value>%24(PackRepoDir)\atmel\ATtiny_DFP\1.3.172\include</Value>
    </ListValues>
    </avrgcc.compiler.directories.IncludePaths>
    <avrgcc.compiler.optimization.level>Optimize for size (-Os)</avrgcc.compiler.optimization.level>
    <avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
    <avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
    <avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
    <avrgcc.linker.libraries.Libraries>
    <ListValues>
    <Value>libm</Value>
    </ListValues>
    </avrgcc.linker.libraries.Libraries>
    <avrgcc.assembler.general.IncludePaths>
    <ListValues>
    <Value>%24(PackRepoDir)\atmel\ATtiny_DFP\1.3.172\include</Value>
    </ListValues>
    </avrgcc.assembler.general.IncludePaths>
    </AvrGcc>
    </ToolchainSettings>
    </PropertyGroup>
    <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <ToolchainSettings>
    <AvrGcc>
    <avrgcc.common.Device>-mmcu=attiny44a -B "%24(PackRepoDir)\atmel\ATtiny_DFP\1.3.172\gcc\dev\attiny44a"</avrgcc.common.Device>
    <avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
    <avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
    <avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
    <avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
    <avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
    <avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
    <avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
    <avrgcc.compiler.symbols.DefSymbols>
    <ListValues>
    <Value>DEBUG</Value>
    </ListValues>
    </avrgcc.compiler.symbols.DefSymbols>
    <avrgcc.compiler.directories.IncludePaths>
    <ListValues>
    <Value>%24(PackRepoDir)\atmel\ATtiny_DFP\1.3.172\include</Value>
    </ListValues>
    </avrgcc.compiler.directories.IncludePaths>
    <avrgcc.compiler.optimization.level>Optimize (-O1)</avrgcc.compiler.optimization.level>
    <avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
    <avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
    <avrgcc.compiler.optimization.DebugLevel>Default (-g2)</avrgcc.compiler.optimization.DebugLevel>
    <avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
    <avrgcc.linker.libraries.Libraries>
    <ListValues>
    <Value>libm</Value>
    </ListValues>
    </avrgcc.linker.libraries.Libraries>
    <avrgcc.assembler.general.IncludePaths>
    <ListValues>
    <Value>%24(PackRepoDir)\atmel\ATtiny_DFP\1.3.172\include</Value>
    </ListValues>
    </avrgcc.assembler.general.IncludePaths>
    <avrgcc.assembler.debugging.DebugLevel>Default (-Wa,-g)</avrgcc.assembler.debugging.DebugLevel>
    </AvrGcc>
    </ToolchainSettings>
    </PropertyGroup>
    <ItemGroup>
    <Compile Include="ADC.c">
    <SubType>compile</SubType>
    </Compile>
    <Compile Include="ADC.h">
    <SubType>compile</SubType>
    </Compile>
    <Compile Include="bits_macros.h">
    <SubType>compile</SubType>
    </Compile>
    <Compile Include="main.c">
    <SubType>compile</SubType>
    </Compile>
    <Compile Include="nRF24L01P.c">
    <SubType>compile</SubType>
    </Compile>
    <Compile Include="nRF24L01P.h">
    <SubType>compile</SubType>
    </Compile>
    <Compile Include="nRF24L01P_Reg.h">
    <SubType>compile</SubType>
    </Compile>
    <Compile Include="Settings.h">
    <SubType>compile</SubType>
    </Compile>
    <Compile Include="SHT1x_via_USI.C">
    <SubType>compile</SubType>
    </Compile>
    <Compile Include="SHT1x_via_USI.h">
    <SubType>compile</SubType>
    </Compile>
    <Compile Include="Sleep.c">
    <SubType>compile</SubType>
    </Compile>
    <Compile Include="Sleep.h">
    <SubType>compile</SubType>
    </Compile>
    <Compile Include="USI_SPI.c">
    <SubType>compile</SubType>
    </Compile>
    <Compile Include="USI_SPI.h">
    <SubType>compile</SubType>
    </Compile>
    </ItemGroup>
    <Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />
    </Project>
     
    Последнее редактирование: 23 фев 2019
  11. parovoZZ

    parovoZZ Гуру

    а вот makefile
    ################################################################################
    # Automatically-generated file. Do not edit!
    ################################################################################

    SHELL := cmd.exe
    RM := rm -rf

    USER_OBJS :=

    LIBS :=
    PROJ :=

    O_SRCS :=
    C_SRCS :=
    S_SRCS :=
    S_UPPER_SRCS :=
    OBJ_SRCS :=
    ASM_SRCS :=
    PREPROCESSING_SRCS :=
    OBJS :=
    OBJS_AS_ARGS :=
    C_DEPS :=
    C_DEPS_AS_ARGS :=
    EXECUTABLES :=
    OUTPUT_FILE_PATH :=
    OUTPUT_FILE_PATH_AS_ARGS :=
    AVR_APP_PATH :=$$$AVR_APP_PATH$$$
    QUOTE := "
    ADDITIONAL_DEPENDENCIES:=
    OUTPUT_FILE_DEP:=
    LIB_DEP:=
    LINKER_SCRIPT_DEP:=

    # Every subdirectory with source files must be described here
    SUBDIRS :=


    # Add inputs and outputs from these tool invocations to the build variables
    C_SRCS += \
    ../ADC.c \
    ../main.c \
    ../nRF24L01P.c \
    ../SHT1x_via_USI.C \
    ../Sleep.c \
    ../USI_SPI.c


    PREPROCESSING_SRCS +=


    ASM_SRCS +=


    OBJS += \
    ADC.o \
    main.o \
    nRF24L01P.o \
    SHT1x_via_USI.o \
    Sleep.o \
    USI_SPI.o

    OBJS_AS_ARGS += \
    ADC.o \
    main.o \
    nRF24L01P.o \
    SHT1x_via_USI.o \
    Sleep.o \
    USI_SPI.o

    C_DEPS += \
    ADC.d \
    main.d \
    nRF24L01P.d \
    SHT1x_via_USI.d \
    Sleep.d \
    USI_SPI.d

    C_DEPS_AS_ARGS += \
    ADC.d \
    main.d \
    nRF24L01P.d \
    SHT1x_via_USI.d \
    Sleep.d \
    USI_SPI.d

    OUTPUT_FILE_PATH +=Air_Monitoring.elf

    OUTPUT_FILE_PATH_AS_ARGS +=Air_Monitoring.elf

    ADDITIONAL_DEPENDENCIES:=

    OUTPUT_FILE_DEP:= ./makedep.mk

    LIB_DEP+=

    LINKER_SCRIPT_DEP+=


    # AVR32/GNU C Compiler
    ./ADC.o: .././ADC.c
    @echo Building file: $<
    @echo Invoking: AVR/GNU C Compiler : 5.4.0
    $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny44a -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\gcc\dev\attiny44a" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
    @echo Finished building: $<


    ./main.o: .././main.c
    @echo Building file: $<
    @echo Invoking: AVR/GNU C Compiler : 5.4.0
    $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny44a -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\gcc\dev\attiny44a" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
    @echo Finished building: $<


    ./nRF24L01P.o: .././nRF24L01P.c
    @echo Building file: $<
    @echo Invoking: AVR/GNU C Compiler : 5.4.0
    $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny44a -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\gcc\dev\attiny44a" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
    @echo Finished building: $<


    ./SHT1x_via_USI.o: .././SHT1x_via_USI.C
    @echo Building file: $<
    @echo Invoking: AVR/GNU C Compiler : 5.4.0
    $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny44a -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\gcc\dev\attiny44a" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
    @echo Finished building: $<


    ./Sleep.o: .././Sleep.c
    @echo Building file: $<
    @echo Invoking: AVR/GNU C Compiler : 5.4.0
    $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny44a -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\gcc\dev\attiny44a" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
    @echo Finished building: $<


    ./USI_SPI.o: .././USI_SPI.c
    @echo Building file: $<
    @echo Invoking: AVR/GNU C Compiler : 5.4.0
    $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny44a -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\gcc\dev\attiny44a" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
    @echo Finished building: $<





    # AVR32/GNU Preprocessing Assembler



    # AVR32/GNU Assembler




    ifneq ($(MAKECMDGOALS),clean)
    ifneq ($(strip $(C_DEPS)),)
    -include $(C_DEPS)
    endif
    endif

    # Add inputs and outputs from these tool invocations to the build variables

    # All Target
    all: $(OUTPUT_FILE_PATH) $(ADDITIONAL_DEPENDENCIES)

    $(OUTPUT_FILE_PATH): $(OBJS) $(USER_OBJS) $(OUTPUT_FILE_DEP) $(LIB_DEP) $(LINKER_SCRIPT_DEP)
    @echo Building target: $@
    @echo Invoking: AVR/GNU Linker : 5.4.0
    $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS) -Wl,-Map="Air_Monitoring.map" -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--gc-sections -mmcu=attiny44a -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\gcc\dev\attiny44a"
    @echo Finished building target: $@
    "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "Air_Monitoring.elf" "Air_Monitoring.hex"
    "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex "Air_Monitoring.elf" "Air_Monitoring.eep" || exit 0
    "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objdump.exe" -h -S "Air_Monitoring.elf" > "Air_Monitoring.lss"
    "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "Air_Monitoring.elf" "Air_Monitoring.srec"
    "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-size.exe" "Air_Monitoring.elf"
    # Other Targets
    clean:
    -$(RM) $(OBJS_AS_ARGS) $(EXECUTABLES)
    -$(RM) $(C_DEPS_AS_ARGS)
    rm -rf "Air_Monitoring.elf" "Air_Monitoring.a" "Air_Monitoring.hex" "Air_Monitoring.lss" "Air_Monitoring.eep" "Air_Monitoring.map" "Air_Monitoring.srec" "Air_Monitoring.usersignatures"


    Ничего и рядом нет. А частотой в этом проекте я играю виртуозно.
     
    Последнее редактирование: 23 фев 2019
  12. parovoZZ

    parovoZZ Гуру

    А вот пример кода, который условно кварценезависмый (условно, потому как нет проверки диапазона частот осциллятора). Определяем частоту кварца:
    Код (C++):
    #define Frequency_CPU   16000000UL // умышленно не использую F_CPU!!!!
    определяем искомую частоту
    Код (C++):
    #define Freq_dis   15000UL
    и далее пишем макрос поиска значения, который необходимо поместить в регистр OCR0A для генерации частоты 15кГц:
    Код (C++):
    #define T0_Set_OCR0A    OCR0A = (Frequency_CPU/(8 * Freq_dis) - 1)
     
  13. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Где-то частота процессора будет передана непременно. Потому что интервалы времени это понятие человеческое. А машина знает только Тики-таки.
     
  14. parovoZZ

    parovoZZ Гуру

    Я ещё раз говорю - слезайте с этой шизы в виде абдурины. Вы ей все себе мозги сломали.

    В голове программиста. Просто потому, что
    Где? А теперь задумайся, как передать частоту компилятору, если эта частота троттлится процессором либо вообще меняется множитель. Да и на кой хер она ему нужна?
     
  15. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Паровоз, вдумайтесь в ситуацию. Я принесу вам конструкцию часов и попрошу написать прогу для ее работы. Какой вопрос вы зададите мне первым ? Спросите частоту кварца. А я скажу - это не важно, она вам не нужна, и что ? Напишите, скомпилируете, и будет точно показывать ?
     
    Последнее редактирование: 23 фев 2019
  16. parovoZZ

    parovoZZ Гуру

    И я напишу частотонезависимую программу и скажу, что кварц ставь какой хочешь, но частоту кварца необходимо определить значением макроса в МЕГАГЕРЦАХ
    Код (C++):
    #define chastota_kvarza    
    Т.к. я (я!!!, а не компилятор!!!) функции расчета интервалов привязал к этому макросу.
     
  17. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Ну слава богу, значит всё-таки "частоту кварца необходимо определить значением". И где открытие Америки? В любом языке (ессно не в ассемблере) вставляется директива типа #define F_OSC nnnn, где nnnn = (какие кварцы завалялись / че фьюзами начудили). Можно эту строчку вынести в Инклюде- файл, обозвать макросом. Для удобства. Главное - частота передана.
     
    Последнее редактирование: 23 фев 2019
  18. parovoZZ

    parovoZZ Гуру

    а теперь смотри. Твоя же задача
    стандартный часовой кварц. Ок. Я полностью пишу программу исключительно под этот кварц. И зачем мне
    если мой код к ней не привязан никак? Разумеется, этого делать не нужно. Но код будет работать исключительно с часовым кварцем. Так вот этот случай именно тот, с которого началась тема.
     
  19. Airbus

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

    В Вашем Makefile нет а во всех остальных есть.Так что Звездите Вы Товарищь Дарагой!
    Код (C++):
    #=======================================
    # ОСНОВНЫЕ ИНСТРУКЦИИ
    # Тип используемого микроконтроллера
    MY_MCU = atmega8
    # Частота кварцевого резонатора 8MHz)
    MY_F_CPU = 8000000
    # Название файла проекта (без расширения)
    MY_TARGET = my_test
    # Используемый программатор (для AVRDUDE)
    MY_AVRDUDE_PROGRAMMER = stk200
    # Порт, к которому подключен программатор
    MY_PROGRAMMER_PORT = lpt1
    # Уровень оптимизации (может быть 0, 1, 2, 3, s)
    # 0 - выключает оптимизацию, s - оптимизирует размер файла
    OPTIMIZATION_LEVEL = s
    #=======================================
     
    Третья решётка сверху.
     
  20. parovoZZ

    parovoZZ Гуру

    Я ещё раз объясняю - компилятору для компиляции кода частота кварца не нужна. Те загадочные 8 миллионов он просто вставляет в код в тех местах, где повстречает макрос MY_F_CPU. А что за ними скрывается - частота кварца или ещё что - компилятору до фени. Май эф цпу из кода исчезнет полностью. А Комментарии из кода он вырезает не читая.