Skip to content

Commit 52fddb2

Browse files
committed
Use maximum column value to calculate level meter
1 parent dd70095 commit 52fddb2

File tree

3 files changed

+52
-56
lines changed

3 files changed

+52
-56
lines changed

Diff for: .gitignore

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
build-*
22
build/*
3+
flash/*
34
*.user
4-
*.hex
5+
*.cflags
6+
*.cxxflags

Diff for: Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
DISPLAY = KS0108A
1+
DISPLAY = ST7920
22

33
MCU = atmega32
44
F_CPU = 16000000L

Diff for: display.c

+48-54
Original file line numberDiff line numberDiff line change
@@ -799,7 +799,7 @@ void displayInit(void)
799799
addr++;
800800
i++;
801801
while (eeprom_read_byte(addr) != '\0' &&
802-
addr < (uint8_t *)EEPROM_SIZE) {
802+
addr < (uint8_t *)EEPROM_SIZE) {
803803
addr++;
804804
}
805805
} else {
@@ -1732,9 +1732,30 @@ void showTimer(int16_t timer)
17321732

17331733
void showSpectrum(void)
17341734
{
1735+
uint8_t left = 0;
1736+
uint8_t right = 0;
1737+
uint8_t data;
1738+
1739+
if (spMode == SP_MODE_METER) {
1740+
data = 0;
1741+
for (uint8_t i = 0; i < FFT_SIZE / 2 - 1; i++) {
1742+
data = buf[i] + buf[i + 1];
1743+
if (data > left) {
1744+
left = data;
1745+
}
1746+
}
1747+
data = 0;
1748+
for (uint8_t i = 0; i < FFT_SIZE / 2 - 1; i++) {
1749+
data = buf[i + FFT_SIZE / 2] + buf[i + (FFT_SIZE / 2 - 1)];
1750+
if (data > right) {
1751+
right = data;
1752+
}
1753+
}
1754+
1755+
}
1756+
17351757
#if defined(_KS0066)
1736-
uint8_t i, data;
1737-
uint16_t left, right;
1758+
uint8_t i;
17381759

17391760
switch (spMode) {
17401761
case SP_MODE_STEREO:
@@ -1776,14 +1797,6 @@ void showSpectrum(void)
17761797
break;
17771798
default:
17781799
lcdGenBar(userAddSym);
1779-
left = 0;
1780-
right = 0;
1781-
for (i = 0; i < FFT_SIZE / 2; i++) {
1782-
left += buf[i];
1783-
right += buf[FFT_SIZE / 2 + i];
1784-
}
1785-
left >>= 4;
1786-
right >>= 4;
17871800

17881801
ks0066SetXY(0, 0);
17891802
ks0066WriteData(eeprom_read_byte(txtLabels[LABEL_LEFT_CHANNEL]));
@@ -1816,7 +1829,6 @@ void showSpectrum(void)
18161829
#elif defined(_LS020)
18171830
uint8_t x, xbase;
18181831
uint8_t ybase;
1819-
uint16_t left, right;
18201832

18211833
switch (spMode) {
18221834
case SP_MODE_STEREO:
@@ -1853,14 +1865,6 @@ void showSpectrum(void)
18531865
writeStringEeprom(txtLabels[LABEL_LEFT_CHANNEL]);
18541866
ls020SetXY(2, 80);
18551867
writeStringEeprom(txtLabels[LABEL_RIGHT_CHANNEL]);
1856-
left = 0;
1857-
right = 0;
1858-
for (x = 0; x < 32; x++) {
1859-
left += buf[x];
1860-
right += buf[x + 32];
1861-
}
1862-
left >>= 3;
1863-
right >>= 3;
18641868

18651869
for (x = 0; x < 58; x++) {
18661870
ls020DrawRect(3 * x + 1, 20, 3 * x + 2, 29, x < left ? COLOR_YELLOW : COLOR_BLACK);
@@ -1874,31 +1878,29 @@ void showSpectrum(void)
18741878
break;
18751879
}
18761880
#else
1877-
uint8_t x, xbase;
1878-
uint8_t y, ybase;
1879-
uint16_t left, right;
1881+
uint8_t xbase, ybase;
18801882

18811883
switch (spMode) {
18821884
case SP_MODE_STEREO:
1883-
for (x = 0; x < GD_SIZE_X / 6 + 1; x++) {
1884-
xbase = x * 6;
1885+
for (uint8_t i = 0; i < GD_SIZE_X / 6 + 1; i++) {
1886+
xbase = i * 6;
18851887

1886-
for (y = 0; y < GD_SIZE_Y; y += 32) {
1887-
ybase = buf[x + y];
1888+
for (uint8_t y = 0; y < GD_SIZE_Y; y += 32) {
1889+
ybase = buf[i + y];
18881890
drawSpCol(xbase, 2, 31 + y, ybase, 31);
1889-
ybase += buf[x + y + 1];
1891+
ybase += buf[i + y + 1];
18901892
ybase /= 2;
18911893
drawSpCol(xbase + 3, 2, 31 + y, ybase, 31);
18921894
}
18931895
}
18941896
break;
18951897
case SP_MODE_MIXED:
1896-
for (x = 0; x < GD_SIZE_X / 6 + 1; x++) {
1897-
xbase = x * 6;
1898+
for (uint8_t i = 0; i < GD_SIZE_X / 6 + 1; i++) {
1899+
xbase = i * 6;
18981900

1899-
ybase = buf[x] + buf[x + 32];
1901+
ybase = buf[i] + buf[i + 32];
19001902
drawSpCol(xbase, 2, 63, ybase, 63);
1901-
ybase += buf[x + 1] + buf[x + 32 + 1];
1903+
ybase += buf[i + 1] + buf[i + 32 + 1];
19021904
ybase /= 2;
19031905
drawSpCol(xbase + 3, 2, 63, ybase, 63);
19041906
}
@@ -1909,32 +1911,24 @@ void showSpectrum(void)
19091911
writeStringEeprom(txtLabels[LABEL_LEFT_CHANNEL]);
19101912
gdSetXY(0, 36);
19111913
writeStringEeprom(txtLabels[LABEL_RIGHT_CHANNEL]);
1912-
left = 0;
1913-
right = 0;
1914-
for (x = 0; x < GD_SIZE_X / 4; x++) {
1915-
left += buf[x];
1916-
right += buf[x + 32];
1917-
}
1918-
left >>= 4;
1919-
right >>= 4;
1920-
1921-
for (x = 0; x < 43; x++) {
1922-
for (y = 12; y < 27; y++) {
1923-
if (x < left || y == 19) {
1924-
gdDrawPixel(3 * x + 0, y, 1);
1925-
gdDrawPixel(3 * x + 1, y, 1);
1914+
1915+
for (uint8_t i = 0; i < 43; i++) {
1916+
for (uint8_t y = 12; y < 27; y++) {
1917+
if (i < left || y == 19) {
1918+
gdDrawPixel(3 * i + 0, y, 1);
1919+
gdDrawPixel(3 * i + 1, y, 1);
19261920
} else {
1927-
gdDrawPixel(3 * x + 0, y, 0);
1928-
gdDrawPixel(3 * x + 1, y, 0);
1921+
gdDrawPixel(3 * i + 0, y, 0);
1922+
gdDrawPixel(3 * i + 1, y, 0);
19291923
}
19301924
}
1931-
for (y = 48; y < 63; y++) {
1932-
if (x < right || y == 55) {
1933-
gdDrawPixel(3 * x + 0, y, 1);
1934-
gdDrawPixel(3 * x + 1, y, 1);
1925+
for (uint8_t y = 48; y < 63; y++) {
1926+
if (i < right || y == 55) {
1927+
gdDrawPixel(3 * i + 0, y, 1);
1928+
gdDrawPixel(3 * i + 1, y, 1);
19351929
} else {
1936-
gdDrawPixel(3 * x + 0, y, 0);
1937-
gdDrawPixel(3 * x + 1, y, 0);
1930+
gdDrawPixel(3 * i + 0, y, 0);
1931+
gdDrawPixel(3 * i + 1, y, 0);
19381932
}
19391933
}
19401934
}

0 commit comments

Comments
 (0)