Initial commit
This commit is contained in:
commit
85f8740e7c
|
@ -0,0 +1,29 @@
|
||||||
|
Thumbs.db
|
||||||
|
*.obj
|
||||||
|
*.exe
|
||||||
|
*.pdb
|
||||||
|
*.user
|
||||||
|
*.aps
|
||||||
|
*.pch
|
||||||
|
*.vspscc
|
||||||
|
*_i.c
|
||||||
|
*_p.c
|
||||||
|
*.ncb
|
||||||
|
*.suo
|
||||||
|
*.sln.docstates
|
||||||
|
*.tlb
|
||||||
|
*.tlh
|
||||||
|
*.bak
|
||||||
|
*.cache
|
||||||
|
*.ilk
|
||||||
|
*.log
|
||||||
|
[Bb]in
|
||||||
|
[Dd]ebug*/
|
||||||
|
*.lib
|
||||||
|
*.sbr
|
||||||
|
obj/
|
||||||
|
[Rr]elease*/
|
||||||
|
_ReSharper*/
|
||||||
|
[Tt]est[Rr]esult*
|
||||||
|
*.vssscc
|
||||||
|
$tf*/
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,22 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Atmel Studio Solution File, Format Version 11.00
|
||||||
|
VisualStudioVersion = 14.0.23107.0
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{E66E83B9-2572-4076-B26E-6BE79FF3018A}") = "horloge", "horloge\horloge.cppproj", "{DCE6C7E3-EE26-4D79-826B-08594B9AD897}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|AVR = Debug|AVR
|
||||||
|
Release|AVR = Release|AVR
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Debug|AVR.ActiveCfg = Debug|AVR
|
||||||
|
{DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Debug|AVR.Build.0 = Debug|AVR
|
||||||
|
{DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Release|AVR.ActiveCfg = Release|AVR
|
||||||
|
{DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Release|AVR.Build.0 = Release|AVR
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
|
@ -0,0 +1,31 @@
|
||||||
|
/*
|
||||||
|
* global.h
|
||||||
|
*
|
||||||
|
* Created: 28-11-17 13:53:21
|
||||||
|
* Author: Adrien
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef GLOBAL_H_
|
||||||
|
#define GLOBAL_H_
|
||||||
|
|
||||||
|
#define F_CPU 16000000UL
|
||||||
|
#include <avr/io.h>
|
||||||
|
#include <util/delay.h>
|
||||||
|
|
||||||
|
|
||||||
|
#define __BP_PLUS__ PINB0
|
||||||
|
#define __BP_MOIN__ PINB1
|
||||||
|
#define __BP_CONF__ PINB3
|
||||||
|
#define __BP_START__ PINB2
|
||||||
|
#define __TMP_BP_MAX__ 1000 //Acc?l?ration Min
|
||||||
|
#define __TMP_BP_MIN__ 50 //Acc?leration MAx
|
||||||
|
#define __TMP_BP_NLOOP_DEC__ 2 //Acc?l?ration apr?s x incr?mentation/d?cr?mentation
|
||||||
|
#define __TMP_BP_SETUP__ 500 //tmp pour rentrer dans le setup
|
||||||
|
typedef enum { NONE = 0, LCONF = 1, RCONF = 2} setup_t;
|
||||||
|
typedef enum {NORMALMODE = 0, CHRONO = 1, MINUTERIE = 2, REVEIL = 3} mode_t;
|
||||||
|
extern uint8_t appuisBPflag;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* GLOBAL_H_ */
|
|
@ -0,0 +1,86 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Store xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="AtmelPackComponentManagement">
|
||||||
|
<ProjectComponents>
|
||||||
|
<ProjectComponent z:Id="i1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/">
|
||||||
|
<CApiVersion></CApiVersion>
|
||||||
|
<CBundle></CBundle>
|
||||||
|
<CClass>Device</CClass>
|
||||||
|
<CGroup>Startup</CGroup>
|
||||||
|
<CSub></CSub>
|
||||||
|
<CVariant></CVariant>
|
||||||
|
<CVendor>Atmel</CVendor>
|
||||||
|
<CVersion>1.2.0</CVersion>
|
||||||
|
<DefaultRepoPath>G:/Program Files (x86)\Atmel\Studio\7.0\Packs</DefaultRepoPath>
|
||||||
|
<DependentComponents xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
|
||||||
|
<Description></Description>
|
||||||
|
<Files xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
|
||||||
|
<d4p1:anyType i:type="FileInfo">
|
||||||
|
<AbsolutePath>G:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\include</AbsolutePath>
|
||||||
|
<Attribute></Attribute>
|
||||||
|
<Category>include</Category>
|
||||||
|
<Condition>C</Condition>
|
||||||
|
<FileContentHash i:nil="true" />
|
||||||
|
<FileVersion></FileVersion>
|
||||||
|
<Name>include</Name>
|
||||||
|
<SelectString></SelectString>
|
||||||
|
<SourcePath></SourcePath>
|
||||||
|
</d4p1:anyType>
|
||||||
|
<d4p1:anyType i:type="FileInfo">
|
||||||
|
<AbsolutePath>G:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\include\avr\iom328p.h</AbsolutePath>
|
||||||
|
<Attribute></Attribute>
|
||||||
|
<Category>header</Category>
|
||||||
|
<Condition>C</Condition>
|
||||||
|
<FileContentHash>UMk4QUzkkuShabuoYtNl/Q==</FileContentHash>
|
||||||
|
<FileVersion></FileVersion>
|
||||||
|
<Name>include/avr/iom328p.h</Name>
|
||||||
|
<SelectString></SelectString>
|
||||||
|
<SourcePath></SourcePath>
|
||||||
|
</d4p1:anyType>
|
||||||
|
<d4p1:anyType i:type="FileInfo">
|
||||||
|
<AbsolutePath>G:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\templates\main.c</AbsolutePath>
|
||||||
|
<Attribute>template</Attribute>
|
||||||
|
<Category>source</Category>
|
||||||
|
<Condition>C Exe</Condition>
|
||||||
|
<FileContentHash>GD1k8YYhulqRs6FD1B2Hog==</FileContentHash>
|
||||||
|
<FileVersion></FileVersion>
|
||||||
|
<Name>templates/main.c</Name>
|
||||||
|
<SelectString>Main file (.c)</SelectString>
|
||||||
|
<SourcePath></SourcePath>
|
||||||
|
</d4p1:anyType>
|
||||||
|
<d4p1:anyType i:type="FileInfo">
|
||||||
|
<AbsolutePath>G:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\templates\main.cpp</AbsolutePath>
|
||||||
|
<Attribute>template</Attribute>
|
||||||
|
<Category>source</Category>
|
||||||
|
<Condition>C Exe</Condition>
|
||||||
|
<FileContentHash>ZJ6gYgbh1LauuUkZtQozzA==</FileContentHash>
|
||||||
|
<FileVersion></FileVersion>
|
||||||
|
<Name>templates/main.cpp</Name>
|
||||||
|
<SelectString>Main file (.cpp)</SelectString>
|
||||||
|
<SourcePath></SourcePath>
|
||||||
|
</d4p1:anyType>
|
||||||
|
<d4p1:anyType i:type="FileInfo">
|
||||||
|
<AbsolutePath>G:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\gcc\dev\atmega328p</AbsolutePath>
|
||||||
|
<Attribute></Attribute>
|
||||||
|
<Category>libraryPrefix</Category>
|
||||||
|
<Condition>GCC</Condition>
|
||||||
|
<FileContentHash i:nil="true" />
|
||||||
|
<FileVersion></FileVersion>
|
||||||
|
<Name>gcc/dev/atmega328p</Name>
|
||||||
|
<SelectString></SelectString>
|
||||||
|
<SourcePath></SourcePath>
|
||||||
|
</d4p1:anyType>
|
||||||
|
</Files>
|
||||||
|
<PackName>ATmega_DFP</PackName>
|
||||||
|
<PackPath>G:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/Atmel.ATmega_DFP.pdsc</PackPath>
|
||||||
|
<PackVersion>1.2.132</PackVersion>
|
||||||
|
<PresentInProject>true</PresentInProject>
|
||||||
|
<ReferenceConditionId>ATmega328P</ReferenceConditionId>
|
||||||
|
<RteComponents xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
|
||||||
|
<d4p1:string></d4p1:string>
|
||||||
|
</RteComponents>
|
||||||
|
<Status>Resolved</Status>
|
||||||
|
<VersionMode>Fixed</VersionMode>
|
||||||
|
<IsComponentInAtProject>true</IsComponentInAtProject>
|
||||||
|
</ProjectComponent>
|
||||||
|
</ProjectComponents>
|
||||||
|
</Store>
|
|
@ -0,0 +1,193 @@
|
||||||
|
<?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.CPP</ToolchainName>
|
||||||
|
<ProjectGuid>dce6c7e3-ee26-4d79-826b-08594b9ad897</ProjectGuid>
|
||||||
|
<avrdevice>ATmega328P</avrdevice>
|
||||||
|
<avrdeviceseries>none</avrdeviceseries>
|
||||||
|
<OutputType>Executable</OutputType>
|
||||||
|
<Language>CPP</Language>
|
||||||
|
<OutputFileName>$(MSBuildProjectName)</OutputFileName>
|
||||||
|
<OutputFileExtension>.elf</OutputFileExtension>
|
||||||
|
<OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory>
|
||||||
|
<AssemblyName>horloge</AssemblyName>
|
||||||
|
<Name>horloge</Name>
|
||||||
|
<RootNamespace>horloge</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>
|
||||||
|
<eraseonlaunchrule>0</eraseonlaunchrule>
|
||||||
|
<AsfFrameworkConfig>
|
||||||
|
<framework-data xmlns="">
|
||||||
|
<options />
|
||||||
|
<configurations />
|
||||||
|
<files />
|
||||||
|
<documentation help="" />
|
||||||
|
<offline-documentation help="" />
|
||||||
|
<dependencies>
|
||||||
|
<content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.34.1" />
|
||||||
|
</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>
|
||||||
|
<AvrGccCpp>
|
||||||
|
<avrgcc.common.Device>-mmcu=atmega328p -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\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.132\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>
|
||||||
|
<avrgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned>
|
||||||
|
<avrgcccpp.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcccpp.compiler.general.ChangeDefaultBitFieldUnsigned>
|
||||||
|
<avrgcccpp.compiler.symbols.DefSymbols>
|
||||||
|
<ListValues>
|
||||||
|
<Value>NDEBUG</Value>
|
||||||
|
</ListValues>
|
||||||
|
</avrgcccpp.compiler.symbols.DefSymbols>
|
||||||
|
<avrgcccpp.compiler.directories.IncludePaths>
|
||||||
|
<ListValues>
|
||||||
|
<Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\include</Value>
|
||||||
|
</ListValues>
|
||||||
|
</avrgcccpp.compiler.directories.IncludePaths>
|
||||||
|
<avrgcccpp.compiler.optimization.level>Optimize for size (-Os)</avrgcccpp.compiler.optimization.level>
|
||||||
|
<avrgcccpp.compiler.optimization.PackStructureMembers>True</avrgcccpp.compiler.optimization.PackStructureMembers>
|
||||||
|
<avrgcccpp.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcccpp.compiler.optimization.AllocateBytesNeededForEnum>
|
||||||
|
<avrgcccpp.compiler.warnings.AllWarnings>True</avrgcccpp.compiler.warnings.AllWarnings>
|
||||||
|
<avrgcccpp.linker.libraries.Libraries>
|
||||||
|
<ListValues>
|
||||||
|
<Value>libm</Value>
|
||||||
|
</ListValues>
|
||||||
|
</avrgcccpp.linker.libraries.Libraries>
|
||||||
|
<avrgcccpp.assembler.general.IncludePaths>
|
||||||
|
<ListValues>
|
||||||
|
<Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\include</Value>
|
||||||
|
</ListValues>
|
||||||
|
</avrgcccpp.assembler.general.IncludePaths>
|
||||||
|
</AvrGccCpp>
|
||||||
|
</ToolchainSettings>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||||
|
<ToolchainSettings>
|
||||||
|
<AvrGccCpp>
|
||||||
|
<avrgcc.common.Device>-mmcu=atmega328p -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\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.132\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>
|
||||||
|
<avrgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned>
|
||||||
|
<avrgcccpp.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcccpp.compiler.general.ChangeDefaultBitFieldUnsigned>
|
||||||
|
<avrgcccpp.compiler.symbols.DefSymbols>
|
||||||
|
<ListValues>
|
||||||
|
<Value>DEBUG</Value>
|
||||||
|
</ListValues>
|
||||||
|
</avrgcccpp.compiler.symbols.DefSymbols>
|
||||||
|
<avrgcccpp.compiler.directories.IncludePaths>
|
||||||
|
<ListValues>
|
||||||
|
<Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\include</Value>
|
||||||
|
</ListValues>
|
||||||
|
</avrgcccpp.compiler.directories.IncludePaths>
|
||||||
|
<avrgcccpp.compiler.optimization.level>Optimize (-O1)</avrgcccpp.compiler.optimization.level>
|
||||||
|
<avrgcccpp.compiler.optimization.PackStructureMembers>True</avrgcccpp.compiler.optimization.PackStructureMembers>
|
||||||
|
<avrgcccpp.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcccpp.compiler.optimization.AllocateBytesNeededForEnum>
|
||||||
|
<avrgcccpp.compiler.optimization.DebugLevel>Default (-g2)</avrgcccpp.compiler.optimization.DebugLevel>
|
||||||
|
<avrgcccpp.compiler.warnings.AllWarnings>True</avrgcccpp.compiler.warnings.AllWarnings>
|
||||||
|
<avrgcccpp.linker.libraries.Libraries>
|
||||||
|
<ListValues>
|
||||||
|
<Value>libm</Value>
|
||||||
|
</ListValues>
|
||||||
|
</avrgcccpp.linker.libraries.Libraries>
|
||||||
|
<avrgcccpp.assembler.general.IncludePaths>
|
||||||
|
<ListValues>
|
||||||
|
<Value>%24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\include</Value>
|
||||||
|
</ListValues>
|
||||||
|
</avrgcccpp.assembler.general.IncludePaths>
|
||||||
|
<avrgcccpp.assembler.debugging.DebugLevel>Default (-Wa,-g)</avrgcccpp.assembler.debugging.DebugLevel>
|
||||||
|
</AvrGccCpp>
|
||||||
|
</ToolchainSettings>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="global.h">
|
||||||
|
<SubType>compile</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="horlogeLepot.cpp">
|
||||||
|
<SubType>compile</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="horlogeLepot.h">
|
||||||
|
<SubType>compile</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="main.cpp">
|
||||||
|
<SubType>compile</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="max7219.cpp">
|
||||||
|
<SubType>compile</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="max7219.h">
|
||||||
|
<SubType>compile</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="util.cpp">
|
||||||
|
<SubType>compile</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="util.h">
|
||||||
|
<SubType>compile</SubType>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />
|
||||||
|
</Project>
|
|
@ -0,0 +1,133 @@
|
||||||
|
/*
|
||||||
|
* horlogeLepot.c
|
||||||
|
*
|
||||||
|
* Created: 28-11-17 13:18:33
|
||||||
|
* Author: Adrien
|
||||||
|
*/
|
||||||
|
#include "max7219.h"
|
||||||
|
#include "util.h"
|
||||||
|
#include "horlogeLepot.h"
|
||||||
|
#include "global.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#pragma region horloge
|
||||||
|
|
||||||
|
horloge::horloge(max7219 *max)
|
||||||
|
{
|
||||||
|
this->max = max;
|
||||||
|
t = millis();
|
||||||
|
ar[0] = ar[1] = ar[2] = ar[3] = 0;
|
||||||
|
heures=0;
|
||||||
|
minutes=0;
|
||||||
|
HHMM=0;
|
||||||
|
decalageMinutes=0;
|
||||||
|
decalageHeures=0; //Pour "synchronis?" sur la fonction millis
|
||||||
|
}
|
||||||
|
|
||||||
|
void horloge::afficherHeur()
|
||||||
|
{
|
||||||
|
t = millis();
|
||||||
|
unsigned long decalageMilis = HH_MMtoHHMM(decalageHeures, decalageMinutes);
|
||||||
|
decalageMilis = HHMMToMillis(decalageMilis);
|
||||||
|
millisToHH_MM_Decalage(&heures, &minutes, decalageMilis);
|
||||||
|
HHMM = HH_MMtoHHMM(heures, minutes);//on fusionne pour n'avoir qu'un chiffre. 11h30 devien 1130
|
||||||
|
intTo4DigitArray(HHMM, ar, 4);//Decompose chaque digit
|
||||||
|
if(((t%1000)>500)) //Clignotement des ":"
|
||||||
|
ar[2] |= _BV(7);
|
||||||
|
else
|
||||||
|
ar[2] &= ~(_BV(7));
|
||||||
|
max->sendDigitFromArray(ar,4);
|
||||||
|
max->on();
|
||||||
|
}
|
||||||
|
void horloge::configMinute()
|
||||||
|
{
|
||||||
|
t=millis();
|
||||||
|
unsigned long decalageMilis = HH_MMtoHHMM(decalageHeures, decalageMinutes);
|
||||||
|
decalageMilis = HHMMToMillis(decalageMilis);
|
||||||
|
millisToHH_MM_Decalage(&heures, &minutes, decalageMilis);
|
||||||
|
HHMM = HH_MMtoHHMM(heures, minutes);//on fusionne pour n'avoir qu'un chiffre. 11h30 devien 1130
|
||||||
|
intTo4DigitArray(HHMM, ar, 4);//Decompose chaque digit
|
||||||
|
if(((t%1000)>500) && PINB&_BV(__BP_MOIN__) && PINB&_BV(__BP_PLUS__) && PINB&_BV(__BP_START__) && PINB&_BV(__BP_CONF__)) //Clignotement des ":" et des min (arret du clignotement si on apuie sur un bp)
|
||||||
|
{
|
||||||
|
ar[2] |= _BV(7);
|
||||||
|
ar[0] |= 0x0F;
|
||||||
|
ar[1] |= 0x0F;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ar[2] &= ~(_BV(7));
|
||||||
|
}
|
||||||
|
max->sendDigitFromArray(ar,4);
|
||||||
|
if(!(PINB&_BV(__BP_PLUS__)) && !appuisBPflag)
|
||||||
|
{
|
||||||
|
_delay_ms(10);
|
||||||
|
++decalageMinutes %= 60;
|
||||||
|
appuisBPflag = 1;
|
||||||
|
}
|
||||||
|
if(!(PINB&_BV(__BP_MOIN__)) && !appuisBPflag)
|
||||||
|
{
|
||||||
|
_delay_ms(10);
|
||||||
|
--decalageMinutes = (decalageMinutes>59)?59:decalageMinutes;
|
||||||
|
appuisBPflag = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void horloge::configHeure()
|
||||||
|
{
|
||||||
|
t = millis();
|
||||||
|
unsigned long decalageMilis = HH_MMtoHHMM(decalageHeures, decalageMinutes);
|
||||||
|
decalageMilis = HHMMToMillis(decalageMilis);
|
||||||
|
millisToHH_MM_Decalage(&heures, &minutes, decalageMilis);
|
||||||
|
HHMM = HH_MMtoHHMM(heures, minutes);//on fusionne pour n'avoir qu'un chiffre. 11h30 devien 1130
|
||||||
|
intTo4DigitArray(HHMM, ar, 4);//Decompose chaque digit
|
||||||
|
if(((t%1000)>500) && PINB&_BV(__BP_MOIN__) && PINB&_BV(__BP_PLUS__) && PINB&_BV(__BP_START__) && PINB&_BV(__BP_CONF__)) //Clignotement des ":" et des min (arret du clignotement si on apuie sur un bp)
|
||||||
|
{
|
||||||
|
ar[2] |= _BV(7);
|
||||||
|
ar[2] |= 0x0F;
|
||||||
|
ar[3] |= 0x0F;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ar[2] &= ~(_BV(7));
|
||||||
|
}
|
||||||
|
max->sendDigitFromArray(ar,4);
|
||||||
|
if(!(PINB&_BV(__BP_PLUS__)) && !appuisBPflag)
|
||||||
|
{
|
||||||
|
_delay_ms(10);
|
||||||
|
++decalageHeures %= 24;
|
||||||
|
appuisBPflag = 1;
|
||||||
|
}
|
||||||
|
if(!(PINB&_BV(__BP_MOIN__)) && !appuisBPflag)
|
||||||
|
{
|
||||||
|
_delay_ms(10);
|
||||||
|
--decalageHeures = (decalageHeures>23)?23:decalageHeures;
|
||||||
|
appuisBPflag = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void afficherHeur()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void configMinute()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void configHeure()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
#pragma endregion horloge
|
||||||
|
#pragma region minuterie
|
||||||
|
#pragma endregion minuterie
|
||||||
|
|
||||||
|
#pragma region compteur
|
||||||
|
#pragma endregion compteur
|
||||||
|
|
||||||
|
#pragma region reveil
|
||||||
|
#pragma endregion reveil
|
|
@ -0,0 +1,35 @@
|
||||||
|
/*
|
||||||
|
* horlogeLepot.h
|
||||||
|
*
|
||||||
|
* Created: 28-11-17 13:18:01
|
||||||
|
* Author: Adrien
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef HORLOGELEPOT_H_
|
||||||
|
#define HORLOGELEPOT_H_
|
||||||
|
|
||||||
|
#ifndef __MAX7219_H__
|
||||||
|
#include "max7219.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
class horloge
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
max7219 *max;
|
||||||
|
unsigned long t;
|
||||||
|
uint8_t ar[4];
|
||||||
|
uint8_t heures, minutes;
|
||||||
|
int HHMM;
|
||||||
|
uint8_t decalageMinutes, decalageHeures; //Pour "synchronis?" sur la fonction millis
|
||||||
|
|
||||||
|
public:
|
||||||
|
horloge(max7219 *max);
|
||||||
|
void afficherHeur();
|
||||||
|
void configMinute();
|
||||||
|
void configHeure();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* HORLOGELEPOT_H_ */
|
|
@ -0,0 +1,44 @@
|
||||||
|
/*
|
||||||
|
* horloge.cpp
|
||||||
|
*
|
||||||
|
* Created: 17-10-17 20:53:10
|
||||||
|
* Author : Adrien
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define F_CPU 16000000UL
|
||||||
|
|
||||||
|
#include <avr/io.h>
|
||||||
|
#include <util/delay.h>
|
||||||
|
|
||||||
|
#include "util.h"
|
||||||
|
#include "max7219.h"
|
||||||
|
|
||||||
|
#define __plus__ 1
|
||||||
|
#define __moins__ 2
|
||||||
|
#define __start__ 3
|
||||||
|
#define __conf__ 4
|
||||||
|
#define __MAX_DIN__ 5
|
||||||
|
#define __MAX_LOAD__ 6
|
||||||
|
#define __MAX_CLK__ 7
|
||||||
|
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
/* Replace with your application code */
|
||||||
|
max7219 max(__MAX_DIN__, __MAX_LOAD__, __MAX_LOAD__, 4);
|
||||||
|
max.sendRAWdata(1,max7219::D1);
|
||||||
|
uint8_t heures = 0, minutes = 0, secondes = 0;
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
max.sendRAWdata(1,max7219::D1);
|
||||||
|
max.sendRAWdata(1,max7219::D2);
|
||||||
|
max.setIntensity(50);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
isr(__INT__)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,145 @@
|
||||||
|
/*
|
||||||
|
* horloge.cpp
|
||||||
|
*
|
||||||
|
* Created: 17-10-17 20:53:10
|
||||||
|
* Author : Adrien
|
||||||
|
*|----------------------------
|
||||||
|
*| LCONF | RCONF |
|
||||||
|
*|____________________________
|
||||||
|
*| D4 | D3 | D2 | D1 |
|
||||||
|
*|----------------------------
|
||||||
|
*| ### ### ### ### |
|
||||||
|
*| # # # # o # # # # |
|
||||||
|
*| ### ### ### ### |
|
||||||
|
*| # # # # o # # # # |
|
||||||
|
*| ### o ### o ### o ### o|
|
||||||
|
*|----------------------------
|
||||||
|
*| o = dot ; pour activer mettre <EFBFBD> 1 le bit 7 digit|_BV(7)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define F_CPU 16000000UL
|
||||||
|
|
||||||
|
|
||||||
|
#include <avr/io.h>
|
||||||
|
#include <util/delay.h>
|
||||||
|
|
||||||
|
#include "util.h"
|
||||||
|
//#include "max7219.h"
|
||||||
|
#include "horlogeLepot.h"
|
||||||
|
#include "global.h"
|
||||||
|
|
||||||
|
|
||||||
|
uint8_t appuisBPflag = 0;
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
max7219 max(2,3,4, 4);
|
||||||
|
horloge horloge0(&max);
|
||||||
|
/* Replace with your application qcode */
|
||||||
|
DDRB &= ~(_BV(__BP_PLUS__)|_BV(__BP_MOIN__)|_BV(__BP_CONF__)|_BV(__BP_START__));
|
||||||
|
PORTB |= _BV(__BP_PLUS__)|_BV(__BP_MOIN__)|_BV(__BP_CONF__)|_BV(__BP_START__); //PULL-UP
|
||||||
|
mode_t mode = NORMALMODE;
|
||||||
|
setup_t setup = NONE;
|
||||||
|
setupMilis();
|
||||||
|
|
||||||
|
unsigned int tempoBP = __TMP_BP_MAX__;
|
||||||
|
unsigned int tempoBPi = 0;
|
||||||
|
unsigned long millisBPStart = 0;
|
||||||
|
|
||||||
|
_delay_ms(50);
|
||||||
|
unsigned long t = millis();
|
||||||
|
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
t = millis();
|
||||||
|
|
||||||
|
#pragma region GestionTempoBP
|
||||||
|
if((millis()-millisBPStart) > tempoBP && appuisBPflag)
|
||||||
|
{
|
||||||
|
millisBPStart = millis();
|
||||||
|
appuisBPflag = 0;
|
||||||
|
tempoBPi++;
|
||||||
|
if(tempoBP>__TMP_BP_MIN__ && tempoBPi == __TMP_BP_NLOOP_DEC__)
|
||||||
|
{
|
||||||
|
tempoBP *=0.75;
|
||||||
|
tempoBPi = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(PINB&_BV(__BP_MOIN__) && PINB&_BV(__BP_PLUS__) && PINB&_BV(__BP_START__) && PINB&_BV(__BP_CONF__) ) //Reset des var lors du relachement
|
||||||
|
{
|
||||||
|
appuisBPflag = 0;
|
||||||
|
tempoBPi = 0;
|
||||||
|
tempoBP = __TMP_BP_MAX__;
|
||||||
|
}
|
||||||
|
#pragma endregion GestionTempoBP
|
||||||
|
|
||||||
|
#pragma region GestionConfig
|
||||||
|
if(!(PINB&_BV(__BP_CONF__))) //Getsion config
|
||||||
|
{
|
||||||
|
_delay_ms(10);//Anti rebon soft
|
||||||
|
unsigned int tapuis = millis();
|
||||||
|
while(!(PINB&_BV(__BP_CONF__)))
|
||||||
|
{
|
||||||
|
//Routine a exe si besoin
|
||||||
|
}
|
||||||
|
if(millis()-tapuis < __TMP_BP_SETUP__ && !setup)
|
||||||
|
{
|
||||||
|
|
||||||
|
switch(mode)
|
||||||
|
{
|
||||||
|
case NORMALMODE:
|
||||||
|
|
||||||
|
mode = CHRONO;
|
||||||
|
break;
|
||||||
|
case CHRONO:
|
||||||
|
mode = MINUTERIE;
|
||||||
|
break;
|
||||||
|
case MINUTERIE:
|
||||||
|
mode = REVEIL;
|
||||||
|
break;
|
||||||
|
case REVEIL:
|
||||||
|
mode = NORMALMODE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch(setup)
|
||||||
|
{
|
||||||
|
case NONE:
|
||||||
|
setup = RCONF;
|
||||||
|
break;
|
||||||
|
case RCONF:
|
||||||
|
setup = LCONF;
|
||||||
|
break;
|
||||||
|
case LCONF:
|
||||||
|
setup = NONE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#pragma endregion GestionConfig
|
||||||
|
|
||||||
|
if(!setup)
|
||||||
|
{
|
||||||
|
switch(mode)
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
horloge0.afficherHeur();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch (setup)
|
||||||
|
{
|
||||||
|
case RCONF:
|
||||||
|
horloge0.configMinute();
|
||||||
|
break;
|
||||||
|
case LCONF:
|
||||||
|
horloge0.configHeure();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,125 @@
|
||||||
|
/*
|
||||||
|
* max7219.cpp
|
||||||
|
*
|
||||||
|
* Created: 17-10-17 21:26:30
|
||||||
|
* Author: Adrien
|
||||||
|
*/
|
||||||
|
#define F_CPU 16000000UL
|
||||||
|
|
||||||
|
#include "max7219.h"
|
||||||
|
#include "util.h"
|
||||||
|
#include <assert.h>
|
||||||
|
#include <avr/io.h>
|
||||||
|
#include <util/delay.h>
|
||||||
|
#include <avr/cpufunc.h>
|
||||||
|
|
||||||
|
max7219::max7219(uint8_t din, uint8_t load, uint8_t clk, uint8_t nOfDigit)
|
||||||
|
{
|
||||||
|
this->din = pinArduinoToPINXX(din);
|
||||||
|
this->load = pinArduinoToPINXX(load);
|
||||||
|
this->clk = pinArduinoToPINXX(clk);
|
||||||
|
this->nOfDigit = nOfDigit;
|
||||||
|
pinDin = pinToPINX(din);
|
||||||
|
pinLoad = pinToPINX(load);
|
||||||
|
pinClk = pinToPINX(clk);
|
||||||
|
ddrDin = pinDin+1; ddrLoad=pinLoad+1;ddrClk=pinClk+1;
|
||||||
|
portDin = pinDin+2; portLoad=pinLoad+2;portClk=pinClk+2;
|
||||||
|
*ddrDin |= _BV(pinArduinoToPINXX(din));
|
||||||
|
*ddrLoad |= _BV(pinArduinoToPINXX(load));
|
||||||
|
*ddrClk |= _BV(pinArduinoToPINXX(clk));
|
||||||
|
setLoadTo(1);
|
||||||
|
setClkTo(0);
|
||||||
|
setDataTo(0);
|
||||||
|
_delay_ms(50);
|
||||||
|
sendRAWdata(nOfDigit, SCANLIMIT);
|
||||||
|
sendRAWdata((0xff),DECODEMODE);
|
||||||
|
on();
|
||||||
|
}
|
||||||
|
|
||||||
|
void max7219::sendRAWdata(volatile uint8_t data, volatile address ad)
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
setClkTo(0);
|
||||||
|
setLoadTo(0);
|
||||||
|
_NOP();
|
||||||
|
_NOP();
|
||||||
|
|
||||||
|
for (i=0; i<8 ; i++)
|
||||||
|
{
|
||||||
|
setDataTo(ad&(0b10000000>>i));
|
||||||
|
_NOP();
|
||||||
|
_NOP();
|
||||||
|
setClkTo(1);
|
||||||
|
_delay_us(1);
|
||||||
|
setClkTo(0);
|
||||||
|
_NOP();
|
||||||
|
_NOP();
|
||||||
|
}
|
||||||
|
for (i=0; i<8 ; i++)
|
||||||
|
{
|
||||||
|
setClkTo(0);
|
||||||
|
setDataTo(data&(0b10000000>>i));
|
||||||
|
_NOP();
|
||||||
|
_NOP();
|
||||||
|
setClkTo(1);
|
||||||
|
_delay_us(1);
|
||||||
|
setClkTo(0);
|
||||||
|
_NOP();
|
||||||
|
_NOP();
|
||||||
|
}
|
||||||
|
setLoadTo(1);
|
||||||
|
_delay_us(1);
|
||||||
|
}
|
||||||
|
void max7219::on()
|
||||||
|
{
|
||||||
|
sendRAWdata(0x01, SHUTDOWN);
|
||||||
|
}
|
||||||
|
void max7219::off()
|
||||||
|
{
|
||||||
|
sendRAWdata(0x00, SHUTDOWN);
|
||||||
|
}
|
||||||
|
void max7219::sendDigitFromArray(uint8_t *array, uint8_t s)
|
||||||
|
{
|
||||||
|
sendRAWdata(0xFF, DECODEMODE);
|
||||||
|
for (int i=0;i<s;i++)
|
||||||
|
{
|
||||||
|
sendRAWdata(array[i],(address)(D1+i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void max7219::setIntensity(const uint8_t i)
|
||||||
|
{
|
||||||
|
sendRAWdata(i, INTENSITY);
|
||||||
|
}
|
||||||
|
void max7219::setClkTo(uint8_t v)
|
||||||
|
{
|
||||||
|
if(v)
|
||||||
|
{
|
||||||
|
*portClk |= _BV(clk);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*portClk &= ~(_BV(clk));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void max7219::setLoadTo(uint8_t v)
|
||||||
|
{
|
||||||
|
if(v)
|
||||||
|
{
|
||||||
|
*portLoad |= _BV(load);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*portLoad &= ~(_BV(load));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void max7219::setDataTo(uint8_t v)
|
||||||
|
{
|
||||||
|
if(v)
|
||||||
|
{
|
||||||
|
*portDin |= _BV(din);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*portDin &= ~(_BV(din));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
/*
|
||||||
|
* max7219.h
|
||||||
|
*
|
||||||
|
* Created: 17-10-17 21:26:30
|
||||||
|
* Author: Adrien
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __MAX7219_H__
|
||||||
|
#define __MAX7219_H__
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
class max7219
|
||||||
|
{
|
||||||
|
//variables
|
||||||
|
public:
|
||||||
|
typedef enum{NOP=0x00,D1=0x01,D2=0x02,D3,D4,D5,D6,D7,D8,DECODEMODE,INTENSITY=0x0A,SCANLIMIT,SHUTDOWN,TEST=0x0F} address;
|
||||||
|
protected:
|
||||||
|
private:
|
||||||
|
uint8_t nOfDigit;
|
||||||
|
uint8_t din,load,clk;
|
||||||
|
uint8_t decodeMode;
|
||||||
|
volatile uint8_t *pinDin, *portDin, *ddrDin;
|
||||||
|
volatile uint8_t *pinLoad, *portLoad, *ddrLoad;
|
||||||
|
volatile uint8_t *pinClk, *portClk, *ddrClk;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//functions
|
||||||
|
public:
|
||||||
|
max7219(uint8_t din, uint8_t load, uint8_t clk, uint8_t nOfDigit);
|
||||||
|
void sendRAWdata(uint8_t data, address ad);
|
||||||
|
void on();
|
||||||
|
void off();
|
||||||
|
void sendDigitFromArray(uint8_t *array, uint8_t s);
|
||||||
|
void setIntensity(uint8_t i);
|
||||||
|
protected:
|
||||||
|
private:
|
||||||
|
void setClkTo(uint8_t v);
|
||||||
|
void setLoadTo(uint8_t v);
|
||||||
|
void setDataTo(uint8_t v);
|
||||||
|
|
||||||
|
|
||||||
|
}; //max7219
|
||||||
|
|
||||||
|
#endif //__MAX7219_H__
|
|
@ -0,0 +1,120 @@
|
||||||
|
/*
|
||||||
|
* util.cpp
|
||||||
|
*
|
||||||
|
* Created: 17-10-17 21:21:20
|
||||||
|
* Author: Adrien
|
||||||
|
*/
|
||||||
|
#include <avr/io.h>
|
||||||
|
#include <avr/interrupt.h>
|
||||||
|
|
||||||
|
#include "util.h"
|
||||||
|
#include "global.h"
|
||||||
|
|
||||||
|
unsigned long tmpMillis = 0UL;
|
||||||
|
|
||||||
|
|
||||||
|
uint8_t uint8ToBCD(uint8_t val)
|
||||||
|
{
|
||||||
|
return (val%10)|((val/10)<<4);
|
||||||
|
}
|
||||||
|
|
||||||
|
void intTo4DigitArray(unsigned int d, uint8_t * array, uint8_t arrayMax)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for(i = 0; d && i<arrayMax ; i++)
|
||||||
|
{
|
||||||
|
array[i] = d%10;
|
||||||
|
d/=10;
|
||||||
|
}
|
||||||
|
for(;i<arrayMax;i++)
|
||||||
|
array[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
volatile uint8_t *pinToPINX(uint8_t pin)
|
||||||
|
{
|
||||||
|
if(pin<=7)
|
||||||
|
return &PIND;
|
||||||
|
else if(pin<=13)
|
||||||
|
return &PINB;
|
||||||
|
else
|
||||||
|
return &PINC;
|
||||||
|
}
|
||||||
|
uint8_t pinArduinoToPINXX(uint8_t pin)
|
||||||
|
{
|
||||||
|
if(pin <= 13)
|
||||||
|
return pin%8;
|
||||||
|
else
|
||||||
|
return pin-13;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setupMilis()
|
||||||
|
{
|
||||||
|
TCCR0A = 0x00;
|
||||||
|
TCCR0B = _BV(CS11)|_BV(CS10); //Divide 16Mhz by 64
|
||||||
|
TIMSK0 = _BV(OCIE1A);
|
||||||
|
OCR0A = 250;
|
||||||
|
//Compare at 250, every ms
|
||||||
|
sei();
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned long millis()
|
||||||
|
{
|
||||||
|
return tmpMillis;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int millisToHHMM()
|
||||||
|
{
|
||||||
|
unsigned long seconde = millis()/1000;
|
||||||
|
unsigned long minute = seconde/60;
|
||||||
|
unsigned long heure = minute/60;
|
||||||
|
minute %= 60;
|
||||||
|
heure %= 24;
|
||||||
|
return (heure*100)+minute;
|
||||||
|
}
|
||||||
|
void millisToHH_MM(uint8_t * HH, uint8_t *MM)
|
||||||
|
{
|
||||||
|
unsigned long seconde = millis()/1000;
|
||||||
|
unsigned long minute = seconde/60;
|
||||||
|
unsigned long heure = minute/60;
|
||||||
|
minute %= 60;
|
||||||
|
heure %= 24;
|
||||||
|
*MM = (uint8_t)minute;
|
||||||
|
*HH = (uint8_t)(heure);
|
||||||
|
}
|
||||||
|
void millisToHH_MM_Decalage(uint8_t * HH, uint8_t *MM, unsigned long decalage)
|
||||||
|
{
|
||||||
|
unsigned long seconde = (millis()+decalage)/1000;
|
||||||
|
unsigned long minute = seconde/60;
|
||||||
|
unsigned long heure = minute/60;
|
||||||
|
minute %= 60;
|
||||||
|
heure %= 24;
|
||||||
|
*MM = (uint8_t)minute;
|
||||||
|
*HH = (uint8_t)(heure);
|
||||||
|
}
|
||||||
|
unsigned long HHMMToMillis(unsigned int HHMM)
|
||||||
|
{
|
||||||
|
unsigned long minute = (HHMM%100)+((HHMM/100)*60);
|
||||||
|
unsigned long ms = minute*60*1000;
|
||||||
|
return ms;
|
||||||
|
}
|
||||||
|
unsigned int HH_MMtoHHMM(uint8_t HH, uint8_t MM)
|
||||||
|
{
|
||||||
|
return (unsigned int)(HH*100)+MM;
|
||||||
|
}
|
||||||
|
void HHMMtoHH_MM(uint8_t HHMM, uint8_t * HH, uint8_t *MM)
|
||||||
|
{
|
||||||
|
*HH = HHMM/100;
|
||||||
|
*MM = HHMM%100;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t VerifappuisBP()
|
||||||
|
{
|
||||||
|
return !(PINB&_BV(__BP_MOIN__) && PINB&_BV(__BP_PLUS__) && PINB&_BV(__BP_START__) && PINB&_BV(__BP_CONF__));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ISR(TIMER0_COMPA_vect)
|
||||||
|
{
|
||||||
|
++tmpMillis;
|
||||||
|
TCNT0 = 0;
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
/*
|
||||||
|
* util.h
|
||||||
|
*
|
||||||
|
* Created: 17-10-17 20:59:25
|
||||||
|
* Author: Adrien
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef UTIL_H_
|
||||||
|
#define UTIL_H_
|
||||||
|
#include <stdint.h>
|
||||||
|
typedef enum {A0=14, A1, A2, A3, A4, A5} AnalogPin;
|
||||||
|
uint8_t uint8ToBCD(uint8_t val);
|
||||||
|
volatile uint8_t *pinToPINX(uint8_t pin);
|
||||||
|
uint8_t pinArduinoToPINXX(uint8_t pin);
|
||||||
|
void setupMilis();
|
||||||
|
unsigned long millis();
|
||||||
|
void intTo4DigitArray(unsigned int d, uint8_t * array, uint8_t arrayMax);
|
||||||
|
unsigned int millisToHHMM();
|
||||||
|
void millisToHH_MM(uint8_t * HH, uint8_t *MM);
|
||||||
|
void millisToHH_MM_Decalage(uint8_t * HH, uint8_t *MM, unsigned long decalage);
|
||||||
|
unsigned long HHMMToMillis(unsigned int HHMM);
|
||||||
|
unsigned int HH_MMtoHHMM(uint8_t HH, uint8_t MM);
|
||||||
|
void HHMMtoHH_MM(uint8_t HHMM, uint8_t * HH, uint8_t *MM);
|
||||||
|
uint8_t VerifappuisBP();
|
||||||
|
#endif /* UTIL_H_ */
|
Loading…
Reference in New Issue