From c16b3d2c3ed616150104f2a6782c880faec68579 Mon Sep 17 00:00:00 2001 From: Wolfgang Draxinger Date: Mon, 23 Dec 2013 22:51:03 +0100 Subject: [PATCH] v0.1 --- eagle.epf | 56 ++++++------------------------------------ firmware.bin | Bin 3162 -> 3138 bytes part_loc_values.pdf | Bin 19485 -> 19514 bytes twi_master_driver.c | 40 ------------------------------ twi_slave_driver.c | 5 ---- vga_edid_injector.brd | Bin 30793 -> 30793 bytes 6 files changed, 8 insertions(+), 93 deletions(-) diff --git a/eagle.epf b/eagle.epf index 196a87d..a58abf8 100644 --- a/eagle.epf +++ b/eagle.epf @@ -12,18 +12,12 @@ UsedLibrary="edid_IC.lbr" UsedLibrary="/home/wolfgangd/downloads/WW-Power.lbr" [Win_1] -Type="Control Panel" -Loc="1 20 1438 457" -State=1 -Number=0 - -[Win_2] Type="Schematic Editor" -Loc="959 19 1437 897" +Loc="720 301 1437 597" State=2 Number=1 File="vga_edid_injector.sch" -View="133984 913714 1605632 1538186" +View="-213330 1357602 522494 1669842" WireWidths=" 0 3048 6096 8128 10160 12700 14224 16764 17780 19304 21844 25400 38100 64516 4064 1524" PadDiameters=" 2540 3048 4064 6096 8128 10160 12700 14224 16764 17780 19304 21844 25400 38100 64516 0" PadDrills=" 5000 6000 7000 9000 10000 11000 12000 13000 14000 15000 16000 20000 22000 28000 32000 8000" @@ -55,50 +49,16 @@ ArcDirection=0 AddLevel=2 PadsSameType=0 Layer=91 -Views=" 1: 133984 913714 1605632 1538186" +Views=" 1: -213330 1357602 522494 1669842" Sheet=1 -[Win_3] -Type="Board Editor" -Loc="0 19 1437 897" -State=1 -Number=2 -File="vga_edid_injector.brd" -View="120410 41984 612026 237272" -WireWidths=" 0 2540 3048 6096 8128 10160 12700 14224 16764 17780 19304 21844 25400 38100 64516 4064" -PadDiameters=" 2540 3048 4064 6096 8128 10160 12700 14224 16764 17780 19304 21844 25400 38100 64516 0" -PadDrills=" 5000 6000 7000 9000 10000 11000 12000 13000 14000 15000 16000 20000 22000 28000 32000 8000" -ViaDiameters=" 2540 3048 4064 6096 8128 10160 12700 14224 16764 17780 19304 21844 25400 38100 64516 0" -ViaDrills=" 5000 7000 8000 9000 10000 11000 12000 13000 14000 15000 16000 20000 22000 28000 32000 6000" -HoleDrills=" 5000 7000 8000 9000 10000 11000 12000 13000 14000 15000 16000 20000 22000 28000 32000 6000" -TextSizes=" 2540 3048 4064 8128 10160 12700 14224 16764 19304 21844 25400 38100 50800 64516 17780 6096" -PolygonSpacings=" 2540 3048 4064 6096 8128 10160 14224 16764 17780 19304 21844 25400 38100 50800 64516 12700" -PolygonIsolates=" 2540 3048 4064 6096 8128 10160 12700 14224 16764 17780 19304 21844 25400 38100 64516 0" -MiterRadiuss=" 2540 3175 6350 12700 25400 10000 20000 25000 50000 75000 100000 0" -SmdSizes=" 3048 1524 4064 2032 6096 3048 8128 4064 10160 5080 12700 6604 14224 7112 16764 8128 17780 9144 19304 9652 21844 10668 25400 12700 38100 19304 50800 25400 64516 32512 12700 6350" -WireBend=0 -WireBendSet=0 -WireCap=1 -MiterStyle=0 -PadShape=0 -ViaShape=0 -PolygonPour=0 -PolygonRank=1 -PolygonThermals=1 -PolygonOrphans=0 -TextRatio=8 -PinDirection=3 -PinFunction=0 -PinLength=2 -PinVisible=3 -SwapLevel=0 -ArcDirection=0 -AddLevel=2 -PadsSameType=0 -Layer=16 +[Win_2] +Type="Control Panel" +Loc="720 600 1437 897" +State=2 +Number=0 [Desktop] Screen="1440 900" Window="Win_1" Window="Win_2" -Window="Win_3" diff --git a/firmware.bin b/firmware.bin index a7961aac075370e3ab234fc6932a7117a6d07819..4e4734f9583582c51c782242d6ddfe093b09290c 100755 GIT binary patch delta 382 zcmca5aY$l<8IuUh!~=CqRzPycLKa2|+H#SO5>zUZ}pXGp1n{Zpp1F-|mPP?kNA|DOFQ(_*H{SsY5L{FD9P2R}%7Rq~+u<%CCkQ(iMN zK2UjJ@W|m!z=MRR5V3EY|8giZ$~Uky3d$Wg#>h7X!a5jn-(RBXeE0_FVaF zr6O{rk!n{s;c mer|J4OIE%q2`qe5N+{k delta 413 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 H8JzzGPQN#t diff --git a/twi_master_driver.c b/twi_master_driver.c index 8c5a695..35a5bed 100644 --- a/twi_master_driver.c +++ b/twi_master_driver.c @@ -281,19 +281,11 @@ bool TWI_MasterWriteRead(TWI_Master_t *twi, */ void TWI_MasterInterruptHandler(TWI_Master_t *twi) { -#if 0 - PORTB.OUTSET = (1<<3); - PORTB.OUTCLR = (1<<3); -#endif uint8_t const currentStatus = twi->interface->MASTER.STATUS; /* If arbitration lost or bus error. */ if ((currentStatus & TWI_MASTER_ARBLOST_bm) || (currentStatus & TWI_MASTER_BUSERR_bm)) { -#if 0 - PORTB.OUTSET = (1<<3); - PORTB.OUTCLR = (1<<3); -#endif TWI_MasterArbitrationLostBusErrorHandler(twi); twi->interface->MASTER.STATUS = @@ -303,10 +295,6 @@ void TWI_MasterInterruptHandler(TWI_Master_t *twi) } else /* If master write interrupt. */ if (currentStatus & TWI_MASTER_WIF_bm) { -#if 0 - PORTB.OUTSET = (1<<3); - PORTB.OUTCLR = (1<<3); -#endif TWI_MasterWriteHandler(twi); twi->interface->MASTER.STATUS = @@ -315,10 +303,6 @@ void TWI_MasterInterruptHandler(TWI_Master_t *twi) } else /* If master read interrupt. */ if (currentStatus & TWI_MASTER_RIF_bm) { -#if 0 - PORTB.OUTSET = (1<<3); - PORTB.OUTCLR = (1<<3); -#endif TWI_MasterReadHandler(twi); twi->interface->MASTER.STATUS = @@ -332,10 +316,6 @@ void TWI_MasterInterruptHandler(TWI_Master_t *twi) } /* If unexpected state. */ else { -#if 0 - PORTB.OUTSET = (1<<3); - PORTB.OUTCLR = (1<<3); -#endif TWI_MasterTransactionFinished(twi, TWIM_RESULT_FAIL); twi->interface->MASTER.STATUS = currentStatus; @@ -380,20 +360,12 @@ static void TWI_MasterWriteHandler(TWI_Master_t *twi) /* If NOT acknowledged (NACK) by slave cancel the transaction. */ if( twi->interface->MASTER.STATUS & TWI_MASTER_RXACK_bm ) { -#if 0 - PORTB.OUTSET = (1<<3); - PORTB.OUTCLR = (1<<3); -#endif twi->interface->MASTER.CTRLC = TWI_MASTER_CMD_STOP_gc; twi->result = TWIM_RESULT_NACK_RECEIVED; twi->status = TWIM_STATUS_READY; } else /* If more bytes to write, send data. */ if( twi->bytesWritten < bytesToWrite ) { -#if 0 - PORTB.OUTSET = (1<<3); - PORTB.OUTCLR = (1<<3); -#endif uint8_t const data = twi->writeData[twi->bytesWritten]; twi->interface->MASTER.DATA = data; twi->bytesWritten++; @@ -402,19 +374,11 @@ static void TWI_MasterWriteHandler(TWI_Master_t *twi) * 'R/_W = 1' */ if( twi->bytesRead < bytesToRead ) { -#if 0 - PORTB.OUTSET = (1<<3); - PORTB.OUTCLR = (1<<3); -#endif uint8_t const readAddress = twi->address | 0x01; twi->interface->MASTER.ADDR = readAddress; } /* If transaction finished, send STOP condition and set RESULT OK. */ else { -#if 0 - PORTB.OUTSET = (1<<3); - PORTB.OUTCLR = (1<<3); -#endif twi->interface->MASTER.CTRLC = TWI_MASTER_CMD_STOP_gc; TWI_MasterTransactionFinished(twi, TWIM_RESULT_OK); } @@ -430,10 +394,6 @@ static void TWI_MasterWriteHandler(TWI_Master_t *twi) */ static void TWI_MasterReadHandler(TWI_Master_t *twi) { -#if 1 - PORTB.OUTTGL = (1<<3); - PORTB.OUTTGL = (1<<3); -#endif /* Local variable used in if test to avoid compiler warning. */ uint8_t const bytesToRead = twi->bytesToRead; diff --git a/twi_slave_driver.c b/twi_slave_driver.c index 341ed6f..d15ed5f 100644 --- a/twi_slave_driver.c +++ b/twi_slave_driver.c @@ -126,11 +126,6 @@ void TWI_SlaveInitializeModule(TWI_Slave_t *twi, */ void TWI_SlaveInterruptHandler(TWI_Slave_t *twi) { -#if 1 - PORTE.OUTSET = (1<<2); - PORTE.OUTCLR = (1<<2); -#endif - uint8_t const currentStatus = twi->interface->SLAVE.STATUS; /* If bus error. */ diff --git a/vga_edid_injector.brd b/vga_edid_injector.brd index bee5ff7121bcaa82eb1f6930a1a492d52e3d8b9e..5231f4f1b19a8e3688f8c811964cc5cca64af07a 100644 GIT binary patch delta 43 zcmV+`0M!4<@Bzv20gw~~CxcEekr+w=1F>TzGy=ZNlZrGY0R@w=G&lnGle6kHUqfcO B5M2NO delta 43 zcmV+`0M!4<@Bzv20gw~~vgF4Ukr+w=53yq B5fK0Y