summaryrefslogtreecommitdiff
path: root/floppyMusic
diff options
context:
space:
mode:
authorGravatar Jonas Gunz <himself@jonasgunz.de> 2017-05-01 12:02:08 +0200
committerGravatar Jonas Gunz <himself@jonasgunz.de> 2017-05-01 12:02:08 +0200
commit677c370834102ae43ce19d0931cc98d8267dacc5 (patch)
tree80f5ee66e9c7d36a886c8a87afca073765083800 /floppyMusic
downloadavrFloppy-677c370834102ae43ce19d0931cc98d8267dacc5.tar.gz
init
Diffstat (limited to 'floppyMusic')
-rw-r--r--floppyMusic/floppy.c87
-rw-r--r--floppyMusic/floppy.h30
-rw-r--r--floppyMusic/floppyMusic.componentinfo.xml86
-rw-r--r--floppyMusic/floppyMusic.cproj173
-rw-r--r--floppyMusic/main.c22
5 files changed, 398 insertions, 0 deletions
diff --git a/floppyMusic/floppy.c b/floppyMusic/floppy.c
new file mode 100644
index 0000000..716502a
--- /dev/null
+++ b/floppyMusic/floppy.c
@@ -0,0 +1,87 @@
+/*
+ * floppy.c
+ *
+ * Created: 29.04.2017 17:06:37
+ * Author: Jonas
+ */
+
+ #include "floppy.h"
+
+ISR(TIMER0_OVF_vect)
+{
+ cli();
+
+ timer_overflow_counter ++;
+
+ *fPORT = 0xff;
+
+ for(uint8_t i = 0; i < 8; i++)
+ {
+ if(floppy_nextrun[i] == (timer_overflow_counter + 1)) //Do Stuff. Doesnt work
+ {
+ floppy_nextrun[i] += floppy_frequencies[i];
+ floppy_pulse(i);
+ }
+ }
+
+ sei();
+}
+
+void floppy_setup(char *_pulse_port, char *_pulse_ddr, char *_direction_port, char *_direction_ddr)
+ {
+ //Setup Ports
+ fPORT = _pulse_port;
+ fDDR = _pulse_ddr;
+ dPORT = _direction_port;
+ dDDR = _direction_ddr;
+
+ *fDDR = 0xff;
+ *fPORT = 0xff;
+ *dDDR = 0xff;
+ *dPORT = 0xff;
+
+
+
+ //Variable init
+ timer_overflow_counter = 0;
+
+ for(uint8_t i = 0; i < 8; i++)
+ {
+ floppy_head_return_counter[i] = 0;
+ floppy_frequencies[i] = 0;
+ floppy_nextrun[i] = 0;
+ }
+
+ //Return all FDDs to track 0
+
+ for(uint8_t i = 0; i < 200; i++)
+ {
+ _delay_ms(5);
+ *fPORT ^= 0xff;
+ }
+
+ *fPORT = 0xff;
+
+ //Setup Timer
+ TCCR0 |= (1 << CS01); // Prescaler 8, for max Frequency of 488 Hertz for F_CPU = 1MHz
+ TIMSK |= (1 << TOIE0); //Activate Interrupt
+ sei();
+ }
+
+ void floppy_set_frequency(uint8_t _floppy_id, uint8_t _freq)
+ {
+ floppy_frequencies[_floppy_id] = floppy_nextrun[_floppy_id] = _freq;
+ }
+
+ void floppy_pulse(uint8_t _floppy_id)
+ {
+ *fPORT &= ~(1 << _floppy_id); //Activate pin
+
+ floppy_head_return_counter[_floppy_id] ++;
+
+ if(floppy_head_return_counter[_floppy_id] > 75) //Toggle direction pin if more than 75 steps performed
+ {
+ *dPORT ^= (1<<_floppy_id);
+ floppy_head_return_counter[_floppy_id] = 0;
+ }
+ } \ No newline at end of file
diff --git a/floppyMusic/floppy.h b/floppyMusic/floppy.h
new file mode 100644
index 0000000..280bb2f
--- /dev/null
+++ b/floppyMusic/floppy.h
@@ -0,0 +1,30 @@
+/*
+ * floppy.h
+ *
+ * Created: 29.04.2017 17:06:28
+ * Author: Jonas
+ */
+
+
+#ifndef FLOPPY_H_
+#define FLOPPY_H_
+
+#include <avr/io.h>
+#include <avr/interrupt.h>
+#include <avr/delay.h>
+
+uint8_t timer_overflow_counter;
+uint8_t floppy_frequencies[8];
+uint8_t floppy_nextrun[8];
+uint8_t floppy_head_return_counter[8];
+
+char *fPORT, *fDDR, *dPORT, *dDDR; //Ports for floppy and Direction of Heads
+
+void floppy_setup(char *_pulse_port, char *_pulse_ddr, char *_direction_port, char *_direction_ddr);
+
+void floppy_set_frequency(uint8_t _floppy_id, uint8_t _freq);
+
+void floppy_pulse(uint8_t _floppy_id);
+
+
+#endif /* FLOPPY_H_ */ \ No newline at end of file
diff --git a/floppyMusic/floppyMusic.componentinfo.xml b/floppyMusic/floppyMusic.componentinfo.xml
new file mode 100644
index 0000000..7c3c717
--- /dev/null
+++ b/floppyMusic/floppyMusic.componentinfo.xml
@@ -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>C:/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>C:/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>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\include\avr\iom8.h</AbsolutePath>
+ <Attribute></Attribute>
+ <Category>header</Category>
+ <Condition>C</Condition>
+ <FileContentHash>hDXIougjReqD1inJugv1UA==</FileContentHash>
+ <FileVersion></FileVersion>
+ <Name>include/avr/iom8.h</Name>
+ <SelectString></SelectString>
+ <SourcePath></SourcePath>
+ </d4p1:anyType>
+ <d4p1:anyType i:type="FileInfo">
+ <AbsolutePath>C:/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>6uB4FLeVljduSJojLjAg+A==</FileContentHash>
+ <FileVersion></FileVersion>
+ <Name>templates/main.c</Name>
+ <SelectString>Main file (.c)</SelectString>
+ <SourcePath></SourcePath>
+ </d4p1:anyType>
+ <d4p1:anyType i:type="FileInfo">
+ <AbsolutePath>C:/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>YXFphlh0CtZJU+ebktABgQ==</FileContentHash>
+ <FileVersion></FileVersion>
+ <Name>templates/main.cpp</Name>
+ <SelectString>Main file (.cpp)</SelectString>
+ <SourcePath></SourcePath>
+ </d4p1:anyType>
+ <d4p1:anyType i:type="FileInfo">
+ <AbsolutePath>C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\gcc\dev\atmega8</AbsolutePath>
+ <Attribute></Attribute>
+ <Category>libraryPrefix</Category>
+ <Condition>GCC</Condition>
+ <FileContentHash i:nil="true" />
+ <FileVersion></FileVersion>
+ <Name>gcc/dev/atmega8</Name>
+ <SelectString></SelectString>
+ <SourcePath></SourcePath>
+ </d4p1:anyType>
+ </Files>
+ <PackName>ATmega_DFP</PackName>
+ <PackPath>C:/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>ATmega8</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> \ No newline at end of file
diff --git a/floppyMusic/floppyMusic.cproj b/floppyMusic/floppyMusic.cproj
new file mode 100644
index 0000000..71fa9a4
--- /dev/null
+++ b/floppyMusic/floppyMusic.cproj
@@ -0,0 +1,173 @@
+<?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>ATmega8</avrdevice>
+ <avrdeviceseries>none</avrdeviceseries>
+ <OutputType>Executable</OutputType>
+ <Language>C</Language>
+ <OutputFileName>$(MSBuildProjectName)</OutputFileName>
+ <OutputFileExtension>.elf</OutputFileExtension>
+ <OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory>
+ <AssemblyName>floppyMusic</AssemblyName>
+ <Name>floppyMusic</Name>
+ <RootNamespace>floppyMusic</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.stk500</avrtool>
+ <avrtoolserialnumber />
+ <avrdeviceexpectedsignature>0x1E9307</avrdeviceexpectedsignature>
+ <custom>
+ <ToolOptions>
+ <InterfaceProperties>
+ </InterfaceProperties>
+ <InterfaceName>
+ </InterfaceName>
+ </ToolOptions>
+ <ToolType>custom</ToolType>
+ <ToolNumber>
+ </ToolNumber>
+ <ToolName>Custom Programming Tool</ToolName>
+ </custom>
+ <avrtoolinterface>ISP</avrtoolinterface>
+ <com_atmel_avrdbg_tool_simulator>
+ <ToolOptions xmlns="">
+ <InterfaceProperties>
+ </InterfaceProperties>
+ <InterfaceName>
+ </InterfaceName>
+ </ToolOptions>
+ <ToolType xmlns="">com.atmel.avrdbg.tool.simulator</ToolType>
+ <ToolNumber xmlns="">
+ </ToolNumber>
+ <ToolName xmlns="">Simulator</ToolName>
+ </com_atmel_avrdbg_tool_simulator>
+ <com_atmel_avrdbg_tool_stk500>
+ <ToolOptions>
+ <InterfaceProperties>
+ <IspClock>125000</IspClock>
+ </InterfaceProperties>
+ <InterfaceName>ISP</InterfaceName>
+ </ToolOptions>
+ <ToolType>com.atmel.avrdbg.tool.stk500</ToolType>
+ <ToolNumber>
+ </ToolNumber>
+ <ToolName>STK500</ToolName>
+ </com_atmel_avrdbg_tool_stk500>
+ <avrtoolinterfaceclock>125000</avrtoolinterfaceclock>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
+ <ToolchainSettings>
+ <AvrGcc>
+ <avrgcc.common.Device>-mmcu=atmega8 -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\gcc\dev\atmega8"</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>
+ <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.132\include</Value>
+ </ListValues>
+ </avrgcc.assembler.general.IncludePaths>
+ </AvrGcc>
+ </ToolchainSettings>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
+ <ToolchainSettings>
+ <AvrGcc>
+ <avrgcc.common.Device>-mmcu=atmega8 -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\gcc\dev\atmega8"</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>
+ <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.132\include</Value>
+ </ListValues>
+ </avrgcc.assembler.general.IncludePaths>
+ <avrgcc.assembler.debugging.DebugLevel>Default (-Wa,-g)</avrgcc.assembler.debugging.DebugLevel>
+ </AvrGcc>
+ </ToolchainSettings>
+ </PropertyGroup>
+ <ItemGroup>
+ <Compile Include="floppy.c">
+ <SubType>compile</SubType>
+ </Compile>
+ <Compile Include="floppy.h">
+ <SubType>compile</SubType>
+ </Compile>
+ <Compile Include="main.c">
+ <SubType>compile</SubType>
+ </Compile>
+ </ItemGroup>
+ <Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />
+</Project> \ No newline at end of file
diff --git a/floppyMusic/main.c b/floppyMusic/main.c
new file mode 100644
index 0000000..9743636
--- /dev/null
+++ b/floppyMusic/main.c
@@ -0,0 +1,22 @@
+/*
+ * floppyMusic.c
+ *
+ * Created: 29.04.2017 16:59:57
+ * Author : Jonas
+ */
+
+#include <avr/io.h>
+
+#include "floppy.h"
+
+int main(void)
+{
+ floppy_setup(&PORTC, &DDRC, &PORTD, &DDRD);
+ floppy_set_frequency(0, 4);
+
+ while (1)
+ {
+
+ }
+}
+