From da0f1fd9f3d9fa06733b1241a5c0718fa122fe4f Mon Sep 17 00:00:00 2001 From: Kanstantsin Shautsou Date: Wed, 26 Feb 2020 01:35:25 +0300 Subject: [PATCH] Adjust timeouts --- .../mini2/libraries/AVCLanCDch/AVCLanCDch.cpp | 4 +- .../mini2/libraries/AVCLanDrv/AVCLanDrv.cpp | 40 ++++++++++++++++--- arduino/mini2/libraries/AVCLanDrv/AVCLanDrv.h | 6 ++- .../mini2/libraries/AVCLanNavi/AVCLanNavi.h | 2 +- 4 files changed, 41 insertions(+), 11 deletions(-) diff --git a/arduino/mini2/libraries/AVCLanCDch/AVCLanCDch.cpp b/arduino/mini2/libraries/AVCLanCDch/AVCLanCDch.cpp index d89c551..0c17c0f 100644 --- a/arduino/mini2/libraries/AVCLanCDch/AVCLanCDch.cpp +++ b/arduino/mini2/libraries/AVCLanCDch/AVCLanCDch.cpp @@ -79,8 +79,8 @@ const AvcOutMessage CmdLanCheckOk PROGMEM = {AVC_MSG_DIRECT, 0x06, {0x00 // AVCLan CDchanger & timer1 init, void AVCLanCDch::begin(){ - avclan.deviceAddress = 0x0240; - +// avclan.deviceAddress = 0x0240; + avclan.deviceAddress = 0x0360; // timer1 setup, prescaler factor - 1024 TCCR1A = 0; // normal mode TCCR1B = 5; // Prescaler /1024 diff --git a/arduino/mini2/libraries/AVCLanDrv/AVCLanDrv.cpp b/arduino/mini2/libraries/AVCLanDrv/AVCLanDrv.cpp index d6e1bf7..fd161ba 100644 --- a/arduino/mini2/libraries/AVCLanDrv/AVCLanDrv.cpp +++ b/arduino/mini2/libraries/AVCLanDrv/AVCLanDrv.cpp @@ -114,9 +114,10 @@ byte AVCLanDrv::_readMessage (){ TCCR2B=0x02; // prescaler 8 if (t < AVC_START_BIT_HOLD_ON_MIN_LENGTH){ - //if (t < 0x16){ - SREG = oldSREG; - return 2; + bSerial.print("Error t < AVC_START_BIT_HOLD_ON_MIN_LENGTH: "); + bSerial.printHex8(t); + SREG = oldSREG; + return 2; } broadcast = readBits(1); @@ -391,6 +392,11 @@ bool AVCLanDrv::handleAcknowledge (void){ return true; } + if (broadcast == AVC_MSG_DIRECT){ + // Acknowledge. + send1BitWord(1); + return true; + } // Return acknowledge bit. return readAcknowledge(); } @@ -495,15 +501,37 @@ void AVCLanDrv::printMessage(bool incoming){ } bSerial.printHex4(masterAddress >> 8); bSerial.printHex8(masterAddress); - bSerial.print(" "); + bSerial.print("->"); bSerial.printHex4(slaveAddress >> 8); bSerial.printHex8(slaveAddress); bSerial.print(" "); bSerial.printHex8(dataSize); + if (slaveAddress == 0x0FFF) { + bSerial.print(" "); + } else { + bSerial.print(" "); + } - for (byte i = 0; i < dataSize; i++){ + for (byte i = 0; i < dataSize; i++) { bSerial.printHex8(message[i]); + if (i == 0) { + if (slaveAddress == 0x01FF) { // separate logical src and dst addrs + bSerial.print(" "); + } else if (slaveAddress == 0x0FFF) { + + } else { + bSerial.print("->"); + } + } else if (i == 1) { + if (slaveAddress == 0x01FF) { +// bSerial.print(" "); + } else if (slaveAddress == 0x0FFF) { + + } else { + bSerial.print(" "); + } + } } bSerial.println(); @@ -576,4 +604,4 @@ void AVCLanDrv::loadMessage(AvcOutMessage *msg){ } }; -AVCLanDrv avclan; \ No newline at end of file +AVCLanDrv avclan; diff --git a/arduino/mini2/libraries/AVCLanDrv/AVCLanDrv.h b/arduino/mini2/libraries/AVCLanDrv/AVCLanDrv.h index 2a7526d..77bbe99 100644 --- a/arduino/mini2/libraries/AVCLanDrv/AVCLanDrv.h +++ b/arduino/mini2/libraries/AVCLanDrv/AVCLanDrv.h @@ -45,10 +45,11 @@ #define AVC_BIT_1_HOLD_ON_LENGTH 0x28 // 20 uS * (F_CPU / 1000000L / 8) #define AVC_BIT_0_HOLD_ON_LENGTH 0x40 // 32 uS * (F_CPU / 1000000L / 8) //#define AVC_BIT_0_HOLD_ON_MIN_LENGTH 0x34 // 26 uS * (F_CPU / 1000000L / 8) Compare half way between a '1' (20 us) and a '0' (32 us ): 32 - (32 - 20) /2 = 26 us -#define AVC_BIT_0_HOLD_ON_MIN_LENGTH 0x3C // 30 uS * (F_CPU / 1000000L / 8) Compare half way between a '1' (20 us) and a '0' (32 us ): 32 - (32 - 20) /2 = 26 us +#define AVC_BIT_0_HOLD_ON_MIN_LENGTH 0x32 // from pc car forum +//#define AVC_BIT_0_HOLD_ON_MIN_LENGTH 0x3C // 30 uS * (F_CPU / 1000000L / 8) Compare half way between a '1' (20 us) and a '0' (32 us ): 32 - (32 - 20) /2 = 26 us #define AVC_START_BIT_LENGTH 0x5D // 186 uS * (F_CPU / 1000000L / 32) , prescaler 32 #define AVC_START_BIT_HOLD_ON_LENGTH 0x54 // 168 uS * (F_CPU / 1000000L / 32) prescaler 32 -#define AVC_START_BIT_HOLD_ON_MIN_LENGTH 0x16 // 44 uS * (F_CPU / 1000000L / 32) grater that AVC_NORMAL_BIT_LENGTH, prescaler 32 +#define AVC_START_BIT_HOLD_ON_MIN_LENGTH 0x09 // 44 uS * (F_CPU / 1000000L / 32) grater that AVC_NORMAL_BIT_LENGTH, prescaler 32 #define AVC_1U_LENGTH 0x02 // 1 uS * (F_CPU / 1000000L / 8) #define AVC_MAXMSGLEN 32 @@ -104,6 +105,7 @@ class AVCLanDrv{ byte event; byte actionID; bool readonly; + bool log; void begin (); byte readMessage (void); byte sendMessage (void); diff --git a/arduino/mini2/libraries/AVCLanNavi/AVCLanNavi.h b/arduino/mini2/libraries/AVCLanNavi/AVCLanNavi.h index b1664a4..f482ea2 100644 --- a/arduino/mini2/libraries/AVCLanNavi/AVCLanNavi.h +++ b/arduino/mini2/libraries/AVCLanNavi/AVCLanNavi.h @@ -9,7 +9,7 @@ #include #include "AVCLanDrv.h" -#include "WProgram.h" +#include "Arduino.h" #define AVCLANDEVICE_NAME " Navi" #define AVCLANDEVICE_VERSION "0.0.1"