Control line code for MUX switching

Fixed PROGMEM references for Atmel Studio
Added Atmel Studio project files
Added new and updated schematic and fritzing files
This commit is contained in:
sweetlilmre
2014-10-12 20:42:39 +02:00
parent f500906076
commit 5eeed2319e
13 changed files with 297 additions and 73 deletions
+195
View File
@@ -0,0 +1,195 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<SchemaVersion>2.0</SchemaVersion>
<ProjectVersion>6.2</ProjectVersion>
<ToolchainName>com.Atmel.AVRGCC8.C</ToolchainName>
<ProjectGuid>{4ec26722-9e4b-4e84-94fb-ac9f2dab1ef2}</ProjectGuid>
<avrdevice>ATmega328P</avrdevice>
<avrdeviceseries>none</avrdeviceseries>
<OutputType>Executable</OutputType>
<Language>C</Language>
<OutputFileName>$(MSBuildProjectName)</OutputFileName>
<OutputFileExtension>.elf</OutputFileExtension>
<OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory>
<AssemblyName>Tapuino</AssemblyName>
<Name>Tapuino</Name>
<RootNamespace>Tapuino</RootNamespace>
<ToolchainFlavour>Native</ToolchainFlavour>
<KeepTimersRunning>true</KeepTimersRunning>
<OverrideVtor>false</OverrideVtor>
<CacheFlash>true</CacheFlash>
<ProgFlashFromRam>true</ProgFlashFromRam>
<RamSnippetAddress />
<UncachedRange />
<OverrideVtorValue />
<BootSegment>2</BootSegment>
<eraseonlaunchrule>1</eraseonlaunchrule>
<AsfFrameworkConfig>
<framework-data xmlns="">
<options />
<configurations />
<files />
<documentation help="" />
<offline-documentation help="" />
<dependencies>
<content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.19.0" />
</dependencies>
</framework-data>
</AsfFrameworkConfig>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<ToolchainSettings>
<AvrGcc>
<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>
<Value>F_CPU=16000000</Value>
</ListValues>
</avrgcc.compiler.symbols.DefSymbols>
<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>
</ToolchainSettings>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<ToolchainSettings>
<AvrGcc>
<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>
<Value>F_CPU=16000000</Value>
</ListValues>
</avrgcc.compiler.symbols.DefSymbols>
<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.debugging.DebugLevel>Default (-Wa,-g)</avrgcc.assembler.debugging.DebugLevel>
</AvrGcc>
</ToolchainSettings>
</PropertyGroup>
<ItemGroup>
<Compile Include="buffer.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="buffer.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="ccsbcs_avr.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="comms.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="comms.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="config.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="diskio.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="ff.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="ff.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="ffconf.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="fileutils.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="fileutils.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="i2cmaster.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="integer.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="lcd.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="lcd.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="lcdutils.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="lcdutils.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="LightweightRingBuff.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="memstrings.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="memstrings.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="menu.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="menu.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="mmc.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="mmc.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="spi.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="spi.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="tapuino.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="tapuino.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="main.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="twimaster.c">
<SubType>compile</SubType>
</Compile>
</ItemGroup>
<Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />
</Project>
+4 -2
View File
@@ -55,8 +55,10 @@
#define CONTROL_PORT PORTD
#define CONTROL_DDR DDRD
#define CONTROL_PIN1 6
#define CONTROL_PIN2 7
#define CONTROL_PIN0 6
#define CONTROL_PIN1 7
#define CONTROL_SET_BUS0() CONTROL_PORT &= ~(_BV(CONTROL_PIN0) | _BV(CONTROL_PIN1))
#define CONTROL_SET_BUS1() { CONTROL_PORT &= ~_BV(CONTROL_PIN1); CONTROL_PORT |= _BV(CONTROL_PIN0); }
#define KEYS_READ_PORT PORTC
#define KEYS_READ_DDR DDRC
Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 376 KiB

After

Width:  |  Height:  |  Size: 229 KiB

+22
View File
@@ -0,0 +1,22 @@
/*
* Tapuino.c
*
* Created: 2014/10/04 04:31:40 PM
* Author: sweetlilmre
*/
#ifndef ARDUINO
#include <avr/io.h>
#include "tapuino.h"
int main(void)
{
while(1)
{
tapuino_run();
//TODO:: Please write your application code
}
}
#endif
+33 -33
View File
@@ -1,42 +1,42 @@
#include <avr/pgmspace.h>
#include "memstrings.h"
prog_char S_DEFAULT_RECORD_DIR[] PROGMEM = "/recorded";
prog_char S_NAME_PATTERN[] PROGMEM = "rec-%.4d.tap";
prog_char S_RECORDING[] PROGMEM = "Recording";
prog_char S_SELECT_RECORD_MODE[] PROGMEM = "Name mode:";
prog_char S_REC_MODE_MANUAL[] PROGMEM = "Manual";
prog_char S_REC_MODE_AUTO[] PROGMEM = "Auto";
prog_char S_ENTER_FILENAME[] PROGMEM = "Enter name";
prog_char S_FILENAME_CHARS[] PROGMEM = " abcdefghijklmnopqrstuvwxyz0123456789_-";
const char S_DEFAULT_RECORD_DIR[] PROGMEM = "/recorded";
const char S_NAME_PATTERN[] PROGMEM = "rec-%.4d.tap";
const char S_RECORDING[] PROGMEM = "Recording";
const char S_SELECT_RECORD_MODE[] PROGMEM = "Name mode:";
const char S_REC_MODE_MANUAL[] PROGMEM = "Manual";
const char S_REC_MODE_AUTO[] PROGMEM = "Auto";
const char S_ENTER_FILENAME[] PROGMEM = "Enter name";
const char S_FILENAME_CHARS[] PROGMEM = " abcdefghijklmnopqrstuvwxyz0123456789_-";
prog_char S_INIT[] PROGMEM = "Init...";
prog_char S_INIT_FAILED[] PROGMEM = "Init failed!";
prog_char S_INIT_OK[] PROGMEM = "Init OK.";
const char S_INIT[] PROGMEM = "Init...";
const char S_INIT_FAILED[] PROGMEM = "Init failed!";
const char S_INIT_OK[] PROGMEM = "Init OK.";
prog_char S_NO_FILES_FOUND[] PROGMEM = "No files found!";
prog_char S_SELECT_FILE[] PROGMEM = "Select file:";
prog_char S_SELECT_MODE[] PROGMEM = "Select mode:";
prog_char S_MODE_PLAY[] PROGMEM = "Play";
prog_char S_MODE_RECORD[] PROGMEM = "Record";
prog_char S_READY_RECORD[] PROGMEM = "Ready...";
prog_char S_PRESS_START[] PROGMEM = "Press START";
const char S_NO_FILES_FOUND[] PROGMEM = "No files found!";
const char S_SELECT_FILE[] PROGMEM = "Select file:";
const char S_SELECT_MODE[] PROGMEM = "Select mode:";
const char S_MODE_PLAY[] PROGMEM = "Play";
const char S_MODE_RECORD[] PROGMEM = "Record";
const char S_READY_RECORD[] PROGMEM = "Ready...";
const char S_PRESS_START[] PROGMEM = "Press START";
prog_char S_MODE_OPTIONS[] PROGMEM = "Options";
prog_char S_OPTION_SIGNAL[] PROGMEM = "Invert";
prog_char S_OPTION_KEY_REPEAT[] PROGMEM = "Key speed";
prog_char S_OPTION_TICKER_SPEED[] PROGMEM = "Ticker speed";
prog_char S_OPTION_TICKER_HOLD[] PROGMEM = "Ticker hold";
prog_char S_OPTION_REC_FINALIZE[] PROGMEM = "Record finalize";
const char S_MODE_OPTIONS[] PROGMEM = "Options";
const char S_OPTION_SIGNAL[] PROGMEM = "Invert";
const char S_OPTION_KEY_REPEAT[] PROGMEM = "Key speed";
const char S_OPTION_TICKER_SPEED[] PROGMEM = "Ticker speed";
const char S_OPTION_TICKER_HOLD[] PROGMEM = "Ticker hold";
const char S_OPTION_REC_FINALIZE[] PROGMEM = "Record finalize";
prog_char S_MKDIR_FAILED[] PROGMEM = "MKDIR fail!";
prog_char S_CHDIR_FAILED[] PROGMEM = "CHDIR fail!";
prog_char S_READ_FAILED[] PROGMEM = "READ fail!";
prog_char S_OPEN_FAILED[] PROGMEM = "OPEN fail!";
prog_char S_INVALID_TAP[] PROGMEM = "Invalid TAP!";
const char S_MKDIR_FAILED[] PROGMEM = "MKDIR fail!";
const char S_CHDIR_FAILED[] PROGMEM = "CHDIR fail!";
const char S_READ_FAILED[] PROGMEM = "READ fail!";
const char S_OPEN_FAILED[] PROGMEM = "OPEN fail!";
const char S_INVALID_TAP[] PROGMEM = "Invalid TAP!";
prog_char S_LOADING[] PROGMEM = "Loading:";
prog_char S_OPERATION_COMPLETE[] PROGMEM = "Complete!";
prog_char S_OPERATION_ABORTED[] PROGMEM = "Aborted!";
const char S_LOADING[] PROGMEM = "Loading:";
const char S_OPERATION_COMPLETE[] PROGMEM = "Complete!";
const char S_OPERATION_ABORTED[] PROGMEM = "Aborted!";
prog_char S_TAP_MAGIC_C64[] PROGMEM = "C64-TAPE-RAW";
const char S_TAP_MAGIC_C64[] PROGMEM = "C64-TAPE-RAW";
+35 -35
View File
@@ -3,43 +3,43 @@
#include <avr/pgmspace.h>
extern prog_char S_DEFAULT_RECORD_DIR[];
extern prog_char S_NAME_PATTERN[];
extern prog_char S_RECORDING[];
extern prog_char S_SELECT_RECORD_MODE[];
extern prog_char S_REC_MODE_MANUAL[];
extern prog_char S_REC_MODE_AUTO[];
extern prog_char S_ENTER_FILENAME[];
extern prog_char S_FILENAME_CHARS[];
extern const char S_DEFAULT_RECORD_DIR[];
extern const char S_NAME_PATTERN[];
extern const char S_RECORDING[];
extern const char S_SELECT_RECORD_MODE[];
extern const char S_REC_MODE_MANUAL[];
extern const char S_REC_MODE_AUTO[];
extern const char S_ENTER_FILENAME[];
extern const char S_FILENAME_CHARS[];
extern prog_char S_STARTINGINIT[];
extern prog_char S_INITI2COK[];
extern prog_char S_INIT[];
extern prog_char S_INIT_FAILED[];
extern prog_char S_INIT_OK[];
extern prog_char S_NO_FILES_FOUND[];
extern prog_char S_SELECT_FILE[];
extern prog_char S_SELECT_MODE[];
extern prog_char S_MODE_PLAY[];
extern prog_char S_MODE_RECORD[];
extern prog_char S_READY_RECORD[];
extern prog_char S_PRESS_START[];
extern const char S_STARTINGINIT[];
extern const char S_INITI2COK[];
extern const char S_INIT[];
extern const char S_INIT_FAILED[];
extern const char S_INIT_OK[];
extern const char S_NO_FILES_FOUND[];
extern const char S_SELECT_FILE[];
extern const char S_SELECT_MODE[];
extern const char S_MODE_PLAY[];
extern const char S_MODE_RECORD[];
extern const char S_READY_RECORD[];
extern const char S_PRESS_START[];
extern prog_char S_MODE_OPTIONS[];
extern prog_char S_OPTION_SIGNAL[];
extern prog_char S_OPTION_KEY_REPEAT[];
extern prog_char S_OPTION_TICKER_SPEED[];
extern prog_char S_OPTION_TICKER_HOLD[];
extern prog_char S_OPTION_REC_FINALIZE[];
extern const char S_MODE_OPTIONS[];
extern const char S_OPTION_SIGNAL[];
extern const char S_OPTION_KEY_REPEAT[];
extern const char S_OPTION_TICKER_SPEED[];
extern const char S_OPTION_TICKER_HOLD[];
extern const char S_OPTION_REC_FINALIZE[];
extern prog_char S_MKDIR_FAILED[];
extern prog_char S_CHDIR_FAILED[];
extern prog_char S_READ_FAILED[];
extern prog_char S_OPEN_FAILED[];
extern prog_char S_INVALID_TAP[];
extern prog_char S_LOADING[];
extern prog_char S_OPERATION_COMPLETE[];
extern prog_char S_OPERATION_ABORTED[];
extern prog_char S_TAP_MAGIC_C64[];
extern const char S_MKDIR_FAILED[];
extern const char S_CHDIR_FAILED[];
extern const char S_READ_FAILED[];
extern const char S_OPEN_FAILED[];
extern const char S_INVALID_TAP[];
extern const char S_LOADING[];
extern const char S_OPERATION_COMPLETE[];
extern const char S_OPERATION_ABORTED[];
extern const char S_TAP_MAGIC_C64[];
#endif
+5
View File
@@ -337,6 +337,11 @@ void handle_mode_options() {
value = g_invert_signal;
if (handle_option_value(S_MODE_OPTIONS, S_OPTION_SIGNAL, &value, 0, 1, 1)) {
g_invert_signal = value;
if (value) {
CONTROL_SET_BUS1();
} else {
CONTROL_SET_BUS0();
}
save = 1;
}
break;
+3 -3
View File
@@ -506,9 +506,9 @@ int tapuino_hardware_setup(void)
MOTOR_PORT |= _BV(MOTOR_PIN);
// Control pins are output
CONTROL_DDR |= _BV(CONTROL_PIN1) | _BV(CONTROL_PIN2);
// default both LOW
CONTROL_PORT &= ~(_BV(CONTROL_PIN1) | _BV(CONTROL_PIN2));
CONTROL_DDR |= _BV(CONTROL_PIN0) | _BV(CONTROL_PIN1);
// default both LOW so BUS 0
CONTROL_SET_BUS0();
// keys are all inputs, activate pullups
KEYS_READ_DDR &= ~_BV(KEY_SELECT_PIN);