mirror of
				https://github.com/Oleg-Stepanenko-owo/IEBUS
				synced 2025-10-31 18:37:12 +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