Skip to content

Commit

Permalink
Moved all spi pin data into the spi class.
Browse files Browse the repository at this point in the history
Added SPI pins to the advanced display
  • Loading branch information
MartinMueller2003 committed Aug 3, 2024
1 parent e58df00 commit a382f84
Show file tree
Hide file tree
Showing 9 changed files with 66 additions and 21 deletions.
4 changes: 2 additions & 2 deletions ESPixelStick/src/output/OutputAPA102Spi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,7 @@ void c_OutputAPA102Spi::GetConfig (ArduinoJson::JsonObject& jsonConfig)
// DEBUG_START;

c_OutputAPA102::GetConfig (jsonConfig);

jsonConfig[CN_clock_pin] = DEFAULT_SPI_CLOCK_GPIO;
Spi.GetConfig(jsonConfig);

// DEBUG_END;
} // GetConfig
Expand All @@ -83,6 +82,7 @@ bool c_OutputAPA102Spi::SetConfig (ArduinoJson::JsonObject& jsonConfig)
// DEBUG_START;

bool response = c_OutputAPA102::SetConfig (jsonConfig);
response |= Spi.SetConfig(jsonConfig);

// DEBUG_END;
return response;
Expand Down
2 changes: 0 additions & 2 deletions ESPixelStick/src/output/OutputGrinch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ void c_OutputGrinch::GetConfig (ArduinoJson::JsonObject& jsonConfig)
// DEBUG_START;

c_OutputCommon::GetConfig (jsonConfig);
jsonConfig[CN_cs_pin] = uint8_t (DataStrobe);
jsonConfig[CN_count] = NumberOfGrinchControllers;

// DEBUG_END;
Expand Down Expand Up @@ -92,7 +91,6 @@ bool c_OutputGrinch::SetConfig (ArduinoJson::JsonObject& jsonConfig)
// DEBUG_START;

bool response = c_OutputCommon::SetConfig (jsonConfig);
response |= setFromJSON (DataStrobe, jsonConfig, CN_cs_pin);
response |= setFromJSON (NumberOfGrinchControllers, jsonConfig, CN_count);

NumberOfGrinchChannels = NumberOfGrinchControllers * DATA_CHANNELS_PER_GRINCH;
Expand Down
1 change: 0 additions & 1 deletion ESPixelStick/src/output/OutputGrinch.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ class c_OutputGrinch : public c_OutputCommon

#define MAX_NUM_SUPPORTED_GRINCHES 4
#define DATA_CHANNELS_PER_GRINCH 64
gpio_num_t DataStrobe = DEFAULT_SPI_CS_GPIO;

private:
uint8_t NumberOfGrinchControllers = 1;
Expand Down
10 changes: 7 additions & 3 deletions ESPixelStick/src/output/OutputGrinchSpi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ void c_OutputGrinchSpi::Begin ()
{
// DEBUG_START;
Spi.Begin (this);
Spi.SetCsPin(DataStrobe);
HasBeenInitialized = true;

// DEBUG_END;
Expand All @@ -62,11 +61,15 @@ void c_OutputGrinchSpi::Begin ()
//----------------------------------------------------------------------------
void c_OutputGrinchSpi::GetConfig (ArduinoJson::JsonObject& jsonConfig)
{
// DEBUG_START;
DEBUG_START;

c_OutputGrinch::GetConfig (jsonConfig);
Spi.GetConfig (jsonConfig);

// DEBUG_END;
extern void PrettyPrint (JsonObject& jsonStuff, String Name);
PrettyPrint(jsonConfig, "Grinch");

DEBUG_END;
} // GetConfig

//----------------------------------------------------------------------------
Expand All @@ -75,6 +78,7 @@ bool c_OutputGrinchSpi::SetConfig (ArduinoJson::JsonObject& jsonConfig)
// DEBUG_START;

bool response = c_OutputGrinch::SetConfig (jsonConfig);
response |= Spi.SetConfig (jsonConfig);

// DEBUG_END;
return response;
Expand Down
41 changes: 35 additions & 6 deletions ESPixelStick/src/output/OutputSpi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,35 @@ void c_OutputSpi::Begin (c_OutputPixel* _OutputPixel)

} // Begin

//----------------------------------------------------------------------------
bool c_OutputSpi::SetConfig (ArduinoJson::JsonObject & jsonConfig)
{
DEBUG_START;

bool response = true;
/*
response |= setFromJSON(CsPin, jsonConfig, CN_cs_pin);
response |= setFromJSON(DataPin, jsonConfig, CN_data_pin);
response |= setFromJSON(ClockPin, jsonConfig, CN_clock_pin);
*/
DEBUG_END;

return response;
} // SetConfig

//----------------------------------------------------------------------------
void c_OutputSpi::GetConfig (ArduinoJson::JsonObject & jsonConfig)
{
DEBUG_START;

JsonObject SpiConfig = jsonConfig["dataspi"].to<JsonObject>();
SpiConfig[CN_cs_pin] = CsPin;
SpiConfig[CN_data_pin] = DataPin;
SpiConfig[CN_clock_pin] = ClockPin;

DEBUG_END;
} // GetConfig

//----------------------------------------------------------------------------
bool c_OutputSpi::ISR_MoreDataToSend()
{
Expand Down Expand Up @@ -223,10 +252,10 @@ void c_OutputSpi::SendIntensityData ()
TransactionToFill.length++;
}

if(gpio_num_t(-1) != cs_pin)
if(gpio_num_t(-1) != CsPin)
{
// turn on the output strobe (latch data)
digitalWrite(cs_pin, LOW);
digitalWrite(CsPin, LOW);
}

ESP_ERROR_CHECK (spi_device_queue_trans (spi_device_handle, &Transactions[NextTransactionToFill], portMAX_DELAY));
Expand All @@ -236,15 +265,15 @@ void c_OutputSpi::SendIntensityData ()
NextTransactionToFill = 0;
}

if(gpio_num_t(-1) != cs_pin)
if(gpio_num_t(-1) != CsPin)
{
if (!ISR_MoreDataToSend ())
{
spi_transaction_t * pspi_transaction = &TransactionToFill;
spi_device_get_trans_result(spi_device_handle, &pspi_transaction, 100);

// turn on the output strobe (latch data)
digitalWrite(cs_pin, HIGH);
digitalWrite(CsPin, HIGH);
}
}
}
Expand Down Expand Up @@ -280,10 +309,10 @@ bool c_OutputSpi::Poll ()

StartNewFrame ();

if(gpio_num_t(-1) != cs_pin)
if(gpio_num_t(-1) != CsPin)
{
// turn on the output strobe (latch data)
pinMode(cs_pin, OUTPUT);
pinMode(CsPin, OUTPUT);
}

// fill all the available buffers
Expand Down
5 changes: 3 additions & 2 deletions ESPixelStick/src/output/OutputSpi.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ class c_OutputSpi
void GetDriverName (String& Name) { Name = CN_OutputSpi; }
void DataOutputTask (void* pvParameters);
void SendIntensityData ();
void SetCsPin(gpio_num_t _cs_pin) {cs_pin = _cs_pin;}
bool SetConfig (ArduinoJson::JsonObject & jsonConfig);
void GetConfig (ArduinoJson::JsonObject & jsonConfig);

uint32_t DataTaskcounter = 0;
uint32_t DataCbCounter = 0;
Expand All @@ -70,7 +71,6 @@ class c_OutputSpi
uint8_t NumIntensityValuesPerInterrupt = 0;
uint8_t NumIntensityBitsPerInterrupt = 0;
spi_device_handle_t spi_device_handle = 0;
gpio_num_t cs_pin = gpio_num_t(-1);

// uint32_t FrameStartCounter = 0;
uint32_t SendIntensityDataCounter = 0;
Expand All @@ -84,6 +84,7 @@ class c_OutputSpi

gpio_num_t DataPin = DEFAULT_SPI_DATA_GPIO;
gpio_num_t ClockPin = DEFAULT_SPI_CLOCK_GPIO;
gpio_num_t CsPin = DEFAULT_SPI_CS_GPIO;

c_OutputPixel* OutputPixel = nullptr;
#if defined(SUPPORT_OutputType_GRINCH)
Expand Down
4 changes: 2 additions & 2 deletions ESPixelStick/src/output/OutputWS2801Spi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,7 @@ void c_OutputWS2801Spi::GetConfig (ArduinoJson::JsonObject& jsonConfig)
// DEBUG_START;

c_OutputWS2801::GetConfig (jsonConfig);

jsonConfig[CN_clock_pin] = DEFAULT_SPI_CLOCK_GPIO;
Spi.GetConfig(jsonConfig);

// DEBUG_END;
} // GetConfig
Expand All @@ -79,6 +78,7 @@ bool c_OutputWS2801Spi::SetConfig (ArduinoJson::JsonObject& jsonConfig)
// DEBUG_START;

bool response = c_OutputWS2801::SetConfig (jsonConfig);
response |= Spi.SetConfig(jsonConfig);

// DEBUG_END;
return response;
Expand Down
10 changes: 10 additions & 0 deletions html/grinch.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,14 @@
<div class="col-sm-4">
<input type="number" class="form-control is-valid hidden AdvancedMode" id="cs_pin" step="1" min="0" max="64" value="65" required title="GPIO pin on which to output Strobe signals">
</div>

<label class="control-label col-sm-2 hidden AdvancedMode" for="data_pin">GPIO SPI Data</label>
<div class="col-sm-4">
<input type="number" class="form-control is-valid hidden AdvancedMode" id="data_pin" step="1" min="0" max="64" value="65" required title="GPIO pin on which to output Data signals">
</div>

<label class="control-label col-sm-2 hidden AdvancedMode" for="clock_pin">GPIO SPI CLK</label>
<div class="col-sm-4">
<input type="number" class="form-control is-valid hidden AdvancedMode" id="clock_pin" step="1" min="0" max="64" value="65" required title="GPIO pin on which to output Clock signals">
</div>
</fieldset>
10 changes: 7 additions & 3 deletions html/script.js
Original file line number Diff line number Diff line change
Expand Up @@ -1145,7 +1145,9 @@ function ProcessModeConfigurationDataGrinch(GrinchConfig)
// console.info("GrinchConfig: " + JSON.stringify(GrinchConfig));

$('#grinch #controller_count' ).val(GrinchConfig.count);
$('#grinch #cs_pin' ).val(GrinchConfig.cs_pin);
$('#grinch #cs_pin' ).val(GrinchConfig.dataspi.cs_pin);
$('#grinch #data_pin' ).val(GrinchConfig.dataspi.data_pin);
$('#grinch #clock_pin' ).val(GrinchConfig.dataspi.clock_pin);

} // ProcessModeConfigurationDataGrinch

Expand Down Expand Up @@ -1717,8 +1719,10 @@ function ExtractChannelConfigFromHtmlPage(JsonConfig, SectionName) {
}
else if(ChannelConfig.type === "Grinch")
{
ChannelConfig.count = $('#grinch #controller_count' ).val();
ChannelConfig.cs_pin = $('#grinch #cs_pin' ).val();
ChannelConfig.count = $('#grinch #controller_count' ).val();
ChannelConfig.dataspi.cs_pin = $('#grinch #cs_pin' ).val();
ChannelConfig.dataspi.clock_pin = $('#grinch #clock_pin' ).val();
ChannelConfig.dataspi.data_pin = $('#grinch #data_pin' ).val();
}
else {
ExtractConfigFromHtmlPages(elementids, modeControlName, ChannelConfig);
Expand Down

0 comments on commit a382f84

Please sign in to comment.