Вопрос программистам

Флейм в чистом виде - все что угодно...
Но - в рамках закона :)
roman.com
Друг Кота
Сообщения: 9157
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Вопрос программистам

Сообщение roman.com »

Adrift писал(а):один AVR другому не сможет тоже.
а кто сказал что он будет один ? )) напоминаю.. .мы делаем кампутер на куче AVR ))
где не справится один... справятся два ! )) друг всегда придёт на помощь )) :)))
тау мы сделали в сетевухе... один не справился... а два справляются ! ))
:)
а дальше...
прерывания... у нас есть два прерывания...
по верхнему пределу (у нас задаёт ICR1)... и по окончанию импульса (у на задаёт OCR1).
верхний предел флаг TOV... его будем ловить)) точнее процессор его будет ловить... а мы будем писать в прерываниях... вон он спрятался в регистре прерываний))
Screenshot_1.jpg
(14.09 КБ) 34 скачивания
получаеся:
1/16МГц = 62,5нс один такт ардуины.
нам надо записать 256 пикселя за 402 такта...

и ещё у нас есть в запасе 105 тактов (интервал)...
за эти 105 тактов мы должны успеть обработать нашу картинку... сделать трассировку лучей :))) ))
VGA такта интервал.jpg
(29.18 КБ) 33 скачивания
и у нас всё получится ! ))
:)
Реклама
Adrift
Вымогатель припоя
Сообщения: 549
Зарегистрирован: Вт окт 01, 2024 15:22:33

Re: Вопрос программистам

Сообщение Adrift »

[uquote="roman.com",url="/forum/viewtopic.php?p=4641491#p4641491"]1/16МГц = 62,5нс один такт ардуины.
нам надо записать 256 пикселя за 402 такта...[/uquote]
И как тут помогут вспомогательные ардуины? )
Реклама
roman.com
Друг Кота
Сообщения: 9157
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Вопрос программистам

Сообщение roman.com »

выше я подробно написал как работает сетевая карта в нашем самодельном компе...
там две ардуины синхронно (т.е. одновременно) выводят данные в один порт изернет...
точно так же они могут выводить данные в один порт VGA... разницы нет... от слова совсем))
:tea:
потом мы сделаем многоядерный процессор на ардуине... с распределёнными вычислениями... с управлением потоками... со всякими семафорами... и прочей фигнёй)) :))) но это будет чуть позже...
:)
а сейчас подумаем какие могут быть "подводные камни"...
:roll:
Adrift
Вымогатель припоя
Сообщения: 549
Зарегистрирован: Вт окт 01, 2024 15:22:33

Re: Вопрос программистам

Сообщение Adrift »

[uquote="roman.com",url="/forum/viewtopic.php?p=4641510#p4641510"]выше я подробно написал как работает сетевая карта в нашем самодельном компе...
там две ардуины синхронно (т.е. одновременно) выводят данные в один порт изернет...
точно так же они могут выводить данные в один порт VGA... разницы нет... от слова совсем))[/uquote]
Одна слегка разогнанная ардуина может по SPI выдавать по 1 биту с нужной нам скоростью, значит чтобы получить 16 цветов нужно 4 идеально синхронизированных ардуины, где каждая хранит только R, G, B и яркость в буфере размером 6144 байта, а пятая AVR будет пытаться ими всеми управлять? )
Реклама
Эиком - электронные компоненты и радиодетали
SfS
Друг Кота
Сообщения: 19416
Зарегистрирован: Пт янв 12, 2007 11:21:39
Откуда: Томск

Re: Вопрос программистам

Сообщение SfS »

Можно трахаться как хочешь))
Но это уже на уровне извращений))
Реклама
roman.com
Друг Кота
Сообщения: 9157
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Вопрос программистам

Сообщение roman.com »

у нас уже есть 2 идеально синхронизированных ардуины...
SPI скорре всего не будет... будет параллельный порт... как в телефоне выше...
а сколько всего надо ардуин... мы пока не считали)) пока что одну не можем настроить))
:roll:
спектрум на ардуине.. это уже на уровне извращений))
если извращаться... так так уже по полной)) :)))
Реклама
Adrift
Вымогатель припоя
Сообщения: 549
Зарегистрирован: Вт окт 01, 2024 15:22:33

Re: Вопрос программистам

Сообщение Adrift »

[uquote="roman.com",url="/forum/viewtopic.php?p=4641528#p4641528"]у нас уже есть 2 идеально синхронизированных ардуины...[/uquote]
У которых всего по 2KB RAM. Придется выкинуть и купить 5 нормальных )
roman.com писал(а):SPI скорре всего не будет... будет параллельный порт... как в телефоне выше...
SPI нужен ради скорости, чтение из памяти и вывод в порт - это 3 такта, не важно байт выводить или бит. Потом 7 бит можно за 2 такта вывести сдвигая прочитанный байт, но все 8 бит за 2 такта не выведешь.
roman.com
Друг Кота
Сообщения: 9157
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Вопрос программистам

Сообщение roman.com »

AVR по 2048 байт RAM.

чтение из памяти и вывод в порт - это 3 такта - для одной ардуины.
для двух ардуин - в два раза меньше))
для трёх ардуин - в три раза меньше)) - это 1 такт :)))

"подводные камни"...
если мы будем использовать аппаратный таймер для синхронизации... а писать строку в прерывании этого таймера... и при этом писать бесконтрольно на С++... не контролируя такты... :))) )) то у нас будет картинка "дрожать"... потому что процессор может быть в этот момент занят выполнением других инструкций...
:roll:
об этом писали выше...
это есть в даташите...
прерывание.jpg
(68.62 КБ) 30 скачиваний
разберём подробней...

1. первый вариант событий))
процессор не занят))
-таймер тикает... на вершине поднялся влаг TOV... на следующем такте мы ушли в прерывание... в прерывании пишем строку... выводим на экран...
прерывание_0.jpg
(46.3 КБ) 30 скачиваний
всё хорошо))

2. второй вариант событий))
процессор занят))
-таймер тикает... на вершине поднялся влаг TOV... на следующем такте мы... ждём пока процессор закончит выполнять двух тактную инструкцию... и только потом ушли в прерывание... в прерывании пишем строку... выводим на экран...
прерывание_1.jpg
(65.23 КБ) 32 скачивания
в итоге у нас картинка сместилась на целый пиксеть !
:o

а какие у нас вообще есть инструкции в AVR ?
инструкции.jpg
(163.4 КБ) 29 скачиваний
самая большая инструкция в AVR это работа со стеками... занимает 4 такта...
но это работа со стеками...
:roll:
а реально самая большая инструкция в "нормальном состоянии" занимает 3 такта...
:roll:
значит... максимум как далеко может уехать наша картинка - это 3 такта... или 3 пикселя))
:roll:
это всё при условии что нет других прерываний...

Итого:
если мы всё правильно прикинули... то у нас картинка будет дрожать... т.е. ездить туда-сюда на три пикселя... в каждой строке... и ещё в каждом кадре))

других подводных камней я пока не обнаружил))
замечательно))
:tea:

3. третий вариант событий))
процессор занят))
НО если мы будем использовать программный таймер для синхронизации... и писать строку и синхроимпульсы в прерывании этого таймера... и при этом писать бесконтрольно на С++... то по идеи... у нас НЕ будет картинка "дрожать"... потому что вместе со строкой будут дрожать и синхроимпульсы... а монитор сам будет подстраиваться по синхроимпульсы...
скорее всего поэтому у TovarishAleksey ничего не дрожит...
главное что бы монитору не стало плохо))
:tea:
Adrift
Вымогатель припоя
Сообщения: 549
Зарегистрирован: Вт окт 01, 2024 15:22:33

Re: Вопрос программистам

Сообщение Adrift »

[uquote="roman.com",url="/forum/viewtopic.php?p=4641541#p4641541"]чтение из памяти и вывод в порт - это 3 такта - для одной ардуины.
для двух ардуин - в два раза меньше))
для трёх ардуин - в три раза меньше)) - это 1 такт :)))[/uquote]
Хорошо, тогда можно добавить SWAP и за 4 такта выводить в порт тетрадами. Две ардуины, одна с задержкой на 2 такта, выводят четные и нечетные пиксели соответственно. Нужно 24576 байт видеопамяти, у каждой ардуины в идеале будет по половине. С 2КБ - очень проблематично, как и то, что у третьей ардуины не хватит памяти чтобы вместить хоть один экран целиком, так что это все скорее под текстовые режимы где памяти нужно намного меньше.
roman.com
Друг Кота
Сообщения: 9157
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Вопрос программистам

Сообщение roman.com »

можно выводить в порт битами.
можно выводить в порт тетрадами.
можно выводить в порт байтами.

можно подключить три ардуины к 8-ми битной шине (всего можно подключить 256 ардуин :))) ) ...
и выводить 256 цветов...

шина > ардуина > DAC / Цап r2r > R - 256 цветов...
шина > ардуина > DAC / Цап r2r > G - 256 цветов...
шина > ардуина > DAC / Цап r2r > B - 256 цветов...

2048 байт RAM хватит только на знакогенератор)).
:tea:
roman.com писал(а):2. второй вариант событий))
процессор занят))
-таймер тикает... на вершине поднялся влаг TOV... на следующем такте мы... ждём пока процессор закончит выполнять двух тактную инструкцию... и только потом ушли в прерывание... в прерывании пишем строку... выводим на экран...
-как сделать чтоб не дрожало ?
-надо синхронизировать работу процессора и таймера.

-в прерывании читаем таймер TCNT1L... так мы узнаем сколько тактов прошло с момента установки флага TOV...
-увеличиваем программный счетчик процессора на соответствующее количество тактов... 1-такт или 2 такт...
-через несколько тактов процессор и таймер будут синхронизированы.
-далее... пишем строку... выводим на экран... как то так))
:tea:
Аватара пользователя
TovarishAleksey
Потрогал лапой паяльник
Сообщения: 313
Зарегистрирован: Вс сен 22, 2024 12:16:47
Откуда: Село Лютенька

Re: Вопрос программистам

Сообщение TovarishAleksey »

Всё ещё разбираюсь с таймерами. Сегодня подробно разобрал порты, прерывания. Пришло понимание после того, как увидел весь код в двоичных кодах: и сдвиги, и надстройки. В общем, есть ещё что изучить. Картинка то у меня не дрожала, но были некие вертикальные полосы, ну, оно и понятно, у меня даже разрешение получилось не 640 на 480, а +/- 812 на 480 пикселей. Скорее всего, это магия си++, ну, разберёмся..
"Умный может зарабатывать триста рублей, а проживать три тысячи"
roman.com
Друг Кота
Сообщения: 9157
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Вопрос программистам

Сообщение roman.com »

не может быть там +/- 812
ардуина не сможет передать 812 пикселей в одной строке... частота у ардуины маленькая... выше разбирали...

теоретически ардуина может передать 812 пикселей в одной строке... но для этого надо уменьшить частоту развертки...
от этого монитору поплохеет))
Morroc
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Re: Вопрос программистам

Сообщение Morroc »

То звук в бедную мегу пихают, то видеосигнал с 800 точек... какой то бдсм как будто таких же копеечных процов пошустрее нет.
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
roman.com
Друг Кота
Сообщения: 9157
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Вопрос программистам

Сообщение roman.com »

так мы же находимся в теме МЯЯЯУ!
сюда заходят только любители бдсм
:)))
спасибо что напомнил...
нам же ещё звуковуху делать ! ))
:))
Аватара пользователя
TovarishAleksey
Потрогал лапой паяльник
Сообщения: 313
Зарегистрирован: Вс сен 22, 2024 12:16:47
Откуда: Село Лютенька

Re: Вопрос программистам

Сообщение TovarishAleksey »

Добрый вечер! Возникла проблема с таймером..

Код: Выделить всё

int count = 0;

void setup() {
  DDRB = 0b100000;
  PORTB = 0b000000;
  TCNT0 = 0;
  TCCR0B = 0b00000101;
  sei();
}

void loop() {
  if(count == 61){
    count = 0;
    PORTB ^= 0b100000;
  }
}
Добавляю обработчик прерываний, и тут выскакивает ошибочка.

Код: Выделить всё

ISR(TIMER0_OVF_vect){
    count++;
}

Код: Выделить всё

wiring.c.o (symbol from plugin): In function `__vector_16':
(.text+0x0): multiple definition of `__vector_16'
C:\Users\user\AppData\Local\Temp\arduino\sketches\4A6FC0FCC028FE418CDE32B64CCFAC68\sketch\TIMER.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
Есть идеи? А то сижу, не понимаю..
БДСМ наше всё! :chmoked:
"Умный может зарабатывать триста рублей, а проживать три тысячи"
SfS
Друг Кота
Сообщения: 19416
Зарегистрирован: Пт янв 12, 2007 11:21:39
Откуда: Томск

Re: Вопрос программистам

Сообщение SfS »

[uquote="Morroc",url="/forum/viewtopic.php?p=4641894#p4641894"]То звук в бедную мегу пихают, то видеосигнал с 800 точек... какой то бдсм как будто таких же копеечных процов пошустрее нет.[/uquote]

А ещё люди для спектрума программы пишут)
Morroc
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Re: Вопрос программистам

Сообщение Morroc »

еще связи на КВ проводят :))) не могу обосновать чем одно отличается от другого, но вот блин... писать под спектрум как будто бы верх маразма, а связи проводить... выходит тоже ? :shock: :)))
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Аватара пользователя
TovarishAleksey
Потрогал лапой паяльник
Сообщения: 313
Зарегистрирован: Вс сен 22, 2024 12:16:47
Откуда: Село Лютенька

Re: Вопрос программистам

Сообщение TovarishAleksey »

Сфс, меня всегда интересовало хорошо забытое старое. Я мечтал о ретро спектрум-ноутбуке, а сейчас делаю свой "компьютер". Да, пусть он будет и не производительный, пусть и памяти у него чуть больше чем у рыбки.. Роман, не напоминайте о том, что много букаф)
"Умный может зарабатывать триста рублей, а проживать три тысячи"
roman.com
Друг Кота
Сообщения: 9157
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Вопрос программистам

Сообщение roman.com »

TovarishAleksey писал(а):БДСМ наше всё!
:o
ты что ! )) это 18+
нас же из-за тебя посадят !
за "пропаганду среди несовершеннолетних" ))
:facepalm:
TovarishAleksey писал(а):Роман, не напоминайте о том, что много букаф)
больше не буду))
:tea:
TovarishAleksey писал(а):Есть идеи?
блин... чтоб я ещё знал все эти ваши ардуины)) :facepalm:
у меня нет ардуин.))

оно всё равно нормально работать не будет... :roll:
такие вещи надо на ассемблере писать... и такты считать... хотя бы примерно))
:roll:
Аватара пользователя
TovarishAleksey
Потрогал лапой паяльник
Сообщения: 313
Зарегистрирован: Вс сен 22, 2024 12:16:47
Откуда: Село Лютенька

Re: Вопрос программистам

Сообщение TovarishAleksey »

Желаю тепла на нарах!))
Так вот, сделал вывод что нужно использовать что-то другое. Узник Роман, а у вас в Атмеле есть мой микроконтроллер Atmega328P?
"Умный может зарабатывать триста рублей, а проживать три тысячи"
Ответить

Вернуться в «МЯЯЯУ!»