Обсуждаем контроллеры компании Atmel.
Ответить

Re: перекодировки с UTF-8 в Windows1251

Вс окт 03, 2021 09:38:54

В этом варианте вывод синхронизации висит на аппаратном таймере OC1A, уже минимум телодвижений требуется.

Пересмотрел, в тех примерах тоже висит на OC1A. Не думаю что примеры из интернета чем то принципиально отличаются от вашего, те же яйца только в профиль. И вообще откуда такая идея взялась "Скрестил аля TVout от ардуино с SPI"?
TVout тоже вывод синхронизации висит на аппаратном таймере OC1A:
Код:
//sync
#define PORT_SYNC   PORTB
#define DDR_SYNC   DDRB
#define SYNC_PIN   1


Шрифт 8*12 256 символов уже 3к коду дает.

ты собирал ранее Program: 7696 bytes (47.0% Full), потом Program: 4950 bytes (30.2% Full)... здесь сколько пример занял, реализация вывода на экран + его шрифт?

Re: перекодировки с UTF-8 в Windows1251

Вс окт 03, 2021 10:04:17

Вот же какой аля TVout от ардуино, 328меги RAM не хватает на разрешение 240*180 точек.

Но вы можете посмотреть 30 символов в строке, задав
Код:
TV.begin(_NTSC,240,56);
TV.begin(_NTSC,240,48);
а для разрешения 240*180 точек требуется 5,4к RAM.

Добавлено after 8 minutes 34 seconds:
neid писал(а):Не думаю что примеры из интернета чем то принципиально отличаются от вашего, те же яйца только в профиль.
Может кто-то это уже и реализовал. А вообще покажи тот пример?
neid писал(а):здесь сколько пример занял, реализация вывода на экран + его шрифт?
Что ты уперся в этот размер?
СпойлерДержи
Код:
Size after:
AVR Memory Usage
----------
Device: atmega168p

Program:    5592 bytes (34.1% Full)
(.text + .data + .bootloader)

Data:        544 bytes (53.1% Full)
(.data + .bss + .noinit)
Это сырой размер, я ни чего не выкидывал из него.
За то честно показывает сколько RAM требуется.

Re: перекодировки с UTF-8 в Windows1251

Вс окт 03, 2021 11:11:09

Может кто-то это уже и реализовал. А вообще покажи тот пример?

Вот тут что то похоже
Но однозначно могу сказать эта картинка интересней, чем то что вышло у меня и у вас с первым вариантом.

Что ты уперся в этот размер?
Да ни чего не уперся, вы наглядно продемонстрировали ранее, вот и прикидывал в atmega8 влезть, что бы освободить 328-ю. Три ацп термисторов и вывод на экран оказалось более чем достаточным.

Re: перекодировки с UTF-8 в Windows1251

Вс окт 03, 2021 13:27:11

neid писал(а):Вот тут что то похоже
Шикарно, надо эту тему проработать.
neid писал(а):вот и прикидывал в atmega8 влезть,
А что там у нее по оперативке?

Re: перекодировки с UTF-8 в Windows1251

Вс окт 03, 2021 14:18:37

А что там у нее по оперативке?

1Kbyte Internal SRAM прямым текстом из datasheet. Ну раз уж у вас на atmega168 завелось, разницы нет кроме flash памяти.

Re: перекодировки с UTF-8 в Windows1251

Вс окт 03, 2021 17:28:09

neid писал(а):Ну раз уж у вас на atmega168 завелось
Ох ох, оперативочки чуть чуть побольше, чем в меге8.
И по чему-то только так
Код:
#define VID_WIDTH    36
#define VID_HEIGHT   23
Теперь по поводу размера кода, шрифт там 8*8, всего 128 символов, 1024 байта, нет символов кириллицы.
Автором заявлено 320*200 точек:
шрифт 8*8
320/8=40
200/8=25 сошлось?

Re: перекодировки с UTF-8 в Windows1251

Вс окт 03, 2021 17:53:58

Ох ох, оперативочки чуть чуть побольше, чем в меге8.

Так в 168 тоже 1 Kb!)) где чуть чуть больше?
Код:
#define VID_WIDTH    36
#define VID_HEIGHT   23
Теперь по поводу размера кода, шрифт там 8*8, всего 128 символов, 1024 байта, нет символов кириллицы.
Автором заявлено 320*200 точек:
шрифт 8*8
320/8=40
200/8=25 сошлось?

Ну я так то могу разделить, и зачем?...все шапке было написано. Вроде написал подобный вашему. У вас то в чем лучше, есть кирилица?

Re: перекодировки с UTF-8 в Windows1251

Пн окт 04, 2021 08:14:52

neid писал(а):У вас то в чем лучше
У меня не лучше, у меня стандарт.
Теперь код автора, к сожалению он заточен только под свой вариант.
После выполнения вот этих строчек
Код:
  UDR0 = 0;
  UCSR0B = _BV(TXEN0);
на выходе 1. Я не знаю как 0 получить. UART отличается от SPI.
А вот это
charCol = (int)&charROM + (charRow<<7);
волшебная формула.
Так что у вас один стандарт, 6*8 или что там он предлагает.
Я не справился с его кодом.
neid писал(а):есть кирилица
вам же нужна была кириллица, не мне.

Добавлено after 8 hours 55 minutes 42 seconds:
Dimon456 писал(а):Я не справился с его кодом.
Победил я его волшебную формулу, большой минус - трудно будет редактировать какой либо символ, хотя можно создать набор шрифтов, на выбор.

slav0n, вот когда можно говорить о эффективности С и С++
СпойлерИзображение

Изображение
Сверху С, снизу С++

Re: перекодировки с UTF-8 в Windows1251

Пн окт 04, 2021 09:49:30

Dimon456, Вы код свой покажите что за скрещивание получилось?
По поводу шрифта что там у автор получается всегда 8*8, а доп шрифт на его же основе 6*8, по факту просто перерисованные символы в меньших границах. Так и был создал шрифт в TVout Arduino. Второй вариант, что я скинул ссылку это переделка того же TVout получается.
Если интересно, вот еще материал

Re: перекодировки с UTF-8 в Windows1251

Пн окт 04, 2021 14:37:33

neid писал(а):Так и был создал шрифт в TVout Arduino.
Латиница там верно создана, а вот ваша кириллица - увы, широковат будет, 8 колонка должна оставаться пустой, это нужно для работы SPI или SPI на базе UART.
В TVout Arduino ногодрыг, и после передачи 8 бита символа вывод порта переводится в 0, это не умеют делать не SPI, не SPI на базе UART.
Вот мой шрифт
СпойлерИзображение
Как я уже писал, шрифт 8*12, фактически он 7*8.
Верхние две строки, можно удалить, но возникнет проблема с буквой Й.
Нижняя строка нужна для таких букв, как Щ щ.
И нужна пустая строка для меж строчного интервала.
neid писал(а):Второй вариант, что я скинул ссылку это переделка того же TVout получается.
Если разберетесь с перекодировщиком и будете использовать С++ - просто отличный вариант.
Желаю успехов.

Вот этот участок кода
Спойлер
Код:
   while (a--) {
   UDR0=pgm_read_byte_near(charCol + (*u++));   
   }
на С выполняется за 1,1875us, на С++ ровно за 1us.
Я потом картинку скину, как это выглядит на С, и на что влияет не достающие 0,1875us.
А вот и картинка
СпойлерИзображение

На текущий момент на С мне удалось достичь
Спойлер
Код:
while (a--)
   SPDR=pgm_read_byte_near(charCol + (*u++));   // 1.125us
можно еще этот участок кода на асм переписать.
А вот что мне на SPI удалось достичь
СпойлерИзображение
шрифт 8*12
40*18 символов
320*216 точек
и в более четком разрешении
СпойлерИзображение
Ответить