Skip to content

Commit 4224723

Browse files
authored
Merge pull request #40 from nofeletru/test
Merge last version to master branch
2 parents 7843a43 + fff025e commit 4224723

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+12529
-2881
lines changed

6_kcontrols_1.6.zip

-2.19 MB
Binary file not shown.

chiplist_old.xml

Lines changed: 0 additions & 114 deletions
This file was deleted.

firmware/AVRISP-MKII/Lib/I2c.c

Lines changed: 35 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,7 @@ void i2c_init(void)
2121
I2C_SCL_HIGH;
2222
}
2323

24-
void i2c_start(void)
25-
{
26-
I2C_SDA_LOW;
27-
_delay_us(I2C_DELAY);
28-
}
29-
30-
void i2c_start_rep(void)
24+
void i2c_start(void)
3125
{
3226
I2C_SCL_LOW;
3327
_delay_us(I2C_DELAY);
@@ -133,34 +127,27 @@ unsigned char i2c_address(unsigned char address, unsigned char rw)
133127
void i2c_read(void)
134128
{
135129
uint16_t BytesToRead;
136-
uint8_t mem_address_len;
137130
uint8_t dev_address;
138-
uint16_t mem_address;
139131

140132
BytesToRead = Endpoint_Read_16_LE();
141133
dev_address = Endpoint_Read_8();
142-
mem_address_len = Endpoint_Read_8();
143-
mem_address = Endpoint_Read_16_LE();
144134

145135
Endpoint_ClearOUT();
146136
Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPADDR);
147137
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
148138

149139
i2c_init();
150-
i2c_start();
151-
i2c_address(dev_address, I2C_WRITE);
152-
if(mem_address_len > 1) i2c_send_byte(mem_address >> 8);
153-
if(mem_address_len > 0) i2c_send_byte(mem_address);
154-
155-
i2c_start_rep();
156140
i2c_address(dev_address, I2C_READ);
157141
//÷èòàåì
158142
while (BytesToRead > 0)
159143
{
160144

161145
/* Read the next byte */
162-
if(BytesToRead == 1) //ïîñëåäíèé áàéò
146+
if(BytesToRead == 1)//ïîñëåäíèé áàéò
147+
{
163148
Endpoint_Write_8(i2c_read_byte(I2C_NACK));
149+
i2c_stop();
150+
}
164151
else
165152
Endpoint_Write_8(i2c_read_byte(I2C_ACK));
166153

@@ -174,8 +161,6 @@ void i2c_read(void)
174161
BytesToRead--;
175162
}
176163

177-
i2c_stop();
178-
179164
if (Endpoint_BytesInEndpoint() > 0)
180165
{
181166
Endpoint_WaitUntilReady();
@@ -189,20 +174,16 @@ void i2c_write(void)
189174
uint16_t BytesToWrite;
190175
uint8_t ChunkToWrite;
191176
uint8_t ProgData[16];
192-
uint8_t mem_address_len;
177+
uint8_t i2c_stop_aw;
193178
uint8_t dev_address;
194-
uint16_t mem_address;
195179

196180
BytesToWrite = Endpoint_Read_16_LE();
197181
dev_address = Endpoint_Read_8();
198-
mem_address_len = Endpoint_Read_8();
199-
mem_address = Endpoint_Read_16_LE();
182+
i2c_stop_aw = Endpoint_Read_8();
200183

201184
i2c_init();
202185
i2c_start();
203186
i2c_address(dev_address, I2C_WRITE);
204-
if(mem_address_len > 1) i2c_send_byte(mem_address >> 8);
205-
if(mem_address_len > 0) i2c_send_byte(mem_address);
206187

207188
while (BytesToWrite > 0)
208189
{
@@ -218,24 +199,44 @@ void i2c_write(void)
218199
}
219200
}
220201

221-
i2c_stop();
202+
if(i2c_stop_aw == 1) i2c_stop();
203+
else i2c_start();
222204

223205
Endpoint_ClearOUT();
224206
}
225207

226-
void i2c_ack(void)
208+
void i2c_writebyte(void)
227209
{
228-
uint8_t dev_address;
210+
uint8_t data;
229211

230-
dev_address = Endpoint_Read_8();
212+
data = Endpoint_Read_8();
231213

232214
Endpoint_ClearOUT();
233215
Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPADDR);
234216
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
235217

236-
i2c_init();
237-
i2c_start();
238-
Endpoint_Write_8(i2c_address(dev_address, I2C_WRITE));
239-
i2c_stop();
218+
//i2c_init();
219+
//i2c_start();
220+
Endpoint_Write_8(i2c_send_byte(data));
221+
222+
//i2c_stop();
240223
Endpoint_ClearIN();
224+
}
225+
226+
void i2c_readbyte(void)
227+
{
228+
uint8_t ack;
229+
230+
ack = Endpoint_Read_8();
231+
232+
Endpoint_ClearOUT();
233+
Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPADDR);
234+
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
235+
236+
//i2c_init();
237+
//i2c_start();
238+
Endpoint_Write_8(i2c_read_byte(ack));
239+
240+
//i2c_stop();
241+
Endpoint_ClearIN();
241242
}

firmware/AVRISP-MKII/Lib/I2c.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,19 @@
2020

2121
#define CMD_I2C_READ 0x35
2222
#define CMD_I2C_WRITE 0x36
23-
#define CMD_I2C_ACK 0x37
23+
#define CMD_I2C_START 0x37
24+
#define CMD_I2C_STOP 0x55
25+
#define CMD_I2C_READBYTE 0x56
26+
#define CMD_I2C_WRITEBYTE 0x57
27+
#define CMD_I2C_INIT 0x58
2428

2529
void i2c_init(void);
2630
void i2c_start(void);
27-
void i2c_start_rep(void);
2831
void i2c_stop(void);
2932
unsigned char i2c_send_byte(unsigned char byte);
3033
unsigned char i2c_read_byte(unsigned char ack);
3134
unsigned char i2c_address(unsigned char address, unsigned char rw);
3235
void i2c_read(void);
3336
void i2c_write(void);
34-
void i2c_ack(void);
37+
void i2c_writebyte(void);
38+
void i2c_readbyte(void);

firmware/AVRISP-MKII/Lib/V2Protocol.c

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,23 @@ void V2Protocol_ProcessCommand(void)
115115
SPI_25Write();
116116
break;
117117
//I2C
118-
case CMD_I2C_ACK:
119-
i2c_ack();
118+
case CMD_I2C_INIT:
119+
i2c_init();
120+
Endpoint_ClearOUT();
121+
break;
122+
case CMD_I2C_START:
123+
i2c_start();
124+
Endpoint_ClearOUT();
125+
break;
126+
case CMD_I2C_STOP:
127+
i2c_stop();
128+
Endpoint_ClearOUT();
129+
break;
130+
case CMD_I2C_READBYTE:
131+
i2c_readbyte();
132+
break;
133+
case CMD_I2C_WRITEBYTE:
134+
i2c_writebyte();
120135
break;
121136
case CMD_I2C_READ:
122137
i2c_read();
@@ -133,6 +148,9 @@ void V2Protocol_ProcessCommand(void)
133148
break;
134149
case CMD_MW_BUSY:
135150
mw_busy();
151+
break;
152+
case CMD_MW_INIT:
153+
mw_init();
136154
break;
137155
case CMD_FIRMWARE_VER:
138156
give_firmware_ver();

0 commit comments

Comments
 (0)