|
|
  |
Atmega88 - выжита по максимому, Множество Джулио |
|
|
|
Oct 3 2008, 11:04
|

nofb
  
Группа: Свой
Сообщений: 430
Регистрация: 18-05-06
Из: Москва, Зеленоград
Пользователь №: 17 218

|
Цитата(LCD @ Oct 3 2008, 13:27)  Аппаратно, но через известное место: сам экран (256х192) разбит на 3 части по 64 строки, каждая строка в которой чередуется через 7 других строк. И для вывода цветного изображения надо было выбирать два цвета на знакоместо (8х8) из палитры в 16 цветов. Нужная точка по координатам на ассемблере находилась последывательностью в несколько команд (по моему 5 или 6). Во всяком случае точно помню, что круги я научился из асма рисовать быстрее (производительней), чем это было реализовано для интерпретатора бейсик в ПЗУ :-) Или вообще советую вспомнить трехмерную векторную графику игры ELITE. Помнится даже какой то квест был с трехмерными текстурироваными объектами и движением от первого лица (тормозило правда прилично).
--------------------
Это не то что вы подумали ...
|
|
|
|
|
Oct 3 2008, 14:32
|
Участник

Группа: Участник
Сообщений: 55
Регистрация: 17-04-08
Пользователь №: 36 850

|
Цитата(slog @ Oct 3 2008, 11:54)  Кажется уже многие забыли что такое текстовый режим. Для вывода на экран текста в 640*480 не нужен буфер в 300кбайт. Достаточно 2-3кб + знакогенератор во флэш. Да и даже некоторую графику можно без буфера рисовать. На лету. Буфер не надо, но нужна скорость. Нужно взять символ, найти номер строки этого символа которая сейчас выводится на экран, найти её в памяти и только после этого мы можем её вывести. И так на каждый символ. Ну ни как не вяжется с одним пикселем за такт. Цитата(Огурцов @ Oct 3 2008, 12:05)  Скорее, еще не знают ) Уж больно вы свои познания показали - кроме голословных заявлений ничего нет. Код, алгоритм, описание приведите пожалуйста...
|
|
|
|
|
Oct 3 2008, 19:04
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(Nick_Shl @ Oct 3 2008, 14:32)  Уж больно вы свои познания показали - кроме голословных заявлений ничего нет. Мне не нравится Ваш базар. Ок, какую сумму Вы готовы поставить в ответ за него ? Цитата(Nick_Shl @ Oct 3 2008, 14:32)  Код, алгоритм, описание приведите пожалуйста... Тогда Вы будете смеяться. Над собой. Так что разомнитесь лучше самостоятельно.
|
|
|
|
|
Oct 7 2008, 08:19
|
Группа: Участник
Сообщений: 14
Регистрация: 27-06-08
Из: г. Челябинск, Россия
Пользователь №: 38 580

|
Цитата(Огурцов @ Oct 3 2008, 09:35)  Не понимаю, как считать "в среднем" ? Я беру корткую команду и считаю для нее. А для меги "в среднем" тоже не один мипс на мегагерц получается, так ведь ? ...... На 2.5MHz, один цикл и три такта - 0.833, четыре такта - 0.625 и т.д. Оценивать нужно по выполнению идентичных тестов. Теперь по расчетам. В системе команд 8080 нет трехтактных инструкций. Минимум – 4 (регистр-аккумулятор, например). Соответственно, потолок -0.625 мипс. Как для 8080, так и для меги реальная программа не может состоять только из самых "быстрых" команд. Регистров маловато (по сравнению с АВР), что вынуждает активней использовать память, а это уже 7 тактов. Ну и максимальная длительность команд – 17 тактов (я ошибся в предыдущем своем посту). Таким образом, для 8080 при самом оптимистичном прогнозе я бы не дал выше 0.3 мипс при 2.5 МГц. P.S. Пардон, не заметил пост SasaVitebsk от Oct 3 2008, 11:34. Мог бы и не продолжать
Сообщение отредактировал KP580BM80 - Oct 7 2008, 08:30
|
|
|
|
|
Oct 7 2008, 08:37
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(KP580BM80 @ Oct 7 2008, 08:19)  В системе команд 8080 нет трехтактных инструкций Тогда соглашусь, 0,625. Все остальное - как 36,6С в среднем по больнице, без точного знания полного набора команд, или даже программы, не имеет смысла. Вообще, если бы я ориентировался на на не "только из самых "быстрых" команд", то пиксель на мегагерц ни за что бы не получился.
|
|
|
|
|
Oct 7 2008, 08:50
|
Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589

|
Цитата(gormih @ Oct 3 2008, 15:04)  Нужная точка по координатам на ассемблере находилась последывательностью в несколько команд (по моему 5 или 6). Во всяком случае точно помню, что круги я научился из асма рисовать быстрее (производительней), чем это было реализовано для интерпретатора бейсик в ПЗУ :-)  Так и было. Кстати ПЗУ-шные окружности рисовались путем расчета функций sin и cos в формате с плавающей точкой  . Так что если рисовать на асме окружности, например по Брезенхему, то получалось не то что быстрее, а на порядки быстрей. Да и точнее они получались. Цитата(Огурцов @ Oct 3 2008, 23:04)  Тогда Вы будете смеяться. Над собой. Так что разомнитесь лучше самостоятельно. С удовольствием посмеюсь над собой, если раскажете, как на AVR за 1(один такт) нарисовать 1(один) пикслель  . И не просто пиксель, а еще и составить из них, пикселей какой-нибудь текст.
--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
|
|
|
|
|
Oct 7 2008, 11:11
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(ReAl @ Oct 7 2008, 09:48)  Да их и 32 можно нарисовать в таком темпе Ход мыслей правильный. Но в строке их рисуется не 32 а 416. Хотя можно и еще больше. Цитата(otrog @ Oct 7 2008, 08:50)  как на AVR за 1(один такт) нарисовать 1(один) пикслель  . И не просто пиксель, а еще и составить из них, пикселей какой-нибудь цветной текст. Так я ж предлагал - пари ?
Сообщение отредактировал Огурцов - Oct 7 2008, 11:12
|
|
|
|
|
Oct 7 2008, 12:44
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(Огурцов @ Oct 7 2008, 14:11)  Ход мыслей правильный. Но в строке их рисуется не 32 а 416. Хотя можно и еще больше. Да можно заготовок наделать в духе Код out PIX_PORT, reg_bkgcolor out PIX_PORT, reg_symcolor out PIX_PORT, reg_symcolor out PIX_PORT, reg_symcolor out PIX_PORT, reg_bkgcolor rjmp sym_loop Код out PIX_PORT, reg_symcolor out PIX_PORT, reg_bkgcolor out PIX_PORT, reg_bkgcolor out PIX_PORT, reg_bkgcolor out PIX_PORT, reg_symcolor rjmp sym_loop (это две заготовки, которых достаточно для 'O' в матрице 5*7 и можно в других символах использовать, 5*7 явно плохо, между символами пробелы большие, это для примера только)А знакогенератор сделать в виде ссылок на заготовки и потом под IJMP это пихать... Но это же сожрёт столько флеша, что в мелком кристалле не так много и останется для остальной программы.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Oct 7 2008, 15:11
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Не так немного, нужно оптимизировать, но в принципе примерно это и было отправной точкой. 2 otrog: можете смеяться ) Цитата 5*7 явно плохо, между символами пробелы большие Одна из причин, почему и выбрана матрица 13*20(9*16), 2 такта требуются на переход, 1 на гашение, 1 на смену цвета. Впрочем шрифт нужен был крупный и легкочитаемый, не более 40 знаков в строке, поэтому получилось очень даже в тему. зы: в общем-то понятно, почему и avreal далеко не каждый написал ) респект
Сообщение отредактировал Огурцов - Oct 7 2008, 15:12
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|