Added init for timer1 (TCMT1) with cpu-clock/256
Changed clock() to timer1 (TCNT1)
This commit is contained in:
		
							parent
							
								
									850421e3cc
								
							
						
					
					
						commit
						64280423fa
					
				@ -20,103 +20,116 @@
 | 
			
		||||
    <OverrideVtor>false</OverrideVtor>
 | 
			
		||||
    <CacheFlash>true</CacheFlash>
 | 
			
		||||
    <ProgFlashFromRam>true</ProgFlashFromRam>
 | 
			
		||||
    <RamSnippetAddress />
 | 
			
		||||
    <RamSnippetAddress>0x20000000</RamSnippetAddress>
 | 
			
		||||
    <UncachedRange />
 | 
			
		||||
    <preserveEEPROM>true</preserveEEPROM>
 | 
			
		||||
    <OverrideVtorValue />
 | 
			
		||||
    <OverrideVtorValue>exception_table</OverrideVtorValue>
 | 
			
		||||
    <BootSegment>2</BootSegment>
 | 
			
		||||
    <ResetRule>0</ResetRule>
 | 
			
		||||
    <eraseonlaunchrule>0</eraseonlaunchrule>
 | 
			
		||||
    <EraseKey />
 | 
			
		||||
    <AsfFrameworkConfig>
 | 
			
		||||
      <framework-data xmlns="">
 | 
			
		||||
  <options />
 | 
			
		||||
  <configurations />
 | 
			
		||||
  <files />
 | 
			
		||||
  <documentation help="" />
 | 
			
		||||
  <offline-documentation help="" />
 | 
			
		||||
  <dependencies>
 | 
			
		||||
    <content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.40.0" />
 | 
			
		||||
  </dependencies>
 | 
			
		||||
</framework-data>
 | 
			
		||||
        <options />
 | 
			
		||||
        <configurations />
 | 
			
		||||
        <files />
 | 
			
		||||
        <documentation help="" />
 | 
			
		||||
        <offline-documentation help="" />
 | 
			
		||||
        <dependencies>
 | 
			
		||||
          <content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.40.0" />
 | 
			
		||||
        </dependencies>
 | 
			
		||||
      </framework-data>
 | 
			
		||||
    </AsfFrameworkConfig>
 | 
			
		||||
    <avrtool>com.atmel.avrdbg.tool.simulator</avrtool>
 | 
			
		||||
    <avrtoolserialnumber />
 | 
			
		||||
    <avrdeviceexpectedsignature>0x1E950F</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>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
 | 
			
		||||
    <ToolchainSettings>
 | 
			
		||||
      <AvrGcc>
 | 
			
		||||
  <avrgcc.common.Device>-mmcu=atmega328p -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p"</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\ATmega_DFP\1.2.209\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\ATmega_DFP\1.2.209\include</Value>
 | 
			
		||||
    </ListValues>
 | 
			
		||||
  </avrgcc.assembler.general.IncludePaths>
 | 
			
		||||
</AvrGcc>
 | 
			
		||||
        <avrgcc.common.Device>-mmcu=atmega328p -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p"</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\ATmega_DFP\1.2.209\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\ATmega_DFP\1.2.209\include</Value>
 | 
			
		||||
          </ListValues>
 | 
			
		||||
        </avrgcc.assembler.general.IncludePaths>
 | 
			
		||||
      </AvrGcc>
 | 
			
		||||
    </ToolchainSettings>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
 | 
			
		||||
    <ToolchainSettings>
 | 
			
		||||
      <AvrGcc>
 | 
			
		||||
  <avrgcc.common.Device>-mmcu=atmega328p -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p"</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\ATmega_DFP\1.2.209\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\ATmega_DFP\1.2.209\include</Value>
 | 
			
		||||
    </ListValues>
 | 
			
		||||
  </avrgcc.assembler.general.IncludePaths>
 | 
			
		||||
  <avrgcc.assembler.debugging.DebugLevel>Default (-Wa,-g)</avrgcc.assembler.debugging.DebugLevel>
 | 
			
		||||
</AvrGcc>
 | 
			
		||||
        <avrgcc.common.Device>-mmcu=atmega328p -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p"</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\ATmega_DFP\1.2.209\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\ATmega_DFP\1.2.209\include</Value>
 | 
			
		||||
          </ListValues>
 | 
			
		||||
        </avrgcc.assembler.general.IncludePaths>
 | 
			
		||||
        <avrgcc.assembler.debugging.DebugLevel>Default (-Wa,-g)</avrgcc.assembler.debugging.DebugLevel>
 | 
			
		||||
      </AvrGcc>
 | 
			
		||||
    </ToolchainSettings>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
 | 
			
		||||
@ -20,13 +20,13 @@ uint16_t boost_frequency = 2000;		// 2kHz frequency
 | 
			
		||||
 | 
			
		||||
uint8_t boost_enable	=	0;
 | 
			
		||||
uint8_t boost_highVoltage_nextHigh	=	1;
 | 
			
		||||
clock_t boost_highVoltage_nextTick	=	0;
 | 
			
		||||
uint16_t boost_highVoltage_nextTick	=	0;
 | 
			
		||||
 | 
			
		||||
// Todo [CRITICAL]: Clock does not exist! Use timer.
 | 
			
		||||
 | 
			
		||||
uint8_t signalOutput_enable	=	0;
 | 
			
		||||
uint8_t signalOutput_nextHigh	=	1;
 | 
			
		||||
clock_t signalOutput_nextTick	=	0;
 | 
			
		||||
uint16_t signalOutput_nextTick	=	0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int main()
 | 
			
		||||
@ -51,6 +51,9 @@ int main()
 | 
			
		||||
    EICRA |= (1 << ISC11)|(1 << ISC10);	// On rising edge		[Code: 11]
 | 
			
		||||
    EIMSK |= (1 <<INT1);				// Activate Interrupt INT1
 | 
			
		||||
	
 | 
			
		||||
	// Init timer1
 | 
			
		||||
	timer1_init();
 | 
			
		||||
	
 | 
			
		||||
    sei();		// Activate global interrupts
 | 
			
		||||
	
 | 
			
		||||
	// Endless loop
 | 
			
		||||
@ -59,7 +62,7 @@ int main()
 | 
			
		||||
		// HighVoltage boosting
 | 
			
		||||
		if(boost_enable == 1)
 | 
			
		||||
		{
 | 
			
		||||
			if(clock() >= boost_highVoltage_nextTick)	// If we are on or after the tick it should be executed
 | 
			
		||||
			if(TCNT1 >= boost_highVoltage_nextTick)	// If we are on or after the tick it should be executed
 | 
			
		||||
			{
 | 
			
		||||
				// Set pin according to next exec
 | 
			
		||||
				if(boost_highVoltage_nextHigh == 1)		// Set it high
 | 
			
		||||
@ -74,7 +77,7 @@ int main()
 | 
			
		||||
				}
 | 
			
		||||
				
 | 
			
		||||
				// Calculate when next high/low should be set
 | 
			
		||||
				boost_highVoltage_nextTick = clock() + F_CPU * 1/(boost_frequency/2);		// Half of time it should be high/low
 | 
			
		||||
				boost_highVoltage_nextTick = TCNT1 + F_CPU/256 * 1/(boost_frequency/2);		// Half of time it should be high/low
 | 
			
		||||
			}
 | 
			
		||||
		}else
 | 
			
		||||
		{
 | 
			
		||||
@ -91,7 +94,7 @@ int main()
 | 
			
		||||
		// Signal output
 | 
			
		||||
		if(signalOutput_enable)
 | 
			
		||||
		{
 | 
			
		||||
			if(clock() >= signalOutput_nextTick)	// If we are on or after the tick it should be executed
 | 
			
		||||
			if(TCNT1 >= signalOutput_nextTick)	// If we are on or after the tick it should be executed
 | 
			
		||||
			{
 | 
			
		||||
				// Set pin according to next exec
 | 
			
		||||
				if(signalOutput_nextHigh == 1)		// Set it high
 | 
			
		||||
@ -110,12 +113,34 @@ int main()
 | 
			
		||||
				}
 | 
			
		||||
				
 | 
			
		||||
				// When the signal should stop
 | 
			
		||||
				signalOutput_nextTick = clock() + F_CPU * 0.2; 		// nextTick is in 0.2s
 | 
			
		||||
				signalOutput_nextTick = TCNT1 + F_CPU/256 * 0.2; 		// nextTick is in 0.2s
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void timer1_init()
 | 
			
		||||
{
 | 
			
		||||
	// set up timer with prescaler = 256
 | 
			
		||||
	TCCR1B |= (1 << CS12);
 | 
			
		||||
	
 | 
			
		||||
	// initialize counter
 | 
			
		||||
	TCNT1 = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ISR(TIMER1_COMPA_vect){
 | 
			
		||||
 | 
			
		||||
	//Code Kanal A Timer 1
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ISR(TIMER1_COMPB_vect){
 | 
			
		||||
 | 
			
		||||
	//Code Kanal B Timer 1
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Interrupt-handler
 | 
			
		||||
 * ISR - Interrupt service routine
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user