mirror of
https://github.com/Oleg-Stepanenko-owo/IEBUS
synced 2025-06-28 18:26:24 +00:00
update timers for D5,D6 pins
This commit is contained in:
parent
a4836d69b1
commit
45a82442bd
@ -39,13 +39,13 @@ void AVCLanDrv::begin ()
|
|||||||
#if defined(__AVR_ATmega8__)
|
#if defined(__AVR_ATmega8__)
|
||||||
// ASSR=0x00;
|
// ASSR=0x00;
|
||||||
TCCR2 = 0x02;
|
TCCR2 = 0x02;
|
||||||
// TCNT2=0x00;
|
// TCNT0=0x00;
|
||||||
// OCR2=0x00;
|
// OCR2=0x00;
|
||||||
#else // ATMega168
|
#else // ATMega168
|
||||||
// ASSR=0x00;
|
// ASSR=0x00;
|
||||||
// TCCR2A=0x00;
|
// TCCR2A=0x00;
|
||||||
TCCR2B = 0x02;
|
TCCR0B = 0x02;
|
||||||
// TCNT2=0x00;
|
// TCNT0=0x00;
|
||||||
// OCR2A=0x00;
|
// OCR2A=0x00;
|
||||||
// OCR2B=0x00;
|
// OCR2B=0x00;
|
||||||
#endif
|
#endif
|
||||||
@ -75,18 +75,18 @@ word AVCLanDrv::readBits (byte nbBits)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Reset timer to measure bit length.
|
// Reset timer to measure bit length.
|
||||||
TCNT2 = 0;
|
TCNT0 = 0;
|
||||||
// Wait until falling edge.
|
// Wait until falling edge.
|
||||||
while (INPUT_IS_SET);
|
while (INPUT_IS_SET);
|
||||||
// Compare half way between a '1' (20 us) and a '0' (32 us ): 32 - (32 - 20) /2 = 26 us
|
// Compare half way between a '1' (20 us) and a '0' (32 us ): 32 - (32 - 20) /2 = 26 us
|
||||||
if (TCNT2 < AVC_BIT_0_HOLD_ON_MIN_LENGTH) {
|
if (TCNT0 < AVC_BIT_0_HOLD_ON_MIN_LENGTH) {
|
||||||
// Set new bit.
|
// Set new bit.
|
||||||
data |= 0x0001;
|
data |= 0x0001;
|
||||||
// Adjust parity.
|
// Adjust parity.
|
||||||
_parityBit = !_parityBit;
|
_parityBit = !_parityBit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (INPUT_IS_CLEAR && TCNT2 < AVC_NORMAL_BIT_LENGTH);
|
while (INPUT_IS_CLEAR && TCNT0 < AVC_NORMAL_BIT_LENGTH);
|
||||||
|
|
||||||
// char buff[10] = {0};
|
// char buff[10] = {0};
|
||||||
// sprintf(buff, "%x", data );
|
// sprintf(buff, "%x", data );
|
||||||
@ -106,18 +106,18 @@ byte AVCLanDrv::_readMessage ()
|
|||||||
|
|
||||||
// Start bit.
|
// Start bit.
|
||||||
while (INPUT_IS_CLEAR);
|
while (INPUT_IS_CLEAR);
|
||||||
TCCR2B = 0x03; // prescaler 32
|
TCCR0B = 0x03; // prescaler 32
|
||||||
TCNT2 = 0;
|
TCNT0 = 0;
|
||||||
// Wait until falling edge.
|
// Wait until falling edge.
|
||||||
while (INPUT_IS_SET) {
|
while (INPUT_IS_SET) {
|
||||||
t = TCNT2;
|
t = TCNT0;
|
||||||
if (t > 0xFF) {
|
if (t > 0xFF) {
|
||||||
TCCR2B = 0x02; // prescaler 8
|
TCCR0B = 0x02; // prescaler 8
|
||||||
SREG = oldSREG;
|
SREG = oldSREG;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
TCCR2B = 0x02; // prescaler 8
|
TCCR0B = 0x02; // prescaler 8
|
||||||
|
|
||||||
if (t < AVC_START_BIT_HOLD_ON_MIN_LENGTH) {
|
if (t < AVC_START_BIT_HOLD_ON_MIN_LENGTH) {
|
||||||
//if (t < 0x16){
|
//if (t < 0x16){
|
||||||
@ -231,17 +231,17 @@ byte AVCLanDrv::readMessage ()
|
|||||||
////--------------------------------------------------------------------------------
|
////--------------------------------------------------------------------------------
|
||||||
//{
|
//{
|
||||||
// // Reset timer to measure bit length.
|
// // Reset timer to measure bit length.
|
||||||
// TCCR2B = 0x03; // prescaler 32
|
// TCCR0B = 0x03; // prescaler 32
|
||||||
// TCNT2 = 0;
|
// TCNT0 = 0;
|
||||||
// OUTPUT_SET_1;
|
// OUTPUT_SET_1;
|
||||||
//
|
//
|
||||||
// // Pulse level high duration.
|
// // Pulse level high duration.
|
||||||
// while ( TCNT2 < AVC_START_BIT_HOLD_ON_LENGTH );
|
// while ( TCNT0 < AVC_START_BIT_HOLD_ON_LENGTH );
|
||||||
// OUTPUT_SET_0;
|
// OUTPUT_SET_0;
|
||||||
//
|
//
|
||||||
// // Pulse level low duration until ~185 us.
|
// // Pulse level low duration until ~185 us.
|
||||||
// while ( TCNT2 < AVC_START_BIT_LENGTH );
|
// while ( TCNT0 < AVC_START_BIT_LENGTH );
|
||||||
// TCCR2B = 0x02; // prescaler 8
|
// TCCR0B = 0x02; // prescaler 8
|
||||||
//
|
//
|
||||||
//}
|
//}
|
||||||
|
|
||||||
@ -251,17 +251,17 @@ void AVCLanDrv::send1BitWord (bool data)
|
|||||||
//--------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------
|
||||||
{
|
{
|
||||||
// Reset timer to measure bit length.
|
// Reset timer to measure bit length.
|
||||||
TCNT2 = 0;
|
TCNT0 = 0;
|
||||||
OUTPUT_SET_1;
|
OUTPUT_SET_1;
|
||||||
|
|
||||||
if (data) {
|
if (data) {
|
||||||
while (TCNT2 < AVC_BIT_1_HOLD_ON_LENGTH);
|
while (TCNT0 < AVC_BIT_1_HOLD_ON_LENGTH);
|
||||||
} else {
|
} else {
|
||||||
while (TCNT2 < AVC_BIT_0_HOLD_ON_LENGTH);
|
while (TCNT0 < AVC_BIT_0_HOLD_ON_LENGTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
OUTPUT_SET_0;
|
OUTPUT_SET_0;
|
||||||
while (TCNT2 < AVC_NORMAL_BIT_LENGTH);
|
while (TCNT0 < AVC_NORMAL_BIT_LENGTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
//// Send a 4 bit word to the AVCLan
|
//// Send a 4 bit word to the AVCLan
|
||||||
@ -274,20 +274,20 @@ void AVCLanDrv::send1BitWord (bool data)
|
|||||||
// // Most significant bit out first.
|
// // Most significant bit out first.
|
||||||
// for ( char nbBits = 0; nbBits < 4; nbBits++ ) {
|
// for ( char nbBits = 0; nbBits < 4; nbBits++ ) {
|
||||||
// // Reset timer to measure bit length.
|
// // Reset timer to measure bit length.
|
||||||
// TCNT2 = 2;
|
// TCNT0 = 2;
|
||||||
// OUTPUT_SET_1;
|
// OUTPUT_SET_1;
|
||||||
//
|
//
|
||||||
// if (data & 0x8) {
|
// if (data & 0x8) {
|
||||||
// // Adjust parity.
|
// // Adjust parity.
|
||||||
// _parityBit = ! _parityBit;
|
// _parityBit = ! _parityBit;
|
||||||
// while ( TCNT2 < AVC_BIT_1_HOLD_ON_LENGTH );
|
// while ( TCNT0 < AVC_BIT_1_HOLD_ON_LENGTH );
|
||||||
// } else {
|
// } else {
|
||||||
// while ( TCNT2 < AVC_BIT_0_HOLD_ON_LENGTH );
|
// while ( TCNT0 < AVC_BIT_0_HOLD_ON_LENGTH );
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
// OUTPUT_SET_0;
|
// OUTPUT_SET_0;
|
||||||
// // Hold output low until end of bit.
|
// // Hold output low until end of bit.
|
||||||
// while ( TCNT2 < AVC_NORMAL_BIT_LENGTH );
|
// while ( TCNT0 < AVC_NORMAL_BIT_LENGTH );
|
||||||
//
|
//
|
||||||
// // Fetch next bit.
|
// // Fetch next bit.
|
||||||
// data <<= 1;
|
// data <<= 1;
|
||||||
@ -304,20 +304,20 @@ void AVCLanDrv::send1BitWord (bool data)
|
|||||||
// // Most significant bit out first.
|
// // Most significant bit out first.
|
||||||
// for ( char nbBits = 0; nbBits < 8; nbBits++ ) {
|
// for ( char nbBits = 0; nbBits < 8; nbBits++ ) {
|
||||||
// // Reset timer to measure bit length.
|
// // Reset timer to measure bit length.
|
||||||
// TCNT2 = 2;
|
// TCNT0 = 2;
|
||||||
// OUTPUT_SET_1;
|
// OUTPUT_SET_1;
|
||||||
//
|
//
|
||||||
// if (data & 0x80) {
|
// if (data & 0x80) {
|
||||||
// // Adjust parity.
|
// // Adjust parity.
|
||||||
// _parityBit = ! _parityBit;
|
// _parityBit = ! _parityBit;
|
||||||
// while ( TCNT2 < AVC_BIT_1_HOLD_ON_LENGTH );
|
// while ( TCNT0 < AVC_BIT_1_HOLD_ON_LENGTH );
|
||||||
// } else {
|
// } else {
|
||||||
// while ( TCNT2 < AVC_BIT_0_HOLD_ON_LENGTH );
|
// while ( TCNT0 < AVC_BIT_0_HOLD_ON_LENGTH );
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
// OUTPUT_SET_0;
|
// OUTPUT_SET_0;
|
||||||
// // Hold output low until end of bit.
|
// // Hold output low until end of bit.
|
||||||
// while ( TCNT2 < AVC_NORMAL_BIT_LENGTH );
|
// while ( TCNT0 < AVC_NORMAL_BIT_LENGTH );
|
||||||
//
|
//
|
||||||
// // Fetch next bit.
|
// // Fetch next bit.
|
||||||
// data <<= 1;
|
// data <<= 1;
|
||||||
@ -334,20 +334,20 @@ void AVCLanDrv::send1BitWord (bool data)
|
|||||||
// // Most significant bit out first.
|
// // Most significant bit out first.
|
||||||
// for ( char nbBits = 0; nbBits < 12; nbBits++ ) {
|
// for ( char nbBits = 0; nbBits < 12; nbBits++ ) {
|
||||||
// // Reset timer to measure bit length.
|
// // Reset timer to measure bit length.
|
||||||
// TCNT2 = 2;
|
// TCNT0 = 2;
|
||||||
// OUTPUT_SET_1;
|
// OUTPUT_SET_1;
|
||||||
//
|
//
|
||||||
// if (data & 0x0800) {
|
// if (data & 0x0800) {
|
||||||
// // Adjust parity.
|
// // Adjust parity.
|
||||||
// _parityBit = ! _parityBit;
|
// _parityBit = ! _parityBit;
|
||||||
// while ( TCNT2 < AVC_BIT_1_HOLD_ON_LENGTH );
|
// while ( TCNT0 < AVC_BIT_1_HOLD_ON_LENGTH );
|
||||||
// } else {
|
// } else {
|
||||||
// while ( TCNT2 < AVC_BIT_0_HOLD_ON_LENGTH );
|
// while ( TCNT0 < AVC_BIT_0_HOLD_ON_LENGTH );
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
// OUTPUT_SET_0;
|
// OUTPUT_SET_0;
|
||||||
// // Hold output low until end of bit.
|
// // Hold output low until end of bit.
|
||||||
// while ( TCNT2 < AVC_NORMAL_BIT_LENGTH );
|
// while ( TCNT0 < AVC_NORMAL_BIT_LENGTH );
|
||||||
//
|
//
|
||||||
// // Fetch next bit.
|
// // Fetch next bit.
|
||||||
// data <<= 1;
|
// data <<= 1;
|
||||||
@ -361,11 +361,11 @@ bool AVCLanDrv::isAvcBusFree (void)
|
|||||||
//--------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------
|
||||||
{
|
{
|
||||||
// Reset timer.
|
// Reset timer.
|
||||||
TCNT2 = 0;
|
TCNT0 = 0;
|
||||||
|
|
||||||
while (INPUT_IS_CLEAR) {
|
while (INPUT_IS_CLEAR) {
|
||||||
// We assume the bus is free if anything happens for the length of 1 bit.
|
// We assume the bus is free if anything happens for the length of 1 bit.
|
||||||
if (TCNT2 > AVC_NORMAL_BIT_LENGTH) {
|
if (TCNT0 > AVC_NORMAL_BIT_LENGTH) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -384,21 +384,21 @@ bool AVCLanDrv::isAvcBusFree (void)
|
|||||||
// // taken over the bus maintaining the pulse until the equivalent of a bit '0' (32 us) is formed.
|
// // taken over the bus maintaining the pulse until the equivalent of a bit '0' (32 us) is formed.
|
||||||
//
|
//
|
||||||
// // Reset timer to measure bit length.
|
// // Reset timer to measure bit length.
|
||||||
// TCNT2 = 0;
|
// TCNT0 = 0;
|
||||||
// OUTPUT_SET_1;
|
// OUTPUT_SET_1;
|
||||||
//
|
//
|
||||||
// // Generate bit '0'.
|
// // Generate bit '0'.
|
||||||
// while (TCNT2 < AVC_BIT_1_HOLD_ON_LENGTH);
|
// while (TCNT0 < AVC_BIT_1_HOLD_ON_LENGTH);
|
||||||
// OUTPUT_SET_0;
|
// OUTPUT_SET_0;
|
||||||
//
|
//
|
||||||
// AVC_OUT_DIS;
|
// AVC_OUT_DIS;
|
||||||
//
|
//
|
||||||
// while (TCNT2 < AVC_BIT_1_HOLD_ON_LENGTH + AVC_1U_LENGTH);
|
// while (TCNT0 < AVC_BIT_1_HOLD_ON_LENGTH + AVC_1U_LENGTH);
|
||||||
// // Measure final resulting bit.
|
// // Measure final resulting bit.
|
||||||
// while ( INPUT_IS_SET );
|
// while ( INPUT_IS_SET );
|
||||||
//
|
//
|
||||||
// // Sample half-way through bit '0' (26 us) to detect whether the target is acknowledging.
|
// // Sample half-way through bit '0' (26 us) to detect whether the target is acknowledging.
|
||||||
// if (TCNT2 > AVC_BIT_0_HOLD_ON_MIN_LENGTH) {
|
// if (TCNT0 > AVC_BIT_0_HOLD_ON_MIN_LENGTH) {
|
||||||
// // Slave is acknowledging (ack = 0). Wait until end of ack bit.
|
// // Slave is acknowledging (ack = 0). Wait until end of ack bit.
|
||||||
// while (INPUT_IS_SET );
|
// while (INPUT_IS_SET );
|
||||||
// AVC_OUT_EN;
|
// AVC_OUT_EN;
|
||||||
|
@ -13,17 +13,17 @@
|
|||||||
//********** arduino & driver based on PCA82C250 **********
|
//********** arduino & driver based on PCA82C250 **********
|
||||||
#ifdef AVCLAN_PCA82C250
|
#ifdef AVCLAN_PCA82C250
|
||||||
#define AVCLANDRIVER_TYPE "Arduino - PCA82C250"
|
#define AVCLANDRIVER_TYPE "Arduino - PCA82C250"
|
||||||
// define out pin (pin 8 arduino)
|
// define out pin (pin D6 arduino)
|
||||||
#define DATAOUT_DDR DDRD
|
#define DATAOUT_DDR DDRD
|
||||||
#define DATAOUT_PORT PORTD
|
#define DATAOUT_PORT PORTD
|
||||||
#define DATAOUT_PIN PIND
|
#define DATAOUT_PIN PIND
|
||||||
#define DATAOUT 7
|
#define DATAOUT 6
|
||||||
|
|
||||||
// define in pin (pin 9 arduino)
|
// define in pin (pin D5 arduino)
|
||||||
#define DATAIN_DDR DDRD
|
#define DATAIN_DDR DDRD
|
||||||
#define DATAIN_PORT PORTD
|
#define DATAIN_PORT PORTD
|
||||||
#define DATAIN_PIN PIND
|
#define DATAIN_PIN PIND
|
||||||
#define DATAIN 6
|
#define DATAIN 5
|
||||||
|
|
||||||
// LED connected to digital pin 13
|
// LED connected to digital pin 13
|
||||||
#define LED_DDR DDRC
|
#define LED_DDR DDRC
|
||||||
|
Loading…
x
Reference in New Issue
Block a user