Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
Nodemcu Firmware
Commits
e30904b6
Commit
e30904b6
authored
May 31, 2019
by
devsaurus
Browse files
force common intr alloc flags for all platform components that use rmt
remove ESP_INTR_FLAG_IRAM to fix #2564
parent
5faf76b7
Changes
6
Hide whitespace changes
Inline
Side-by-side
components/platform/dht.c
View file @
e30904b6
...
@@ -25,6 +25,7 @@
...
@@ -25,6 +25,7 @@
* ****************************************************************************/
* ****************************************************************************/
#include "platform.h"
#include "platform.h"
#include "platform_rmt.h"
#include "driver/rmt.h"
#include "driver/rmt.h"
#include "driver/gpio.h"
#include "driver/gpio.h"
...
@@ -91,7 +92,7 @@ static int dht_init( uint8_t gpio_num )
...
@@ -91,7 +92,7 @@ static int dht_init( uint8_t gpio_num )
rmt_rx
.
rx_config
.
filter_ticks_thresh
=
30
;
rmt_rx
.
rx_config
.
filter_ticks_thresh
=
30
;
rmt_rx
.
rx_config
.
idle_threshold
=
DHT_DURATION_RX_IDLE
;
rmt_rx
.
rx_config
.
idle_threshold
=
DHT_DURATION_RX_IDLE
;
if
(
rmt_config
(
&
rmt_rx
)
==
ESP_OK
)
{
if
(
rmt_config
(
&
rmt_rx
)
==
ESP_OK
)
{
if
(
rmt_driver_install
(
rmt_rx
.
channel
,
512
,
ESP_INTR_FLAG_LOWMED
|
ESP_INTR_FLAG_IRAM
|
ESP
_INTR_FLAG
_SHARED
)
==
ESP_OK
)
{
if
(
rmt_driver_install
(
rmt_rx
.
channel
,
512
,
PLATFORM_RMT
_INTR_FLAG
S
)
==
ESP_OK
)
{
rmt_get_ringbuf_handle
(
dht_rmt
.
channel
,
&
dht_rmt
.
rb
);
rmt_get_ringbuf_handle
(
dht_rmt
.
channel
,
&
dht_rmt
.
rb
);
...
...
components/platform/include/platform.h
View file @
e30904b6
...
@@ -179,30 +179,6 @@ int platform_i2c_send_byte( unsigned id, uint8_t data, int ack_check_en );
...
@@ -179,30 +179,6 @@ int platform_i2c_send_byte( unsigned id, uint8_t data, int ack_check_en );
int
platform_i2c_recv_byte
(
unsigned
id
,
int
ack_val
);
int
platform_i2c_recv_byte
(
unsigned
id
,
int
ack_val
);
// *****************************************************************************
// RMT platform interface
/**
* @brief Allocate an RMT channel.
*
* @param num_mem Number of memory blocks.
*
* @return
* - Channel number when successful
* - -1 if no channel available
*
*/
int
platform_rmt_allocate
(
uint8_t
num_mem
);
/**
* @brief Release a previously allocated RMT channel.
*
* @param channel Channel number.
*
*/
void
platform_rmt_release
(
uint8_t
channel
);
// *****************************************************************************
// *****************************************************************************
// Onewire platform interface
// Onewire platform interface
...
...
components/platform/include/platform_rmt.h
0 → 100644
View file @
e30904b6
#ifndef _PLATFORM_RMT_H_
#define _PLATFORM_RMT_H_
#include "driver/rmt.h"
// define a common set of esp interrupt allocation flags for common use
#define PLATFORM_RMT_INTR_FLAGS (ESP_INTR_FLAG_LOWMED | ESP_INTR_FLAG_SHARED)
// *****************************************************************************
// RMT platform interface
/**
* @brief Allocate an RMT channel.
*
* @param num_mem Number of memory blocks.
*
* @return
* - Channel number when successful
* - -1 if no channel available
*
*/
int
platform_rmt_allocate
(
uint8_t
num_mem
);
/**
* @brief Release a previously allocated RMT channel.
*
* @param channel Channel number.
*
*/
void
platform_rmt_release
(
uint8_t
channel
);
#endif
components/platform/onewire.c
View file @
e30904b6
...
@@ -59,6 +59,7 @@ sample code bearing this copyright.
...
@@ -59,6 +59,7 @@ sample code bearing this copyright.
*/
*/
#include "platform.h"
#include "platform.h"
#include "platform_rmt.h"
#include "driver/rmt.h"
#include "driver/rmt.h"
#include "driver/gpio.h"
#include "driver/gpio.h"
...
@@ -127,7 +128,7 @@ static int onewire_rmt_init( uint8_t gpio_num )
...
@@ -127,7 +128,7 @@ static int onewire_rmt_init( uint8_t gpio_num )
rmt_tx
.
tx_config
.
idle_output_en
=
true
;
rmt_tx
.
tx_config
.
idle_output_en
=
true
;
rmt_tx
.
rmt_mode
=
RMT_MODE_TX
;
rmt_tx
.
rmt_mode
=
RMT_MODE_TX
;
if
(
rmt_config
(
&
rmt_tx
)
==
ESP_OK
)
{
if
(
rmt_config
(
&
rmt_tx
)
==
ESP_OK
)
{
if
(
rmt_driver_install
(
rmt_tx
.
channel
,
0
,
ESP_INTR_FLAG_LOWMED
|
ESP_INTR_FLAG_IRAM
|
ESP
_INTR_FLAG
_SHARED
)
==
ESP_OK
)
{
if
(
rmt_driver_install
(
rmt_tx
.
channel
,
0
,
PLATFORM_RMT
_INTR_FLAG
S
)
==
ESP_OK
)
{
rmt_config_t
rmt_rx
;
rmt_config_t
rmt_rx
;
rmt_rx
.
channel
=
ow_rmt
.
rx
;
rmt_rx
.
channel
=
ow_rmt
.
rx
;
...
@@ -139,7 +140,7 @@ static int onewire_rmt_init( uint8_t gpio_num )
...
@@ -139,7 +140,7 @@ static int onewire_rmt_init( uint8_t gpio_num )
rmt_rx
.
rx_config
.
filter_ticks_thresh
=
30
;
rmt_rx
.
rx_config
.
filter_ticks_thresh
=
30
;
rmt_rx
.
rx_config
.
idle_threshold
=
OW_DURATION_RX_IDLE
;
rmt_rx
.
rx_config
.
idle_threshold
=
OW_DURATION_RX_IDLE
;
if
(
rmt_config
(
&
rmt_rx
)
==
ESP_OK
)
{
if
(
rmt_config
(
&
rmt_rx
)
==
ESP_OK
)
{
if
(
rmt_driver_install
(
rmt_rx
.
channel
,
512
,
ESP_INTR_FLAG_LOWMED
|
ESP_INTR_FLAG_IRAM
|
ESP
_INTR_FLAG
_SHARED
)
==
ESP_OK
)
{
if
(
rmt_driver_install
(
rmt_rx
.
channel
,
512
,
PLATFORM_RMT
_INTR_FLAG
S
)
==
ESP_OK
)
{
rmt_get_ringbuf_handle
(
ow_rmt
.
rx
,
&
ow_rmt
.
rb
);
rmt_get_ringbuf_handle
(
ow_rmt
.
rx
,
&
ow_rmt
.
rb
);
...
...
components/platform/rmt.c
→
components/platform/
platform_
rmt.c
View file @
e30904b6
#include "platform.h"
#include <string.h>
#include <string.h>
#include "platform_rmt.h"
#include "driver/rmt.h"
#include "driver/rmt.h"
...
...
components/platform/ws2812.c
View file @
e30904b6
...
@@ -24,6 +24,7 @@
...
@@ -24,6 +24,7 @@
* ****************************************************************************/
* ****************************************************************************/
#include "platform.h"
#include "platform.h"
#include "platform_rmt.h"
#include "driver/rmt.h"
#include "driver/rmt.h"
#include "driver/gpio.h"
#include "driver/gpio.h"
...
@@ -79,7 +80,7 @@ static ws2812_chain_t ws2812_chains[RMT_CHANNEL_MAX];
...
@@ -79,7 +80,7 @@ static ws2812_chain_t ws2812_chains[RMT_CHANNEL_MAX];
static
intr_handle_t
ws2812_intr_handle
;
static
intr_handle_t
ws2812_intr_handle
;
static
void
IRAM_ATTR
ws2812_fill_memory_encoded
(
rmt_channel_t
channel
,
const
uint8_t
*
data
,
size_t
len
,
size_t
tx_offset
)
static
void
ws2812_fill_memory_encoded
(
rmt_channel_t
channel
,
const
uint8_t
*
data
,
size_t
len
,
size_t
tx_offset
)
{
{
for
(
size_t
idx
=
0
;
idx
<
len
;
idx
++
)
{
for
(
size_t
idx
=
0
;
idx
<
len
;
idx
++
)
{
uint8_t
byte
=
data
[
idx
];
uint8_t
byte
=
data
[
idx
];
...
@@ -93,7 +94,7 @@ static void IRAM_ATTR ws2812_fill_memory_encoded( rmt_channel_t channel, const u
...
@@ -93,7 +94,7 @@ static void IRAM_ATTR ws2812_fill_memory_encoded( rmt_channel_t channel, const u
}
}
static
void
IRAM_ATTR
ws2812_isr
(
void
*
arg
)
static
void
ws2812_isr
(
void
*
arg
)
{
{
uint32_t
intr_st
=
RMT
.
int_st
.
val
;
uint32_t
intr_st
=
RMT
.
int_st
.
val
;
...
@@ -195,7 +196,7 @@ int platform_ws2812_send( void )
...
@@ -195,7 +196,7 @@ int platform_ws2812_send( void )
res
=
PLATFORM_ERR
;
res
=
PLATFORM_ERR
;
break
;
break
;
}
}
if
(
rmt_driver_install
(
channel
,
0
,
ESP_INTR_FLAG_LOWMED
|
ESP_INTR_FLAG_IRAM
|
ESP
_INTR_FLAG
_SHARED
)
!=
ESP_OK
)
{
if
(
rmt_driver_install
(
channel
,
0
,
PLATFORM_RMT
_INTR_FLAG
S
)
!=
ESP_OK
)
{
res
=
PLATFORM_ERR
;
res
=
PLATFORM_ERR
;
break
;
break
;
}
}
...
@@ -204,7 +205,7 @@ int platform_ws2812_send( void )
...
@@ -204,7 +205,7 @@ int platform_ws2812_send( void )
// hook-in our shared ISR
// hook-in our shared ISR
esp_intr_alloc
(
ETS_RMT_INTR_SOURCE
,
ESP_INTR_FLAG_LOWMED
|
ESP_INTR_FLAG_IRAM
|
ESP
_INTR_FLAG
_SHARED
,
ws2812_isr
,
NULL
,
&
ws2812_intr_handle
);
esp_intr_alloc
(
ETS_RMT_INTR_SOURCE
,
PLATFORM_RMT
_INTR_FLAG
S
,
ws2812_isr
,
NULL
,
&
ws2812_intr_handle
);
// start selected channels one by one
// start selected channels one by one
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment