Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864
-
skaarjik
- Первый раз сказал Мяу!
- Сообщения: 34
- Зарегистрирован: Чт дек 23, 2010 15:40:06
- Откуда: Беларусь, Гродно
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
В старом репозитории была ветка PGA2310, кто-нибудь забирал ее ?
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Ок, скопировал эту ветку и на github.
Можете забрать здесь, но ничего ценного там нет - только старый каркас для поддержки этого аудиопроцессора (без посылки реальных данных по шине), к текущей архитектуре не подходящий.
Можете забрать здесь, но ничего ценного там нет - только старый каркас для поддержки этого аудиопроцессора (без посылки реальных данных по шине), к текущей архитектуре не подходящий.
- loki_amorf
- Открыл глаза
- Сообщения: 69
- Зарегистрирован: Пт апр 23, 2010 13:04:48
- Откуда: г.Киев
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Что нужно по PGA2310?
У меня трудится на предыдущем Владимира движке, правда на Атмега 64.
+ я добавил переключение аудио входов на реле.
Пока что все на полумакетках, буду разводить плату в PCAD.
У меня трудится на предыдущем Владимира движке, правда на Атмега 64.
+ я добавил переключение аудио входов на реле.
Пока что все на полумакетках, буду разводить плату в PCAD.
-
skaarjik
- Первый раз сказал Мяу!
- Сообщения: 34
- Зарегистрирован: Чт дек 23, 2010 15:40:06
- Откуда: Беларусь, Гродно
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Хочу собрать управление своим самодельным усилителем по этому проекту, вместо того, что у меня стоит сейчас.
Контроллер буду использовать atmega64, т.к. нужно будет реализвать некоторые дополнительные функции, дисплей KS0108A,
аудиопроцессор хотелось бы использовать PGA2310, переключение входов на реле. Регулировки частот мне не нужны.
Что значит предыдущий движок?
Сложно ли добавить в проект Ваш драйвер для PGA2310 и отключить лишние функции?
Контроллер буду использовать atmega64, т.к. нужно будет реализвать некоторые дополнительные функции, дисплей KS0108A,
аудиопроцессор хотелось бы использовать PGA2310, переключение входов на реле. Регулировки частот мне не нужны.
Что значит предыдущий движок?
Сложно ли добавить в проект Ваш драйвер для PGA2310 и отключить лишние функции?
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Предыдущий движок значит, что в последних прошивках полностью поменялась архитектура поддержки аудиопроцессоров и тюнеров, что позволило все их поддерживать в рамках одного файла прошивки. Сейчас всего три прошивки - по одной для каждого типа дисплея, и каждая из них умеет работать с любым из поддерживаемых тюнеров и аудиопроцессоров.
В новом варианте добавить поддержку ещё одного аудиопроцессора очень просто. Для того же PGA2310 нужно:
1. В audioproc.h добавить в enum audioProc ID нового процессора (привязать его к некоему номеру), типа AUDIOPROC_PGA2310.
2. В audioproc.c в функции sndInit() добавить этот процессор и описать параметры сетки регулировок для него. Например, нам нужна только громкость и баланс. Тогда добавляем что-то вроде:Остальные параметры, которые не указаны, будут просто отсутствовать.
Здесь grid[1] и grid[4] - нужные диапазоны регулировки, берущиеся из соответствующего массива в начале audioproc.c. По необходимости можно добавить свои диапазоны.
3. Добавить по аналогии с другими (удобно для простоты взять tda7448) пару файлов pga2310.c/pga2310.h, где описать нужные функции. Ну и где надо, по мелочи добавить их вызовы в audioproc.c.
Собственно, этого достаточно для базовой регулировки громкости/баланса. Для переключения входов через реле нужно дописать ещё пару вещей.
Если сами не осилите, могу набросать каркас, только уже c тем, что слать по I2C-шине, сами разбирайтесь.
В новом варианте добавить поддержку ещё одного аудиопроцессора очень просто. Для того же PGA2310 нужно:
1. В audioproc.h добавить в enum audioProc ID нового процессора (привязать его к некоему номеру), типа AUDIOPROC_PGA2310.
2. В audioproc.c в функции sndInit() добавить этот процессор и описать параметры сетки регулировок для него. Например, нам нужна только громкость и баланс. Тогда добавляем что-то вроде:
Код: Выделить всё
case AUDIOPROC_PGA2310:
sndPar[MODE_SND_VOLUME].grid = &grid[1];
sndPar[MODE_SND_BALANCE].grid = &grid[4];
break;Здесь grid[1] и grid[4] - нужные диапазоны регулировки, берущиеся из соответствующего массива в начале audioproc.c. По необходимости можно добавить свои диапазоны.
3. Добавить по аналогии с другими (удобно для простоты взять tda7448) пару файлов pga2310.c/pga2310.h, где описать нужные функции. Ну и где надо, по мелочи добавить их вызовы в audioproc.c.
Собственно, этого достаточно для базовой регулировки громкости/баланса. Для переключения входов через реле нужно дописать ещё пару вещей.
Если сами не осилите, могу набросать каркас, только уже c тем, что слать по I2C-шине, сами разбирайтесь.
- loki_amorf
- Открыл глаза
- Сообщения: 69
- Зарегистрирован: Пт апр 23, 2010 13:04:48
- Откуда: г.Киев
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Можно попробовать.
Работающая функция софт SPI у меня присутствует.
Работающая функция софт SPI у меня присутствует.
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Собственно, вот весь патч, который нужно наложить на исходники, чтобы получилась поддержка PGA2310 (по адресу 0x0E в EEPROM прописываем AUDIOPROC_PGA2310 = 0x06).
Режимы корректно отображаются на экране, всё работает за исключением того, что в реальности в микросхему ничего не отсылается (нужны несколько строк кода, формирующие эти посылки).
Также отправил это в ветку PGA2310 на GitHub, вместо старого кода.
Для поддержки нескольких входов через реле нужно добавить ещё несколько строчек кода, дёргающих соответствующим образом свободные выводы контроллера.
Режимы корректно отображаются на экране, всё работает за исключением того, что в реальности в микросхему ничего не отсылается (нужны несколько строк кода, формирующие эти посылки).
Спойлер
Код: Выделить всё
diff --git a/audio/audioproc.c b/audio/audioproc.c
index 6de9815..b11311d 100644
--- a/audio/audioproc.c
+++ b/audio/audioproc.c
@@ -16,7 +16,8 @@ static const sndGrid grid[] PROGMEM = {
{-15, 15, 1.25 * 8}, /* 7: -18.75..18.75dB with 1.25dB step */
{ 0, 3, 3.75 * 8}, /* 8: 0..11.25dB with 3.75dB step */
{ 0, 3, 6.25 * 8}, /* 9: 0..18.75dB with 6.25dB step */
- {-21, 0, 1.00 * 8}, /* 4: -21..0dB with 1dB step */
+ {-21, 0, 1.00 * 8}, /*10: -21..0dB with 1dB step */
+ {-96, 31, 1.00 * 8}, /*11: -96..31dB with 1dB step */
};
static sndParam sndPar[MODE_SND_END];
@@ -41,6 +42,7 @@ void sndInit(void)
tda7439Init(sndPar);
tda731xInit(sndPar);
tda7448Init(sndPar);
+ pga2310Init(sndPar);
/* Load audio parameters stored in eeprom */
for (i = 0; i < MODE_SND_END; i++) {
@@ -163,6 +165,13 @@ void sndInit(void)
sndPar[MODE_SND_CENTER].set = tda7448SetSpeakers;
sndPar[MODE_SND_SUBWOOFER].set = tda7448SetSpeakers;
break;
+ case AUDIOPROC_PGA2310:
+ sndPar[MODE_SND_VOLUME].grid = &grid[11];
+ sndPar[MODE_SND_BALANCE].grid = &grid[4];
+ _inCnt = PGA2310_IN_CNT;
+ sndPar[MODE_SND_VOLUME].set = pga2310SetSpeakers;
+ sndPar[MODE_SND_BALANCE].set = pga2310SetSpeakers;
+ break;
default:
break;
}
@@ -251,6 +260,8 @@ void sndSetMute(uint8_t value)
break;
case AUDIOPROC_TDA7448:
tda7448SetMute(_mute);
+ case AUDIOPROC_PGA2310:
+ pga2310SetMute(_mute);
default:
break;
}
diff --git a/audio/audioproc.h b/audio/audioproc.h
index 0009e26..78dfe23 100644
--- a/audio/audioproc.h
+++ b/audio/audioproc.h
@@ -5,6 +5,7 @@
#include "tda731x.h"
#include "tda7439.h"
#include "tda7448.h"
+#include "pga2310.h"
#include "../pins.h"
typedef enum {
@@ -14,6 +15,7 @@ typedef enum {
AUDIOPROC_TDA7314,
AUDIOPROC_TDA7318,
AUDIOPROC_TDA7448,
+ AUDIOPROC_PGA2310,
AUDIOPROC_END
} audioProc;
diff --git a/audio/pga2310.c b/audio/pga2310.c
new file mode 100644
index 0000000..92bd7fc
--- /dev/null
+++ b/audio/pga2310.c
@@ -0,0 +1,45 @@
+#include "pga2310.h"
+
+#include <avr/pgmspace.h>
+
+static sndParam *sndPar;
+
+void pga2310Init(sndParam *sp)
+{
+ sndPar = sp;
+
+ return;
+}
+
+void pga2310SetSpeakers(int8_t val)
+{
+ int8_t spLeft = sndPar[MODE_SND_VOLUME].value;
+ int8_t spRight = sndPar[MODE_SND_VOLUME].value;
+ int8_t volMin = pgm_read_byte(&sndPar[MODE_SND_VOLUME].grid->min);
+
+ if (sndPar[MODE_SND_BALANCE].value > 0) {
+ spLeft -= sndPar[MODE_SND_BALANCE].value;
+ if (spLeft < volMin)
+ spLeft = volMin;
+ } else {
+ spRight += sndPar[MODE_SND_BALANCE].value;
+ if (spRight < volMin)
+ spRight = volMin ;
+ }
+
+ /* Write some bytes to bus to set speakers */
+
+ return;
+}
+
+void pga2310SetMute(uint8_t val)
+{
+ if (val == MUTE_ON) {
+ /* Write some bytes to bus to set mute */
+
+ } else {
+ pga2310SetSpeakers(0);
+ }
+
+ return;
+}
diff --git a/audio/pga2310.h b/audio/pga2310.h
new file mode 100644
index 0000000..3f081ad
--- /dev/null
+++ b/audio/pga2310.h
@@ -0,0 +1,14 @@
+#ifndef PGA2310_H
+#define PGA2310_H
+
+#include <inttypes.h>
+#include "audio.h"
+
+/* Number of inputs */
+#define PGA2310_IN_CNT 1
+
+void pga2310Init(sndParam *sp);
+void pga2310SetSpeakers(int8_t val);
+void pga2310SetMute(uint8_t val);
+
+#endif /* PGA2310_H */
Для поддержки нескольких входов через реле нужно добавить ещё несколько строчек кода, дёргающих соответствующим образом свободные выводы контроллера.
-
skaarjik
- Первый раз сказал Мяу!
- Сообщения: 34
- Зарегистрирован: Чт дек 23, 2010 15:40:06
- Откуда: Беларусь, Гродно
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Большое спасибо, микросхема PGA2310 пока не пришла, постараюсь разобраться, на управление реле моих знаний точно хватит 
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Тестовая прошивка с возвращённой поддержкой синтезатора частот LM7001.
На железе пока не проверял, так что отзывы привествуются.
Поскольку для термоконтроля и управления синтезатором используются одни и те же ножки, на ATmega32 можно выбрать только что-то одно. За выбор отвечает байт eepromExtFunc (адрес 0x3D в EEPROM).
Значения:
0x01 - поддержка термоконтроля на DS18x20
0x02 - поддержка LM7001.
(0x03 включает поддержку и того, и другого, но ставить это значение нельзя - можно и МК испортить).
Помимо этого, для выбора тюнера LM7001 нужно установить байт eepromFMTuner (адрес 0x20 в EEPROM) в значение TUNER_LM7001 (0x04).
В новом варианте прошивки с учётом будущих усовершенствований сильно поменялись адреса байтов конфигурации (диапазон 0x00..0x3F в EEPROM). Смотрите eeprom.h для подробностей.
Исходники в тестовой ветке на github.
P.S. Проверил в железе - да, всё работает.
На железе пока не проверял, так что отзывы привествуются.
Поскольку для термоконтроля и управления синтезатором используются одни и те же ножки, на ATmega32 можно выбрать только что-то одно. За выбор отвечает байт eepromExtFunc (адрес 0x3D в EEPROM).
Значения:
0x01 - поддержка термоконтроля на DS18x20
0x02 - поддержка LM7001.
(0x03 включает поддержку и того, и другого, но ставить это значение нельзя - можно и МК испортить).
Помимо этого, для выбора тюнера LM7001 нужно установить байт eepromFMTuner (адрес 0x20 в EEPROM) в значение TUNER_LM7001 (0x04).
В новом варианте прошивки с учётом будущих усовершенствований сильно поменялись адреса байтов конфигурации (диапазон 0x00..0x3F в EEPROM). Смотрите eeprom.h для подробностей.
Исходники в тестовой ветке на github.
P.S. Проверил в железе - да, всё работает.
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Тестовая прошивка с поддержкой PGA2310.
Опять же, в железе я это проверить не могу, но теоретически должно работать.
На ATmega32 используются те же ножки для управления, что для термоконтроля и LM7001. Так что выбираем только что-то одно. За выбор отвечает байт eepromExtFunc (адрес 0x3D в EEPROM).
Возможные значения:
0x01 - поддержка термоконтроля на DS18x20
0x02 - поддержка LM7001.
0x04 - поддержка PGA2310.
Также по адресу 0x0E в EEPROM прописываем AUDIOPROC_PGA2310 = 0x06.
На ATmega64 можно включить и все фунции сразу (побитовое сложение указанных выше опций), только в pins.h надо всё развесить на незанятые порты.
Опять же, в железе я это проверить не могу, но теоретически должно работать.
На ATmega32 используются те же ножки для управления, что для термоконтроля и LM7001. Так что выбираем только что-то одно. За выбор отвечает байт eepromExtFunc (адрес 0x3D в EEPROM).
Возможные значения:
0x01 - поддержка термоконтроля на DS18x20
0x02 - поддержка LM7001.
0x04 - поддержка PGA2310.
Также по адресу 0x0E в EEPROM прописываем AUDIOPROC_PGA2310 = 0x06.
На ATmega64 можно включить и все фунции сразу (побитовое сложение указанных выше опций), только в pins.h надо всё развесить на незанятые порты.
- Вложения
-
- ampcontrol-d7cdc63.7z
- (26.83 КБ) 270 скачиваний
-
skaarjik
- Первый раз сказал Мяу!
- Сообщения: 34
- Зарегистрирован: Чт дек 23, 2010 15:40:06
- Откуда: Беларусь, Гродно
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Это отличная новость, огромное спасибо!
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Жду отзывов о работоспособности. У меня этой микросхемы нет, так что до конца не уверен, что правильно реализовал интерфейс управления.
-
skaarjik
- Первый раз сказал Мяу!
- Сообщения: 34
- Зарегистрирован: Чт дек 23, 2010 15:40:06
- Откуда: Беларусь, Гродно
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
я жду посылки - обязательно проверю
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Тестовая прошивка с поддержкой RDS.
Поскольку из всех поддерживаемых только RDA5807 имеет встроенный декодер RDS, то функция активизируется только на ней.
Честно говоря, у меня условия приёма не самые лучшие, так что даже со стереоприёмом бывают проблемы, не говоря уже об RDS. Поэтому толком только на одной станции (Минск, радио Би-Эй на 104,6) RDS декодируется более-менее нормально. На других станциях, где есть RDS, всё гораздо хуже. Но хотя бы одна эта станция даёт понять, что алгоритм я реализовал вроде как правильный.
В общем, обладатели RDA5807 могут потестировать.
Все функции ранее выложенных "тестовых" прошивок (поддержка LM7001, PGA2310) также присутствуют.
Если станция не имеет RDS-потока, на экране FM-тюнера отображается анализатор спектра, как и ранее. В случае наличия сигнала RDS вместо него выводится передаваемая информация (8 символов).
Поскольку из всех поддерживаемых только RDA5807 имеет встроенный декодер RDS, то функция активизируется только на ней.
Честно говоря, у меня условия приёма не самые лучшие, так что даже со стереоприёмом бывают проблемы, не говоря уже об RDS. Поэтому толком только на одной станции (Минск, радио Би-Эй на 104,6) RDS декодируется более-менее нормально. На других станциях, где есть RDS, всё гораздо хуже. Но хотя бы одна эта станция даёт понять, что алгоритм я реализовал вроде как правильный.
В общем, обладатели RDA5807 могут потестировать.
Все функции ранее выложенных "тестовых" прошивок (поддержка LM7001, PGA2310) также присутствуют.
Если станция не имеет RDS-потока, на экране FM-тюнера отображается анализатор спектра, как и ранее. В случае наличия сигнала RDS вместо него выводится передаваемая информация (8 символов).
- FOLKSDOICH
- Говорящий с текстолитом
- Сообщения: 1580
- Зарегистрирован: Ср окт 04, 2006 22:33:56
- Откуда: М.о.
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Ахренеть. Молодца!
Всё придумано до и для нас.
- san-sanych
- Встал на лапы
- Сообщения: 127
- Зарегистрирован: Вт июл 15, 2014 17:03:13
- Откуда: Могилев, Беларусь
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Огромное спасибо автору за возвращенную поддержку LM7001!
Завтра залью новую прошу в свой усь и буду наслаждаться.
P.S. Ну а RDS - это вообще супер!!! Жаль, что нет у меня RDA5807 (был один, да использовал его в радиочасах), а то обязательно бы попробовал. Буду надеяться, что со временем автор прикрутит декодер RDS и к аналоговым тюнерам.
Пора уже Горизонту или Витязю заключать с автором договор и запускать ресивер на основе проекта в серию
Правда при наших накладных стоимость его на выходе боюсь будет неподъемной.
Завтра залью новую прошу в свой усь и буду наслаждаться.
P.S. Ну а RDS - это вообще супер!!! Жаль, что нет у меня RDA5807 (был один, да использовал его в радиочасах), а то обязательно бы попробовал. Буду надеяться, что со временем автор прикрутит декодер RDS и к аналоговым тюнерам.
Пора уже Горизонту или Витязю заключать с автором договор и запускать ресивер на основе проекта в серию
- VeryLazyCat
- Опытный кот
- Сообщения: 832
- Зарегистрирован: Пн май 17, 2010 22:21:01
- Откуда: Madagaskar
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Ув.WiseLord, а если добавить в схему внешнюю память -
получится проект с кадровым буффером для дисплея LS020 ?
Или может МК заменить, у которого хватит памяти ?
получится проект с кадровым буффером для дисплея LS020 ?
Или может МК заменить, у которого хватит памяти ?
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Для полноценной поддержки LS020 с кадровым буфером нужен размер ОЗУ 176*132=23232 точек. То есть - 46464 байт (максимальное использование цветовой палитры LS020, 16-битный цвет RRRRRGGG GGGBBBBB), или 23232 байт (8-битный цвет RRRGGGBB) или 2904 байт (одноцветная палитра, 8 точек на байт).
ATmega32 не умеет работать с внешней памятью. У ATmega64 c 4кБайт ОЗУ есть возможность использования третьего варианта. Отдельной командой цвет можно менять для разных отображаемых элементов - прогрессбаров, надписей.
В целом, варианта два - либо организовывать кадровый буфер в варианте с ATmega64, либо использовать умеющий работать с внешней памятью другой контроллер.
Первый вариант меня не устраивает тем, что нарушится совместимость кода с ATmega32, то есть, по сути это выльется в отдельный проект. Я для себя не вижу смысла покупать более дорогой и сложный для изготовления МК ATmega64 искать б/у LS020 на барахолках, когда за фактически те же деньги я спокойно купил на Aliexpress цветной дисплей с лучшими параметрами и менее геморройный в плане пайки.
Второй проект - это также по сути отдельный проект, несовместимый с ATmega32.
В общем, про кадровый буфер можно, по сути, забыть.
Есть ещё одна возможность - вернуть поддержку LS020 в том виде как она была, без всяких кадровых буферов.
Сейчас вся отрисовка происходит в файле display.c единообразным для всех дисплеев 128x64 способом. Например, отрисовка иконки:
В новом варианте будет как-то так:Думаю, идея понятна. И так же сделать практически со всеми функциями в этом файле. Мне не так уж сложно добавить (по сути, вернуть) поддержку ls020. Но жуть как лень отрисовывать все экраны с элементами по новым координатам. Тем более, что количество экранов, по сравнению с вариантом под ATmega16, значительно выросло. А дисплея такого у меня нет, а моделировать его в Proteus получается слишком тормознуто.
Если кто-то разбирается на базовом уровне в C, имеет в наличии LS020 и ему не лень самому посидеть над кодом (даже не столько над кодом, сколько над дизайном под новое разрешение) - может заняться. Я со свой стороны базовую поддержку всех нужных функций. То есть, для всех функций gd<Function> будут аналоги в виде ls020<Function>, а уже позиционированием и #if/#else/#endif заниматься буду не я.
ATmega32 не умеет работать с внешней памятью. У ATmega64 c 4кБайт ОЗУ есть возможность использования третьего варианта. Отдельной командой цвет можно менять для разных отображаемых элементов - прогрессбаров, надписей.
В целом, варианта два - либо организовывать кадровый буфер в варианте с ATmega64, либо использовать умеющий работать с внешней памятью другой контроллер.
Первый вариант меня не устраивает тем, что нарушится совместимость кода с ATmega32, то есть, по сути это выльется в отдельный проект. Я для себя не вижу смысла покупать более дорогой и сложный для изготовления МК ATmega64 искать б/у LS020 на барахолках, когда за фактически те же деньги я спокойно купил на Aliexpress цветной дисплей с лучшими параметрами и менее геморройный в плане пайки.
Второй проект - это также по сути отдельный проект, несовместимый с ATmega32.
В общем, про кадровый буфер можно, по сути, забыть.
Есть ещё одна возможность - вернуть поддержку LS020 в том виде как она была, без всяких кадровых буферов.
Сейчас вся отрисовка происходит в файле display.c единообразным для всех дисплеев 128x64 способом. Например, отрисовка иконки:
Код: Выделить всё
static void showParIcon(const uint8_t *icon)
{
gdSetXY(104, 2);
gdWriteIcon24(icon);
return;
}
Код: Выделить всё
static void showParIcon(const uint8_t *icon)
{
#if defined(LS020)
ls020SetXY(148, 2);
ls020SetColor(COLOR_RED);
ls020WriteIcon24(icon);
#else
gdSetXY(104, 2);
gdWriteIcon24(icon);
#endif
return;
}Если кто-то разбирается на базовом уровне в C, имеет в наличии LS020 и ему не лень самому посидеть над кодом (даже не столько над кодом, сколько над дизайном под новое разрешение) - может заняться. Я со свой стороны базовую поддержку всех нужных функций. То есть, для всех функций gd<Function> будут аналоги в виде ls020<Function>, а уже позиционированием и #if/#else/#endif заниматься буду не я.
- VeryLazyCat
- Опытный кот
- Сообщения: 832
- Зарегистрирован: Пн май 17, 2010 22:21:01
- Откуда: Madagaskar
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Огромное Спасибо за развёрнутый ответ!
Осталось только найти кто разбирается на базовом уровне в C
и поможет с отрисовкой....
Здесь же просили ребята вернуть поддержку LS020 по той простой причине,
что его можно купить за копейки в сравнении с дисплеем 128х64 - присоединяйтесь.
Осталось только найти кто разбирается на базовом уровне в C
и поможет с отрисовкой....
Здесь же просили ребята вернуть поддержку LS020 по той простой причине,
что его можно купить за копейки в сравнении с дисплеем 128х64 - присоединяйтесь.
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
VeryLazyCat писал(а):Огромное Спасибо за развёрнутый ответ!
Здесь же просили ребята вернуть поддержку LS020 по той простой причине,
что его можно купить за копейки в сравнении с дисплеем 128х64 - присоединяйтесь.
С приобретением LS020 вообще проблем нет. В любой мастерской по ремонту мобилок предложат за малые деньги. Проверено. Так что я тоже за поддержку этого дисплея. Автору проекта огромная благодарность за его титанический труд.