Например TDA7294

Форум РадиоКот • Просмотр темы - Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 13:36:34

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 4751 ]     ... , , , 150, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Чт сен 21, 2017 13:47:13 
Родился

Зарегистрирован: Чт июн 29, 2017 20:46:43
Сообщений: 13
Рейтинг сообщения: 0
На плате на выходе mcp602t стоят конденсаторы перед атмегой, какого они номинала?

_________________
Не волшебник. просто учусь.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Чт сен 21, 2017 13:49:13 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
Смотрите на схему, а не на плату. На плате это просто невостребованный задел под разные эксперименты.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Чт сен 21, 2017 13:57:56 
Родился

Зарегистрирован: Чт июн 29, 2017 20:46:43
Сообщений: 13
Рейтинг сообщения: 0
Понял, значит ничего не ставлю.

_________________
Не волшебник. просто учусь.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Пт сен 22, 2017 13:03:02 
Прорезались зубы

Карма: 4
Рейтинг сообщений: 2
Зарегистрирован: Вт окт 01, 2013 01:04:31
Сообщений: 217
Откуда: Гомель
Рейтинг сообщения: 0
Файлик от LS020 поправил.
А зачем там так часто сигнал CS дергать?


Вложения:
ls020.c [7.42 KiB]
Скачиваний: 199
Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Пт сен 22, 2017 14:47:57 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
Где часто?
Мне кажется, Ваше изменение сильно замедлит работу с дисплеем из-за постоянных установок/сбросов RS, и переноса цикла while() в конец ls020WriteData(). В своё время я, переделывал что-то в стиле "наоборот": https://github.com/WiseLord/ampcontrol/commit/dc886eb
Но у меня ls020 никогда не было, поэтому насчёт того как оно на реальном железе работает, я не в курсе. Просто знаю, что работает.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Пт сен 22, 2017 15:09:27 
Прорезались зубы

Карма: 4
Рейтинг сообщений: 2
Зарегистрирован: Вт окт 01, 2013 01:04:31
Сообщений: 217
Откуда: Гомель
Рейтинг сообщения: 0
ну да с RS я поспешил но с остальным вроде правильно


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Пт сен 22, 2017 15:18:12 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
По поводу
Код:
static void ls020WriteData(uint8_t data) {
   while(!(SPSR & (1<<SPIF)));
   SPDR = data;
}
который Вы переделали на
Код:
static void ls020WriteData(uint8_t data) {
   SPDR = data;
   while(!(SPSR & (1<<SPIF)));
}
Вот здесь-то и будет самое большое замедление. В изначальном варианте мы сразу же выскакиваем из функции (что тоже занимает какое-то время) и обрабатываем код дальше. А в это время параллельно и аппаратно идёт передача по SPI.

А в Вашем варианте Вы зачем-то перед выходом из функции ждёте окончания передачи. Это сильно уменьшает скорость вывода, поскольку именно запись данных тут основная операция.

Единственное в моём случае - когда передаётся "пачка" данных (заполняется какой-то прямоугольник, например), то в конце нужно ещё один раз сделать while(!(SPSR & (1<<SPIF))); перед дёрганьем CS.

А CS у меня дёргается редко - перед отправкой большой пачки данных уходит в 0, по окончании - в 1, как и положено. Не знаю, почему Вам показалось, что часто.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Сб сен 23, 2017 15:22:37 
Прорезались зубы

Карма: 4
Рейтинг сообщений: 2
Зарегистрирован: Вт окт 01, 2013 01:04:31
Сообщений: 217
Откуда: Гомель
Рейтинг сообщения: 0
переписал под LPH9157-2 запустился но не правильно. Любые манипуляции с поворотом не дают нужного эффекта. Скрин прилагаю


Вложения:
1.rar [35.28 KiB]
Скачиваний: 202
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Сб сен 23, 2017 15:38:36 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
Я бы попробовал поиграть с заменой x и y местами в ls020SetWindow()


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Сб сен 23, 2017 15:56:40 
Прорезались зубы

Карма: 4
Рейтинг сообщений: 2
Зарегистрирован: Вт окт 01, 2013 01:04:31
Сообщений: 217
Откуда: Гомель
Рейтинг сообщения: 0
поиграл не выиграл.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Сб сен 23, 2017 16:34:16 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
А что произойдёт, если поменять
Код:
#ifdef LS020_ROTATE_180
    ls020WriteCommand(0x2a);
    ls020WriteData(x0);
    ls020WriteData(x1);
    ls020WriteCommand(0x2b);
    ls020WriteData(LS020_WIDTH - 1 - y1);
    ls020WriteData(LS020_HEIGHT - 1 - y0);
#else
на
Код:
#ifdef LS020_ROTATE_180
    ls020WriteCommand(0x2a);
    ls020WriteData(y0);
    ls020WriteData(y1);
    ls020WriteCommand(0x2b);
    ls020WriteData(LS020_WIDTH - 1 - x1);
    ls020WriteData(LS020_WIDTH - 1 - x0);
#else
Обратите внимание, LS020_HEIGHT, похоже, опечатка (у меня в коде в том числе)
Теоретически, это как-то должно развернуть на 90 градусов. Символы шрифта будут при этом рисоваться неправильно, и тут уже можно поиграть параметрами направления отрисовки окна при инициализации дисплея:
Код:
ls020WriteCommand(0x36);
ls020WriteData(0xe0);


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Сб сен 23, 2017 17:35:05 
Прорезались зубы

Карма: 4
Рейтинг сообщений: 2
Зарегистрирован: Вт окт 01, 2013 01:04:31
Сообщений: 217
Откуда: Гомель
Рейтинг сообщения: 0
опечатку заметил когда проверял монитором SPI

Добавлено after 45 minutes 17 seconds:
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864
правильнее так но вместо символов краказябры

Код:
#ifdef LS020_ROTATE_180
    ls020WriteCommand(0x2a);
    ls020WriteData(y0);
    ls020WriteData(y1);
    ls020WriteCommand(0x2b);
    ls020WriteData(LS020_HEIGHT - 1 - x1);
    ls020WriteData(LS020_HEIGHT - 1 - x0);


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Сб сен 23, 2017 19:46:58 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
Это потому что символы отрисовываюься в другом направлении. Тут надо или этот параметр обхода окна менять при инициализации, или в другом порядке биты символа выводить


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Сб сен 23, 2017 20:16:15 
Прорезались зубы

Карма: 4
Рейтинг сообщений: 2
Зарегистрирован: Вт окт 01, 2013 01:04:31
Сообщений: 217
Откуда: Гомель
Рейтинг сообщения: 0
Это потому что символы отрисовываюься в другом направлении. Тут надо или этот параметр обхода окна менять при инициализации, или в другом порядке биты символа выводить


в этом файле?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Сб сен 23, 2017 21:29:55 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
Да. Либо инициализацию попробовать подправить:
Код:
ls020WriteCommand(0x36);
ls020WriteData(0xe0);
- поиграться с 0xE0 согласно тому, что там у Вас в комментариях для этой команды прописано.
Это самый простой вариант, если получится - повезло.
Либо с выводом символа ls020WriteChar() поиграть. Тут уже посложнее, придётся немного подумать и, во первых, понять, как вывод символа происходит.
Вот сам символ, например, 'A':
Код:
0xE0, 0xF0, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0xF8,
0xFF, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xFF, 0xFF,
0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, /* 65  A */
Легко понять, как он построен. Это массив из 10 * 3 (ширина на высоту) байтов:
Изображение
Теперь смотрим, в коде как реализован вывод символа после того, как сформировано "окно" (для наглядности убрал дефайн LS020_ROTATE_180:
Код:
for (k = 0; k < fp[FONT_HEIGHT]; k++) {
    for (j = 0; j < swd; j++) {
        pgmData[j] = pgm_read_word(_font + oft + ((fp[FONT_HEIGHT] - k - 1)) * swd + j);
    }
    for(i = 0; i < 8; i++) {
        for (my = 0; my < fp[FONT_MULT]; my++) {
            for (j = 0; j < swd; j++) {
                if (pgmData[j] & (128>>i)) {
                    for (mx = 0; mx < fp[FONT_MULT]; mx++)
                        ls020WriteData(fp[FONT_COLOR]);
                } else {
                    for (mx = 0; mx < fp[FONT_MULT]; mx++)
                        ls020WriteData(COLOR_BCKG);
                }
            }
        }
    }
}

Верхний цикл - проход по высоте шрифта. В нашем случае три раза - k = 0, 1, 2.
Дальше, вложенный шрифт - проходим по ширине символа, и вычитываем в массив pgmData текущую "линию"
А уже затем - пробегаемся по битам (i = 0..7) шрифта и выводим либо цветом шрифта (1), либо цветом фона (0). При этом, если фонт масштабированный, то делается это два раза подряд.
В Вашем случае надо просто разобраться с направлением вывода. Можно просто вставить задержку здесь и смотреть на дисплей. Должны поочерёдно выводиться вертикальные столбики шрифта снизу вверх (а если мысленно дисплей повернуть на 90 градусов по часовой стрелке, к его "родному" портретному режиму, получится просто последовательный вывод горизонтальных строк - ровно как и мы пишем в тетради).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Сб сен 23, 2017 23:45:51 
Прорезались зубы

Карма: 4
Рейтинг сообщений: 2
Зарегистрирован: Вт окт 01, 2013 01:04:31
Сообщений: 217
Откуда: Гомель
Рейтинг сообщения: 0
в вашем варианте заполнение с право налево вверх
а в моем сверху в низ направо


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Вс сен 24, 2017 04:36:42 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
Вот как происходит отрисовка символа на LS020 (эмуляция в Proteus):


Наложите на свои исходники такой же патч, чтобы посмотреть, в каком месте рисуется символ и в каком направлении идёт его отрисовка в Вашем случае.
Спойлер
Код:
diff --git a/display/ls020.c b/display/ls020.c
index ed0fed2..b2a249c 100644
--- a/display/ls020.c
+++ b/display/ls020.c
@@ -319,8 +319,9 @@ void ls020WriteChar(uint8_t code)
                      ls020WriteData(fp[FONT_COLOR]);
                } else {
                   for (mx = 0; mx < fp[FONT_MULT]; mx++)
-                     ls020WriteData(COLOR_BCKG);
+                     ls020WriteData(COLOR_GRAY);
                }
+               _delay_ms(50);
             }
          }
       }
diff --git a/main.c b/main.c
index d27fb13..d720272 100644
--- a/main.c
+++ b/main.c
@@ -11,6 +11,7 @@
 #include "tuner/tuner.h"
 #include "temp.h"
 #include "actions.h"
+#include "display/ls020.h"
 
 static uint8_t extFunc;
 
@@ -56,6 +57,15 @@ int main(void)
    // Init hardware
    hwInit();
 
+
+   ls020LoadFont(font_ks0066_ru_24, COLOR_CYAN, 1);
+   while(1)
+   {
+      ls020SetXY(10, 30);
+      ls020WriteChar('A');
+      ls020Clear();
+   }
+
    while (1) {
       // Control temperature
       if (extFunc == USE_DS18B20) {


Вообще идеально - проверить с разными вариантами Memory Access Control.
А если ещё и на видео снимете, как это происходит с разными его вариантами, тогда будет понятнее, что и как менять.

И ещё: проблема только в шрифтах? Вся прочая графика отрисовывается нормально или не очень? Подозреваю, что прогрессбары должны быть ОК, столбики всякие тоже, потому что это просто сплошной заливки прямоугольники, а вот иконки тоже должны отрисовываться аналогично шрифтам.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Пн сен 25, 2017 01:30:49 
Прорезались зубы

Карма: 4
Рейтинг сообщений: 2
Зарегистрирован: Вт окт 01, 2013 01:04:31
Сообщений: 217
Откуда: Гомель
Рейтинг сообщения: 0
в дисплее косяк он с изначальным кодом рисует правильно но не дорисовывает в конце 4 часть экрана.
там просто обрезок с мусором
иконки отображаются правильно

Добавлено after 9 hours 28 minutes 37 seconds:
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864
а вот тут упоминание сего косяка http://cxem.net/mc/mc221.php


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Пн сен 25, 2017 06:30:48 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
Тогда нужно для начала, путём манипуляций с шириной-высотой-x-y добиться того, чтобы
- дисплей умел закрашивался целиком;
- сплошные прямоугольники рисовались там где нужно.
А уже потом разбираться "внутри" прямоугольников, в каком порядке в них подавать биты шрифта или иконки.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Пн сен 25, 2017 07:48:24 
Прорезались зубы

Карма: 4
Рейтинг сообщений: 2
Зарегистрирован: Вт окт 01, 2013 01:04:31
Сообщений: 217
Откуда: Гомель
Рейтинг сообщения: 0
в моем последнем варианте всё закрашивается норм надо чтобы шрифты заполнялись по принципу иконок или переделать шрифты.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 4751 ]     ... , , , 150, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y