summaryrefslogtreecommitdiff
path: root/edid_injector.c
diff options
context:
space:
mode:
authorWolfgang Draxinger <Wolfgang.Draxinger@draxit.de>2013-12-22 16:44:10 +0100
committerWolfgang Draxinger <Wolfgang.Draxinger@draxit.de>2013-12-22 16:44:10 +0100
commit217ddb1e32dcb4cde11ecca88418be428895f2dc (patch)
tree8e84c0cecc506f9da54f87d82af95f59d348b3de /edid_injector.c
parent3e8ce25f77700dcef050601412435950dc7dfa7b (diff)
downloadvgaedidinjector-217ddb1e32dcb4cde11ecca88418be428895f2dc.tar.gz
vgaedidinjector-217ddb1e32dcb4cde11ecca88418be428895f2dc.tar.bz2
Makefile separator errors fixed
Diffstat (limited to 'edid_injector.c')
-rw-r--r--edid_injector.c132
1 files changed, 132 insertions, 0 deletions
diff --git a/edid_injector.c b/edid_injector.c
new file mode 100644
index 0000000..5a539e4
--- /dev/null
+++ b/edid_injector.c
@@ -0,0 +1,132 @@
+/* This file has been prepared for Doxygen automatic documentation generation.*/
+/*! \file *********************************************************************
+ *
+ * \brief EDID Injector firmware
+ *
+ * \author
+ * Wolfgang 'datenwolf' Draxinger
+ * Support email: projects+edid_injector@datenwolf.net
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. The name of ATMEL may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND
+ * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *****************************************************************************/
+#include "avr_compiler.h"
+#include "twi_master_driver.h"
+#include "twi_slave_driver.h"
+#include "eeprom_driver.h"
+
+/*! AUDRATE 100kHz and Baudrate Register Settings */
+#define BAUDRATE 100000
+#define TWI_BAUDSETTING TWI_BAUD(F_CPU, BAUDRATE)
+
+/* TWIC is on the display side */
+TWI_t * const twiDisplay = &TWIC;
+TWI_Master_t twimDisplay; /*!< TWI master module. Used for talking with display */
+
+/* TWIE is on the host side */
+TWI_t * const twiHost = &TWIE;
+TWI_Slave_t twimHost; /*!< TWI slave module. Used for talking with host */
+
+
+void TWIC_SlaveProcessData(void)
+{
+}
+
+void edid_initHostTWI(void)
+{
+}
+
+void edid_initDisplayTWI(void)
+{
+}
+
+void edid_readFromDisplayToEEPROM(void)
+{
+ uint8_t buffer[128];
+ memset(buffer, 0, sizeof(buffer);
+
+}
+
+int main(void)
+{
+ edid_initHostTWI();
+
+ edid_initDisplayTWI();
+
+ /* Initialize PORTE for output and PORTD for inverted input. */
+ PORTE.DIRSET = 0xFF;
+ PORTD.DIRCLR = 0xFF;
+ PORTCFG.MPCMASK = 0xFF;
+ PORTD.PIN0CTRL |= PORT_INVEN_bm;
+// PORTCFG.MPCMASK = 0xFF;
+// PORTD.PIN0CTRL = (PORTD.PIN0CTRL & ~PORT_OPC_gm) | PORT_OPC_PULLUP_gc;
+
+ // Enable internal pull-up on PC0, PC1.. Uncomment if you don't have external pullups
+// PORTCFG.MPCMASK = 0x03; // Configure several PINxCTRL registers at the same time
+// PORTC.PIN0CTRL = (PORTC.PIN0CTRL & ~PORT_OPC_gm) | PORT_OPC_PULLUP_gc; //Enable pull-up to get a defined level on the switches
+
+
+
+ /* Initialize TWI master. */
+ TWI_MasterInit(&twiMaster,
+ &TWIC,
+ TWI_MASTER_INTLVL_LO_gc,
+ TWI_BAUDSETTING);
+
+ /* Initialize TWI slave. */
+ TWI_SlaveInitializeDriver(&twiSlave, &TWIC, TWIC_SlaveProcessData);
+ TWI_SlaveInitializeModule(&twiSlave,
+ SLAVE_ADDRESS,
+ TWI_SLAVE_INTLVL_LO_gc);
+
+ /* Enable LO interrupt level. */
+ PMIC.CTRL |= PMIC_LOLVLEN_bm;
+ sei();
+
+
+ #if 0
+ TWI_MasterWriteRead(&twiMaster,
+ SLAVE_ADDRESS,
+ &sendBuffer[BufPos],
+ 1,
+ 1);
+
+
+ while (twiMaster.status != TWIM_STATUS_READY) {
+ /* Wait until transaction is complete. */
+ }
+ #endif
+}
+
+/*! TWIC Master Interrupt vector. */
+ISR(TWIC_TWIM_vect)
+{
+ TWI_MasterInterruptHandler(&twiMaster);
+}
+
+/*! TWIC Slave Interrupt vector. */
+ISR(TWIC_TWIS_vect)
+{
+ TWI_SlaveInterruptHandler(&twiSlave);
+}