PATA should work now

This commit is contained in:
Oliver Lehmann 2012-06-16 19:34:39 +00:00
parent 14ad787b0b
commit e9cdb6216e
11 changed files with 124 additions and 64 deletions

View File

@ -39,7 +39,7 @@ C_SRCS += \
../wdc_drv_pata.c \ ../wdc_drv_pata.c \
../wdc_main.c \ ../wdc_main.c \
../wdc_drv_mmc.c \ ../wdc_drv_mmc.c \
../wdc_drv_mmc_perf.c \ ../wdc_if_disk_perf.c \
../uart.c \ ../uart.c \
../wdc_if_p8000.c \ ../wdc_if_p8000.c \
../wdc_if_disk.c \ ../wdc_if_disk.c \
@ -58,7 +58,7 @@ wdc_avr.o \
wdc_drv_pata.o \ wdc_drv_pata.o \
wdc_main.o \ wdc_main.o \
wdc_drv_mmc.o \ wdc_drv_mmc.o \
wdc_drv_mmc_perf.o \ wdc_if_disk_perf.o \
uart.o \ uart.o \
wdc_if_p8000.o \ wdc_if_p8000.o \
wdc_if_disk.o \ wdc_if_disk.o \
@ -71,7 +71,7 @@ wdc_avr.o \
wdc_drv_pata.o \ wdc_drv_pata.o \
wdc_main.o \ wdc_main.o \
wdc_drv_mmc.o \ wdc_drv_mmc.o \
wdc_drv_mmc_perf.o \ wdc_if_disk_perf.o \
uart.o \ uart.o \
wdc_if_p8000.o \ wdc_if_p8000.o \
wdc_if_disk.o \ wdc_if_disk.o \
@ -84,7 +84,7 @@ wdc_avr.d \
wdc_drv_pata.d \ wdc_drv_pata.d \
wdc_main.d \ wdc_main.d \
wdc_drv_mmc.d \ wdc_drv_mmc.d \
wdc_drv_mmc_perf.d \ wdc_if_disk_perf.d \
uart.d \ uart.d \
wdc_if_p8000.d \ wdc_if_p8000.d \
wdc_if_disk.d \ wdc_if_disk.d \
@ -97,7 +97,7 @@ wdc_avr.d \
wdc_drv_pata.d \ wdc_drv_pata.d \
wdc_main.d \ wdc_main.d \
wdc_drv_mmc.d \ wdc_drv_mmc.d \
wdc_drv_mmc_perf.d \ wdc_if_disk_perf.d \
uart.d \ uart.d \
wdc_if_p8000.d \ wdc_if_p8000.d \
wdc_if_disk.d \ wdc_if_disk.d \
@ -138,7 +138,7 @@ OUTPUT_FILE_DEP:= ./makedep.mk
./%.o: .././%.c ./%.o: .././%.c
@echo Building file: $< @echo Building file: $<
@echo Invoking: AVR/GNU C Compiler : (AVR_8_bit_GNU_Toolchain_3.4.0_663) 4.6.2 @echo Invoking: AVR/GNU C Compiler : (AVR_8_bit_GNU_Toolchain_3.4.0_663) 4.6.2
$(QUOTE)C:\Program Files (x86)\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\bin\avr-gcc.exe$(QUOTE) -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fpack-struct -fshort-enums -Wall -Wundef -Werror -pedantic -pedantic-errors -c -std=c99 -save-temps -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -mmcu=atmega1284p -o"$@" "$<" $(QUOTE)C:\Program Files (x86)\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\bin\avr-gcc.exe$(QUOTE) -funsigned-char -funsigned-bitfields -O1 -ffunction-sections -fpack-struct -fshort-enums -c -std=gnu99 -save-temps -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -mmcu=atmega1284p -o"$@" "$<"
@echo Finished building: $< @echo Finished building: $<

View File

@ -10,7 +10,7 @@ wdc_main.c
wdc_drv_mmc.c wdc_drv_mmc.c
wdc_drv_mmc_perf.c wdc_if_disk_perf.c
uart.c uart.c

View File

@ -174,7 +174,7 @@ T 67100 33100 9 8 1 0 0 0 1
T 68500 33100 9 8 1 0 0 0 1 T 68500 33100 9 8 1 0 0 0 1
1 1
T 71000 33400 9 7 1 0 0 0 1 T 71000 33400 9 7 1 0 0 0 1
$Revision: 1.16 $ / $Date: 2012/06/16 10:49:19 $ $Revision: 1.17 $ / $Date: 2012/06/16 19:34:40 $
T 71000 33100 9 8 1 0 0 0 1 T 71000 33100 9 8 1 0 0 0 1
Oliver Lehmann <lehmann@ans-netz.de> Oliver Lehmann <lehmann@ans-netz.de>
N 50600 59400 51200 59400 4 N 50600 59400 51200 59400 4
@ -930,14 +930,14 @@ C 45100 50300 1 0 1 busripper-1.sym
T 45100 50700 5 8 0 0 0 6 1 T 45100 50700 5 8 0 0 0 6 1
device=none device=none
T 45200 50400 5 10 1 1 0 0 1 T 45200 50400 5 10 1 1 0 0 1
pinlabel=DA1 pinlabel=DA2
} }
C 45100 50000 1 0 1 busripper-1.sym C 45100 50000 1 0 1 busripper-1.sym
{ {
T 45100 50400 5 8 0 0 0 6 1 T 45100 50400 5 8 0 0 0 6 1
device=none device=none
T 45200 50100 5 10 1 1 0 0 1 T 45200 50100 5 10 1 1 0 0 1
pinlabel=DA2 pinlabel=DA1
} }
C 45100 56300 1 0 1 busripper-1.sym C 45100 56300 1 0 1 busripper-1.sym
{ {
@ -1179,7 +1179,7 @@ pinlabel=DA0
N 66000 39600 69800 39600 4 N 66000 39600 69800 39600 4
{ {
T 66000 39700 5 10 1 1 0 0 1 T 66000 39700 5 10 1 1 0 0 1
pinlabel=DA2 pinlabel=DA1
} }
N 67500 41200 66000 41200 4 N 67500 41200 66000 41200 4
{ {
@ -1204,7 +1204,7 @@ pinlabel=\_CS1\_
N 62700 39200 64600 39200 4 N 62700 39200 64600 39200 4
{ {
T 64600 39300 5 10 1 1 0 6 1 T 64600 39300 5 10 1 1 0 6 1
pinlabel=DA1 pinlabel=DA2
} }
N 64600 40400 63500 40400 4 N 64600 40400 63500 40400 4
{ {

View File

@ -15,10 +15,11 @@ OBJS += \
wdc_avr.o \ wdc_avr.o \
wdc_main.o \ wdc_main.o \
wdc_drv_mmc.o \ wdc_drv_mmc.o \
wdc_drv_mmc_perf.o \ wdc_drv_pata.o \
uart.o \ uart.o \
wdc_if_p8000.o \ wdc_if_p8000.o \
wdc_if_disk.o \ wdc_if_disk.o \
wdc_if_disk_perf.o \
wdc_par.o \ wdc_par.o \
wdc_ram.o wdc_ram.o

View File

@ -54,12 +54,6 @@
<avrgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>True</avrgcc.compiler.optimization.PrepareFunctionsForGarbageCollection> <avrgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>True</avrgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>
<avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers> <avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
<avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum> <avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
<avrgcc.compiler.warnings.Undefined>True</avrgcc.compiler.warnings.Undefined>
<avrgcc.compiler.warnings.WarningsAsErrors>True</avrgcc.compiler.warnings.WarningsAsErrors>
<avrgcc.compiler.warnings.Pedantic>True</avrgcc.compiler.warnings.Pedantic>
<avrgcc.compiler.warnings.PedanticWarningsAsErrors>True</avrgcc.compiler.warnings.PedanticWarningsAsErrors>
<avrgcc.compiler.miscellaneous.OtherFlags>-std=c99</avrgcc.compiler.miscellaneous.OtherFlags>
<avrgcc.compiler.miscellaneous.DoNotDeleteTemporaryFiles>True</avrgcc.compiler.miscellaneous.DoNotDeleteTemporaryFiles> <avrgcc.compiler.miscellaneous.DoNotDeleteTemporaryFiles>True</avrgcc.compiler.miscellaneous.DoNotDeleteTemporaryFiles>
<avrgcc.linker.libraries.Libraries> <avrgcc.linker.libraries.Libraries>
<ListValues> <ListValues>
@ -98,7 +92,7 @@
<Compile Include="wdc_drv_mmc.h"> <Compile Include="wdc_drv_mmc.h">
<SubType>compile</SubType> <SubType>compile</SubType>
</Compile> </Compile>
<Compile Include="wdc_drv_mmc_perf.c"> <Compile Include="wdc_if_disk_perf.c">
<SubType>compile</SubType> <SubType>compile</SubType>
</Compile> </Compile>
<Compile Include="uart.c"> <Compile Include="uart.c">

View File

@ -26,7 +26,7 @@
*/ */
/* /*
* $Id: wdc_config.h,v 1.16 2012/06/14 20:24:24 olivleh1 Exp $ * $Id: wdc_config.h,v 1.17 2012/06/16 19:34:39 olivleh1 Exp $
*/ */
@ -107,8 +107,8 @@
#define PIN_ATACS_CS0 PINB0 #define PIN_ATACS_CS0 PINB0
#define PIN_ATACS_CS1 PINB1 #define PIN_ATACS_CS1 PINB1
#define PIN_ATADA_DA0 PIND2 #define PIN_ATADA_DA0 PIND2
#define PIN_ATADA_DA1 PIND3 #define PIN_ATADA_DA1 PIND4
#define PIN_ATADA_DA2 PIND4 #define PIN_ATADA_DA2 PIND3
/* /*
* maximum performance with both turned off * maximum performance with both turned off
@ -120,8 +120,8 @@
#define MMC_MULTIBLOCK 1 #define MMC_MULTIBLOCK 1
#define MEASURE_SDCARD_TIME 1 #define MEASURE_DISK_PERFORMANCE 1
#undef MEASURE_SDCARD_TIME #undef MEASURE_DISK_PERFORMANCE
#define DEBUG 1 #define DEBUG 1

View File

@ -26,7 +26,7 @@
*/ */
/* /*
* $Id: wdc_drv_pata.c,v 1.6 2012/06/16 08:39:01 olivleh1 Exp $ * $Id: wdc_drv_pata.c,v 1.7 2012/06/16 19:34:39 olivleh1 Exp $
*/ */
#include "wdc_config.h" #include "wdc_config.h"
@ -56,11 +56,17 @@ void pata_read_bytes ( uint8_t *buffer, uint16_t bytes );
* ||+--- DA0 * ||+--- DA0
* |||+-- DA1 * |||+-- DA1
* ||||+- DA2 * ||||+- DA2
* |||||*/ * ||||| */
#define PATA_RD_STATUS_REGISTER 0x0F /* 0b01111*/ #define PATA_R_STATUS_REGISTER 0x0F /* 0b01111 */
#define PATA_WR_COMMAND_REGISTER 0x0F /* 0b01111*/ #define PATA_W_COMMAND_REGISTER 0x0F /* 0b01111 */
#define PATA_WR_DEVICE_CONTROL_REGISTER 0x0B /* 0b01011*/ #define PATA_W_DEVICE_CONTROL_REGISTER 0x0B /* 0b01011 */
#define PATA_RD_DATA_REGISTER 0x08 /* 0b01000*/
#define PATA_RW_DATA_REGISTER 0x08 /* 0b01000 */
#define PATA_RW_SECTOR_COUNT_REGISTER 0b00001010
#define PATA_RW_SECTOR_NUMBER_REGISTER 0b00001110
#define PATA_RW_CYLINDER_LOW_REGISTER 0b00001001
#define PATA_RW_CYLINDER_HIGH_REGISTER 0b00001101
#define PATA_RW_DEVICE_HEAD_REGISTER 0b00001011
#define ata_ctl_high() ata_cs0_disable();ata_cs1_disable();ata_da0_disable();ata_da1_disable();ata_da2_disable(); #define ata_ctl_high() ata_cs0_disable();ata_cs1_disable();ata_da0_disable();ata_da1_disable();ata_da2_disable();
@ -72,17 +78,17 @@ void pata_read_bytes ( uint8_t *buffer, uint16_t bytes );
uint8_t pata_rdy() uint8_t pata_rdy()
{ {
return ( read_io_register ( PATA_RD_STATUS_REGISTER ) & ATA_STAT_RDY ) ? 1 : 0; return ( read_io_register ( PATA_R_STATUS_REGISTER ) & ATA_STAT_RDY ) ? 1 : 0;
} }
uint8_t pata_bsy() uint8_t pata_bsy()
{ {
return ( read_io_register ( PATA_RD_STATUS_REGISTER ) & ATA_STAT_BSY ) ? 1 : 0; return ( read_io_register ( PATA_R_STATUS_REGISTER ) & ATA_STAT_BSY ) ? 1 : 0;
} }
uint8_t pata_drq() uint8_t pata_drq()
{ {
return ( read_io_register ( PATA_RD_STATUS_REGISTER ) & ATA_STAT_DRQ ) ? 1 : 0; return ( read_io_register ( PATA_R_STATUS_REGISTER ) & ATA_STAT_DRQ ) ? 1 : 0;
} }
void set_io_register ( uint8_t ioreg ) void set_io_register ( uint8_t ioreg )
@ -115,6 +121,7 @@ void pata_set_highbyte ( uint8_t byte )
enable_atalatch(); enable_atalatch();
nop(); nop();
nop(); nop();
nop();
disable_atalatch(); disable_atalatch();
} }
@ -172,21 +179,55 @@ void write_io_register ( uint8_t ioreg, uint8_t byte )
void pata_read_bytes ( uint8_t *buffer, uint16_t bytes ) void pata_read_bytes ( uint8_t *buffer, uint16_t bytes )
{ {
uint8_t byte_l, byte_h;
uint16_t i; uint16_t i;
uint8_t blocks;
configure_port_data_read(); configure_port_data_read();
set_io_register ( PATA_RD_DATA_REGISTER ); for ( blocks = bytes / PATA_BLOCKLEN ; blocks ; blocks-- ) {
ata_rd_enable(); /* Wait for BSY goes low and DRQ goes high */
for ( i = 0; i < bytes / 2; i++ ) { while ( pata_bsy() & !pata_drq() );
byte_l = pata_get_lowbyte();
byte_h = pata_get_highbyte(); set_io_register ( PATA_RW_DATA_REGISTER );
*buffer++ = byte_h; ata_rd_enable();
*buffer++ = byte_l;
for ( i = 0; i < PATA_BLOCKLEN / 2; i++ ) {
*buffer++ = pata_get_lowbyte();
*buffer++ = pata_get_highbyte();
}
ata_rd_disable();
ata_ctl_high();
}
}
void pata_write_bytes ( uint8_t *buffer, uint16_t bytes )
{
uint16_t i, a;
uint8_t blocks;
a = 0;
for ( blocks = bytes / PATA_BLOCKLEN ; blocks ; blocks-- ) {
/* Wait for BSY goes low and DRQ goes high */
while ( pata_bsy() & !pata_drq() );
configure_port_data_write();
set_io_register ( PATA_RW_DATA_REGISTER );
ata_wr_enable();
for ( i = 0; i < PATA_BLOCKLEN / 2; i++ ) {
pata_set_highbyte ( buffer[a + 1] );
pata_set_lowbyte ( buffer[a] );
a += 2;
}
ata_wr_disable();
ata_ctl_high();
configure_port_data_read();
} }
ata_rd_disable();
ata_ctl_high();
} }
void ata_identify() void ata_identify()
@ -195,16 +236,13 @@ void ata_identify()
uint16_t word[256], n; uint16_t word[256], n;
while ( pata_bsy() ); while ( pata_bsy() );
write_io_register ( PATA_WR_COMMAND_REGISTER, CMD_IDENTIFY_DEVICE ); write_io_register ( PATA_W_COMMAND_REGISTER, CMD_IDENTIFY_DEVICE );
/* Wait for BSY goes low and DRQ goes high */
while ( pata_bsy() & !pata_drq() );
pata_read_bytes ( buffer, 512 ); pata_read_bytes ( buffer, 512 );
i = 0; i = 0;
for ( n = 0; n < 512; n += 2 ) { for ( n = 0; n < 512; n += 2 ) {
word[i] = ( ( buffer[n] << 8 ) | buffer[n + 1] ); word[i] = ( ( buffer[n + 1] << 8 ) | buffer[n] );
i++; i++;
} }
@ -231,6 +269,8 @@ void ata_identify()
uart_putc ( '\n' ); uart_putc ( '\n' );
uart_puts_p ( PSTR ( "Model number: " ) ); uart_puts_p ( PSTR ( "Model number: " ) );
for ( uint8_t i = 27; i <= 46; i++ ) { for ( uint8_t i = 27; i <= 46; i++ ) {
uart_putc ( word[i] >> 8 );
uart_putc ( word[i] & 0x00FF );
} }
uart_putc ( '\n' ); uart_putc ( '\n' );
uart_puts_p ( PSTR ( "Number of current logical cylinders: " ) ); uart_puts_p ( PSTR ( "Number of current logical cylinders: " ) );
@ -256,6 +296,7 @@ void ata_identify()
* Public functions * Public functions
*/ */
uint8_t data2_buffer[4096];
uint8_t pata_init () uint8_t pata_init ()
{ {
@ -266,36 +307,58 @@ uint8_t pata_init ()
while ( ( !pata_rdy() ) & pata_bsy() ); while ( ( !pata_rdy() ) & pata_bsy() );
/*set drive 0 to LBA mode*/ /*set drive 0 to LBA mode*/
write_io_register ( PATA_WR_DEVICE_CONTROL_REGISTER, ATA_LBA_DRIVE_0 ); write_io_register ( PATA_W_DEVICE_CONTROL_REGISTER, ATA_LBA_DRIVE_0 );
while ( ( !pata_rdy() ) & pata_bsy() ); while ( ( !pata_rdy() ) & pata_bsy() );
/*recalibrate*/ /*recalibrate*/
write_io_register ( PATA_WR_COMMAND_REGISTER, CMD_RECALIBRATE ); write_io_register ( PATA_W_COMMAND_REGISTER, CMD_RECALIBRATE );
while ( pata_bsy() ); while ( pata_bsy() );
uart_puts_p ( PSTR ( "disk is now ready\n" ) ); uart_puts_p ( PSTR ( "disk is now ready\n" ) );
ata_identify(); ata_identify();
return 1; return 0;
} }
uint8_t pata_read_block ( uint32_t addr, uint8_t *buffer ) uint8_t pata_read_block ( uint32_t addr, uint8_t *buffer )
{ {
return 1; return pata_read_multiblock ( addr, buffer, 1 );
} }
uint8_t pata_write_block ( uint32_t addr, uint8_t *buffer ) uint8_t pata_write_block ( uint32_t addr, uint8_t *buffer )
{ {
return 1; return pata_write_multiblock ( addr, buffer, 1 );
} }
uint8_t pata_read_multiblock ( uint32_t addr, uint8_t *buffer, uint8_t numblocks ) uint8_t pata_read_multiblock ( uint32_t addr, uint8_t *buffer, uint8_t numblocks )
{ {
return 1; write_io_register ( PATA_RW_SECTOR_COUNT_REGISTER, numblocks );
write_io_register ( PATA_RW_SECTOR_NUMBER_REGISTER, ( uint8_t ) addr );
write_io_register ( PATA_RW_CYLINDER_LOW_REGISTER, ( uint8_t ) ( addr >> 8 ) );
write_io_register ( PATA_RW_CYLINDER_HIGH_REGISTER, ( uint8_t ) ( addr >> 16 ) );
write_io_register ( PATA_RW_DEVICE_HEAD_REGISTER, ( ( uint8_t ) ( addr >> 24 ) & 0x0F ) | ATA_LBA_DRIVE_0 );
write_io_register ( PATA_W_COMMAND_REGISTER, CMD_READ_SECTORS );
pata_read_bytes ( buffer, numblocks * PATA_BLOCKLEN );
return 0;
} }
uint8_t pata_write_multiblock ( uint32_t addr, uint8_t *buffer, uint8_t numblocks ) uint8_t pata_write_multiblock ( uint32_t addr, uint8_t *buffer, uint8_t numblocks )
{ {
return 1; write_io_register ( PATA_RW_SECTOR_COUNT_REGISTER, numblocks );
}
write_io_register ( PATA_RW_SECTOR_NUMBER_REGISTER, ( uint8_t ) addr );
write_io_register ( PATA_RW_CYLINDER_LOW_REGISTER, ( uint8_t ) ( addr >> 8 ) );
write_io_register ( PATA_RW_CYLINDER_HIGH_REGISTER, ( uint8_t ) ( addr >> 16 ) );
write_io_register ( PATA_RW_DEVICE_HEAD_REGISTER, ( ( uint8_t ) ( addr >> 24 ) & 0x0F ) | ATA_LBA_DRIVE_0 );
write_io_register ( PATA_W_COMMAND_REGISTER, CMD_WRITE_SECTORS );
pata_write_bytes ( buffer, numblocks * PATA_BLOCKLEN );
return 0;
}

View File

@ -26,7 +26,7 @@
*/ */
/* /*
* $Id: wdc_drv_pata.h,v 1.5 2012/06/16 00:33:26 olivleh1 Exp $ * $Id: wdc_drv_pata.h,v 1.6 2012/06/16 19:34:39 olivleh1 Exp $
*/ */
#ifndef WDC_DRV_PATA_H_ #ifndef WDC_DRV_PATA_H_
@ -99,6 +99,8 @@ extern uint8_t pata_write_multiblock ( uint32_t addr, uint8_t *buffer, uint8_t n
#define CMD_WRITE_SECTORS 0x30 #define CMD_WRITE_SECTORS 0x30
#define CMD_WRITE_VERIFY 0x3C #define CMD_WRITE_VERIFY 0x3C
#define PATA_BLOCKLEN 512
// CB_DH bits 7-4 OF THE DEVICE/HEAD REGISTER // CB_DH bits 7-4 OF THE DEVICE/HEAD REGISTER
#define ATA_DH_DEV0 0xE0 // select device 0 LBA MODE #define ATA_DH_DEV0 0xE0 // select device 0 LBA MODE
#define ATA_DH_DEV1 0xF0 // select device 1 LBA MODE #define ATA_DH_DEV1 0xF0 // select device 1 LBA MODE

View File

@ -26,7 +26,7 @@
*/ */
/* /*
* $Id: wdc_if_disk_perf.c,v 1.5 2012/06/12 17:34:14 olivleh1 Exp $ * $Id: wdc_if_disk_perf.c,v 1.6 2012/06/16 19:34:39 olivleh1 Exp $
*/ */
#include <avr/io.h> #include <avr/io.h>
@ -41,7 +41,7 @@
#include "wdc_ram.h" #include "wdc_ram.h"
#include "uart.h" #include "uart.h"
#ifdef MEASURE_SDCARD_TIME #ifdef MEASURE_DISK_PERFORMANCE
#define BLOCKNO 300000 #define BLOCKNO 300000
extern uint32_t overflow; extern uint32_t overflow;

View File

@ -29,7 +29,7 @@
/* /*
* P8000 WDC Emulator * P8000 WDC Emulator
* *
* $Id: wdc_main.c,v 1.28 2012/06/13 20:17:45 olivleh1 Exp $ * $Id: wdc_main.c,v 1.29 2012/06/16 19:34:39 olivleh1 Exp $
* *
* TODO: - right now, BTT entries are not taken into account * TODO: - right now, BTT entries are not taken into account
*/ */
@ -54,7 +54,7 @@
void atmega_setup ( void ); void atmega_setup ( void );
#ifdef MEASURE_SDCARD_TIME #ifdef MEASURE_DISK_PERFORMANCE
extern void measure_performance(); extern void measure_performance();
volatile uint32_t overflow = 0; volatile uint32_t overflow = 0;
ISR ( TIMER0_OVF_vect ) ISR ( TIMER0_OVF_vect )
@ -74,7 +74,7 @@ extern uint8_t valid_disk;
int __attribute__ ( ( OS_main ) ) int __attribute__ ( ( OS_main ) )
main ( void ) main ( void )
{ {
#ifndef MEASURE_SDCARD_TIME #ifndef MEASURE_DISK_PERFORMANCE
uint16_t cmd_counter = 9; uint16_t cmd_counter = 9;
uint16_t data_counter; uint16_t data_counter;
uint32_t blockno; uint32_t blockno;
@ -85,7 +85,7 @@ main ( void )
uart_puts_p ( PSTR ( "P8000 WDC Emulator 0.90\n" ) ); uart_puts_p ( PSTR ( "P8000 WDC Emulator 0.90\n" ) );
#ifdef MEASURE_SDCARD_TIME #ifdef MEASURE_DISK_PERFORMANCE
measure_performance(); measure_performance();
#else #else