force occur parity error for test

pull/3608/head
mtei 7 years ago
parent f8370ac02e
commit a7e41fe222

@ -199,6 +199,7 @@ static uint8_t serial_read_chunk(uint8_t *pterrcount, uint8_t bit) {
void serial_write_chunk(uint8_t data, uint8_t bit) NO_INLINE; void serial_write_chunk(uint8_t data, uint8_t bit) NO_INLINE;
void serial_write_chunk(uint8_t data, uint8_t bit) { void serial_write_chunk(uint8_t data, uint8_t bit) {
uint8_t b, p; uint8_t b, p;
int perr = 0; if( data & 0x10 ) perr = 1; /// test parity check!!!
for( p = 0, b = 1<<(bit-1); b ; b >>= 1) { for( p = 0, b = 1<<(bit-1); b ; b >>= 1) {
if(data & b) { if(data & b) {
serial_high(); p ^= 1; serial_high(); p ^= 1;
@ -210,6 +211,7 @@ void serial_write_chunk(uint8_t data, uint8_t bit) {
debug_recvsample(); debug_recvsample();
debug_dummy_delay_send(); debug_dummy_delay_send();
} }
p ^= perr;/// test parity check!!!
/* send parity bit */ /* send parity bit */
if(p & 1) { serial_high(); } if(p & 1) { serial_high(); }
else { serial_low(); } else { serial_low(); }
@ -286,7 +288,9 @@ ISR(SERIAL_PIN_INTERRUPT) {
trans->initiator2target_buffer_size) ) { trans->initiator2target_buffer_size) ) {
*trans->status = RECIVE_ACCEPTED; *trans->status = RECIVE_ACCEPTED;
} else { } else {
debug_parity_on();
*trans->status = RECIVE_DATA_ERROR; *trans->status = RECIVE_DATA_ERROR;
debug_parity_off();
} }
sync_recv(); //weit master output to high sync_recv(); //weit master output to high
@ -329,8 +333,10 @@ int soft_serial_transaction(int sstd_index) {
// if the slave is present syncronize with it // if the slave is present syncronize with it
if (!serial_recive_packet((uint8_t *)trans->target2initiator_buffer, if (!serial_recive_packet((uint8_t *)trans->target2initiator_buffer,
trans->target2initiator_buffer_size) ) { trans->target2initiator_buffer_size) ) {
debug_parity_on();
serial_output(); serial_output();
serial_high(); serial_high();
debug_parity_off();
sei(); sei();
return 2; return 2;
} }

Loading…
Cancel
Save