Skip to content

Commit

Permalink
Merge pull request #40 from nofeletru/test
Browse files Browse the repository at this point in the history
Merge last version to master branch
  • Loading branch information
nofeletru committed Sep 23, 2021
2 parents 7843a43 + fff025e commit 4224723
Show file tree
Hide file tree
Showing 74 changed files with 12,529 additions and 2,881 deletions.
Binary file removed 6_kcontrols_1.6.zip
Binary file not shown.
114 changes: 0 additions & 114 deletions chiplist_old.xml

This file was deleted.

69 changes: 35 additions & 34 deletions firmware/AVRISP-MKII/Lib/I2c.c
Expand Up @@ -21,13 +21,7 @@ void i2c_init(void)
I2C_SCL_HIGH;
}

void i2c_start(void)
{
I2C_SDA_LOW;
_delay_us(I2C_DELAY);
}

void i2c_start_rep(void)
void i2c_start(void)
{
I2C_SCL_LOW;
_delay_us(I2C_DELAY);
Expand Down Expand Up @@ -133,34 +127,27 @@ unsigned char i2c_address(unsigned char address, unsigned char rw)
void i2c_read(void)
{
uint16_t BytesToRead;
uint8_t mem_address_len;
uint8_t dev_address;
uint16_t mem_address;

BytesToRead = Endpoint_Read_16_LE();
dev_address = Endpoint_Read_8();
mem_address_len = Endpoint_Read_8();
mem_address = Endpoint_Read_16_LE();

Endpoint_ClearOUT();
Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPADDR);
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);

i2c_init();
i2c_start();
i2c_address(dev_address, I2C_WRITE);
if(mem_address_len > 1) i2c_send_byte(mem_address >> 8);
if(mem_address_len > 0) i2c_send_byte(mem_address);

i2c_start_rep();
i2c_address(dev_address, I2C_READ);
//÷èòàåì
while (BytesToRead > 0)
{

/* Read the next byte */
if(BytesToRead == 1) //ïîñëåäíèé áàéò
if(BytesToRead == 1)//ïîñëåäíèé áàéò
{
Endpoint_Write_8(i2c_read_byte(I2C_NACK));
i2c_stop();
}
else
Endpoint_Write_8(i2c_read_byte(I2C_ACK));

Expand All @@ -174,8 +161,6 @@ void i2c_read(void)
BytesToRead--;
}

i2c_stop();

if (Endpoint_BytesInEndpoint() > 0)
{
Endpoint_WaitUntilReady();
Expand All @@ -189,20 +174,16 @@ void i2c_write(void)
uint16_t BytesToWrite;
uint8_t ChunkToWrite;
uint8_t ProgData[16];
uint8_t mem_address_len;
uint8_t i2c_stop_aw;
uint8_t dev_address;
uint16_t mem_address;

BytesToWrite = Endpoint_Read_16_LE();
dev_address = Endpoint_Read_8();
mem_address_len = Endpoint_Read_8();
mem_address = Endpoint_Read_16_LE();
i2c_stop_aw = Endpoint_Read_8();

i2c_init();
i2c_start();
i2c_address(dev_address, I2C_WRITE);
if(mem_address_len > 1) i2c_send_byte(mem_address >> 8);
if(mem_address_len > 0) i2c_send_byte(mem_address);

while (BytesToWrite > 0)
{
Expand All @@ -218,24 +199,44 @@ void i2c_write(void)
}
}

i2c_stop();
if(i2c_stop_aw == 1) i2c_stop();
else i2c_start();

Endpoint_ClearOUT();
}

void i2c_ack(void)
void i2c_writebyte(void)
{
uint8_t dev_address;
uint8_t data;

dev_address = Endpoint_Read_8();
data = Endpoint_Read_8();

Endpoint_ClearOUT();
Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPADDR);
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);

i2c_init();
i2c_start();
Endpoint_Write_8(i2c_address(dev_address, I2C_WRITE));
i2c_stop();
//i2c_init();
//i2c_start();
Endpoint_Write_8(i2c_send_byte(data));

//i2c_stop();
Endpoint_ClearIN();
}

void i2c_readbyte(void)
{
uint8_t ack;

ack = Endpoint_Read_8();

Endpoint_ClearOUT();
Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPADDR);
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);

//i2c_init();
//i2c_start();
Endpoint_Write_8(i2c_read_byte(ack));

//i2c_stop();
Endpoint_ClearIN();
}
10 changes: 7 additions & 3 deletions firmware/AVRISP-MKII/Lib/I2c.h
Expand Up @@ -20,15 +20,19 @@

#define CMD_I2C_READ 0x35
#define CMD_I2C_WRITE 0x36
#define CMD_I2C_ACK 0x37
#define CMD_I2C_START 0x37
#define CMD_I2C_STOP 0x55
#define CMD_I2C_READBYTE 0x56
#define CMD_I2C_WRITEBYTE 0x57
#define CMD_I2C_INIT 0x58

void i2c_init(void);
void i2c_start(void);
void i2c_start_rep(void);
void i2c_stop(void);
unsigned char i2c_send_byte(unsigned char byte);
unsigned char i2c_read_byte(unsigned char ack);
unsigned char i2c_address(unsigned char address, unsigned char rw);
void i2c_read(void);
void i2c_write(void);
void i2c_ack(void);
void i2c_writebyte(void);
void i2c_readbyte(void);
22 changes: 20 additions & 2 deletions firmware/AVRISP-MKII/Lib/V2Protocol.c
Expand Up @@ -115,8 +115,23 @@ void V2Protocol_ProcessCommand(void)
SPI_25Write();
break;
//I2C
case CMD_I2C_ACK:
i2c_ack();
case CMD_I2C_INIT:
i2c_init();
Endpoint_ClearOUT();
break;
case CMD_I2C_START:
i2c_start();
Endpoint_ClearOUT();
break;
case CMD_I2C_STOP:
i2c_stop();
Endpoint_ClearOUT();
break;
case CMD_I2C_READBYTE:
i2c_readbyte();
break;
case CMD_I2C_WRITEBYTE:
i2c_writebyte();
break;
case CMD_I2C_READ:
i2c_read();
Expand All @@ -133,6 +148,9 @@ void V2Protocol_ProcessCommand(void)
break;
case CMD_MW_BUSY:
mw_busy();
break;
case CMD_MW_INIT:
mw_init();
break;
case CMD_FIRMWARE_VER:
give_firmware_ver();
Expand Down

0 comments on commit 4224723

Please sign in to comment.