Skip to content

Commit

Permalink
Fixed a race condition on ESP32 (thanks to Nick Kirkby), version 1.1.5
Browse files Browse the repository at this point in the history
  • Loading branch information
pierremolinaro committed Jun 2, 2019
1 parent 26e5fc6 commit 45fe4d1
Show file tree
Hide file tree
Showing 15 changed files with 210 additions and 144 deletions.
2 changes: 1 addition & 1 deletion examples/LoopBackDemoTeensy3x/LoopBackDemoTeensy3x.ino
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ void setup () {
}
}

//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

static uint32_t gBlinkLedDate = 0 ;
static uint32_t gReceivedFrameCount = 0 ;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ void setup () {
}
}

//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

static uint32_t gBlinkLedDate = 0 ;
static uint32_t gPhase = 0 ;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ void setup () {
}
}

//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

static uint32_t gBlinkLedDate = 0 ;
static uint32_t gReceivedFrameCount = 0 ;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ void setup () {
}
}

//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

static uint32_t gBlinkLedDate = 0 ;
static uint32_t gPhase = 0 ;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ void setup () {
}
}

//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

static uint32_t gBlinkLedDate = 0 ;
static uint8_t gPhase = 0 ;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ void setup () {
}
}

//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

static uint32_t gBlinkLedDate = 0 ;
static uint32_t gFrameCount = 0 ;
Expand Down
Binary file modified extras/acan2517.pdf
Binary file not shown.
2 changes: 1 addition & 1 deletion library.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name=ACAN2517
version=1.1.4
version=1.1.5
author=Pierre Molinaro
maintainer=Pierre Molinaro <[email protected]>
sentence=Driver for MCP2517FD CAN Controller (CAN 2.0B mode)
Expand Down
254 changes: 160 additions & 94 deletions src/ACAN2517.cpp

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions src/ACAN2517.h
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------
// A CAN driver for MCP2517FD, CAN 2.0B mode
// by Pierre Molinaro
// https://github.com/pierremolinaro/acan2517
//
//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

#pragma once

//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

#include <ACAN2517Settings.h>
#include <ACANBuffer.h>
#include <ACAN2517Filters.h>
#include <SPI.h>

//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------
// ACAN2517 class
//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

class ACAN2517 {

Expand Down Expand Up @@ -169,5 +169,5 @@ class ACAN2517 {

} ;

//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

12 changes: 6 additions & 6 deletions src/ACAN2517Filters.h
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------
// An utility class for:
// - ACAN2517 CAN driver for MCP2517FD (CAN 2.0B mode)
// by Pierre Molinaro
// https://github.com/pierremolinaro/acan2517
//
//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

#ifndef ACAN2517_FILTERS_CLASS_DEFINED
#define ACAN2517_FILTERS_CLASS_DEFINED

//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

#include <CANMessage.h>

//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------
// ACAN2517Filters class
//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

class ACAN2517Filters {

Expand Down Expand Up @@ -233,6 +233,6 @@ class ACAN2517Filters {

} ;

//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

#endif
28 changes: 14 additions & 14 deletions src/ACAN2517Settings.cpp
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------
// A CAN driver for MCP2517 (CAN 2.0B mode)
// by Pierre Molinaro
// https://github.com/pierremolinaro/acan2517
//
//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

#include <ACAN2517Settings.h>

//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------
// sysClock
//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

uint32_t ACAN2517Settings::sysClock (const Oscillator inOscillator) {
uint32_t sysClock = 40UL * 1000 * 1000 ;
Expand All @@ -35,9 +35,9 @@ uint32_t ACAN2517Settings::sysClock (const Oscillator inOscillator) {
return sysClock ;
}

//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------
// CONSTRUCTOR
//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

ACAN2517Settings::ACAN2517Settings (const Oscillator inOscillator,
const uint32_t inDesiredBitRate,
Expand Down Expand Up @@ -100,23 +100,23 @@ mOscillator (inOscillator) {
mBitRateClosedToDesiredRate = (diff * ppm) <= (((uint64_t) W) * inTolerancePPM) ;
} ;

//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------
// ACCESSORS
//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

uint32_t ACAN2517Settings::actualBitRate (void) const {
const uint32_t TQCount = 1 /* Sync Seg */ + mPhaseSegment1 + mPhaseSegment2 ;
return mSysClock / mBitRatePrescaler / TQCount ;
}

//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

bool ACAN2517Settings::exactBitRate (void) const {
const uint32_t TQCount = 1 /* Sync Seg */ + mPhaseSegment1 + mPhaseSegment2 ;
return mSysClock == (mBitRatePrescaler * mDesiredBitRate * TQCount) ;
}

//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

uint32_t ACAN2517Settings::ppmFromDesiredBitRate (void) const {
const uint32_t TQCount = 1 /* Sync Seg */ + mPhaseSegment1 + mPhaseSegment2 ;
Expand All @@ -126,7 +126,7 @@ uint32_t ACAN2517Settings::ppmFromDesiredBitRate (void) const {
return (uint32_t) ((diff * ppm) / W) ;
}

//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

uint32_t ACAN2517Settings::samplePointFromBitStart (void) const {
const uint32_t TQCount = 1 /* Sync Seg */ + mPhaseSegment1 + mPhaseSegment2 ;
Expand All @@ -135,7 +135,7 @@ uint32_t ACAN2517Settings::samplePointFromBitStart (void) const {
return (samplePoint * partPerCent) / TQCount ;
}

//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

uint32_t ACAN2517Settings::CANBitSettingConsistency (void) const {
uint32_t errorCode = 0 ; // Means no error
Expand Down Expand Up @@ -168,7 +168,7 @@ uint32_t ACAN2517Settings::CANBitSettingConsistency (void) const {
return errorCode ;
}

//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

uint32_t ACAN2517Settings::ramUsage (void) const {
uint32_t result = 0 ;
Expand All @@ -182,5 +182,5 @@ uint32_t ACAN2517Settings::ramUsage (void) const {
return result ;
}

//——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//----------------------------------------------------------------------------------------------------------------------

Loading

0 comments on commit 45fe4d1

Please sign in to comment.