arduino-libraries / Arduino_AdvancedAnalog

Advanced Analog Library
GNU Lesser General Public License v2.1
7 stars 5 forks source link

Fixes and updates. #36

Closed iabdalkader closed 1 year ago

iabdalkader commented 1 year ago
github-actions[bot] commented 1 year ago

Memory usage change @ e21c57bb4bf698012532d93638ff6f1cab8007d0

Board flash % RAM for global variables %
arduino:mbed_giga:giga :small_red_triangle: +136 - +632 +0.01 - +0.03 :grey_question: -176 - +8 -0.03 - 0.0
Click for full report table Board|`examples/Advanced/ADC_Multi`
flash|%|`examples/Advanced/ADC_Multi`
RAM for global variables|%|`examples/Advanced/ADC_Multi_Channel`
flash|%|`examples/Advanced/ADC_Multi_Channel`
RAM for global variables|%|`examples/Advanced/ADC_Multi_To_DAC`
flash|%|`examples/Advanced/ADC_Multi_To_DAC`
RAM for global variables|%|`examples/Advanced/ADC_Serial_Plotter`
flash|%|`examples/Advanced/ADC_Serial_Plotter`
RAM for global variables|%|`examples/Advanced/ADC_To_DAC`
flash|%|`examples/Advanced/ADC_To_DAC`
RAM for global variables|%|`examples/Advanced/DAC_One_Channel`
flash|%|`examples/Advanced/DAC_One_Channel`
RAM for global variables|%|`examples/Advanced/DAC_Sine_wave`
flash|%|`examples/Advanced/DAC_Sine_wave`
RAM for global variables|%|`examples/Advanced/DAC_Two_Channels`
flash|%|`examples/Advanced/DAC_Two_Channels`
RAM for global variables|%|`examples/Beginner/Audio_Playback`
flash|%|`examples/Beginner/Audio_Playback`
RAM for global variables|%|`examples/Beginner/Waveform_Generator`
flash|%|`examples/Beginner/Waveform_Generator`
RAM for global variables|% -|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|- `arduino:mbed_giga:giga`|136|0.01|0|0.0|136|0.01|0|0.0|328|0.02|8|0.0|200|0.01|0|0.0|328|0.02|8|0.0|264|0.01|8|0.0|264|0.01|8|0.0|328|0.02|8|0.0|328|0.02|8|0.0|632|0.03|-176|-0.03
Click for full report CSV ``` Board,examples/Advanced/ADC_Multi
flash,%,examples/Advanced/ADC_Multi
RAM for global variables,%,examples/Advanced/ADC_Multi_Channel
flash,%,examples/Advanced/ADC_Multi_Channel
RAM for global variables,%,examples/Advanced/ADC_Multi_To_DAC
flash,%,examples/Advanced/ADC_Multi_To_DAC
RAM for global variables,%,examples/Advanced/ADC_Serial_Plotter
flash,%,examples/Advanced/ADC_Serial_Plotter
RAM for global variables,%,examples/Advanced/ADC_To_DAC
flash,%,examples/Advanced/ADC_To_DAC
RAM for global variables,%,examples/Advanced/DAC_One_Channel
flash,%,examples/Advanced/DAC_One_Channel
RAM for global variables,%,examples/Advanced/DAC_Sine_wave
flash,%,examples/Advanced/DAC_Sine_wave
RAM for global variables,%,examples/Advanced/DAC_Two_Channels
flash,%,examples/Advanced/DAC_Two_Channels
RAM for global variables,%,examples/Beginner/Audio_Playback
flash,%,examples/Beginner/Audio_Playback
RAM for global variables,%,examples/Beginner/Waveform_Generator
flash,%,examples/Beginner/Waveform_Generator
RAM for global variables,% arduino:mbed_giga:giga,136,0.01,0,0.0,136,0.01,0,0.0,328,0.02,8,0.0,200,0.01,0,0.0,328,0.02,8,0.0,264,0.01,8,0.0,264,0.01,8,0.0,328,0.02,8,0.0,328,0.02,8,0.0,632,0.03,-176,-0.03 ```
iabdalkader commented 1 year ago

Hi @aentinger can you please review this and if it looks good, merge and do another release ? Thanks.

iabdalkader commented 1 year ago

is the new buffer implementation "threadsafe"? I'm asking because I'm not seeing any locking

Yes it should be very safe, the old one shared the variables between push/pop producer/consumer sides, this one even if the tail/head is moved during push/pop it should still be safe and there's no shared size variable used. Also note we can't really use locking as the IRQ also needs to write to this queue, so we'll have to use critical sections, but I don't think anything else is needed, I also did some stress testing on this and couldn't find any issues.

aentinger commented 1 year ago

Check, thanks for the clarification :+1: