 |

|
|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 12 23, 07:03. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Mikrovaldikliai » Video Overlay ( OSD ).
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
 |
 |
 |
Video Overlay ( OSD ). |
Parašytas: 2009 08 23, 20:14 |
|
|
|
|
visu pirma kam tuos "nop" kisi ten, tau ka per greitai cpu dirba?
| Citata: |
labai daug programos teksto bus
nes eiluciu skaicius irgi 320 Smile |
tai va, butent todel ir sakau kad
toks variantas patogesnis
char i =0;
video_out=line1[i]; i++;
video_out=line1[i]; i++;
video_out=line1[i]; i++;
...
tereiks 320 kartu paspausti ctrl-v
nieko taus akiciuoti nereikia ir gej galima ir kintamo ilgio eilutes padaryti:
tereikia pasinaudoti goto konadomis:
char i =0;
if (a==1) goto l50;
if (a==3) goto l90;
l0: video_out=line1[i]; i++;
...
l50: video_out=line1[i]; i++;
...
l90: video_out=line1[i]; i++;
...
kiek ciklu uzina kazkokia programos dalis galima zuzinoti nagrinejant js asamblerio koda. daugelis komandu uzima 1 cikla, kai kursios uzima du.
tau suskaciuok kiek komandu atliekama ir zinosi kiek ciklu reikia.
beje idomu ka tu ten darai, nes jei eilutese po 320 baitu bus tai tai atmega32 daugiaisia 6 eilutes tilps jug ram tik 2kb
manau reikia is esmes keisti kazka nes taip labai beprasmiska
jei tau reikia pilnavercio framefuffer, su didele rezoliucija tai geriaus pasinaudok fpga ar bent jau cpld arba jei to daryti nenori tai permastyk savo reikalavimus |
|
|
|
|
|
 |
 |
Video Overlay ( OSD ). |
Parašytas: 2009 08 23, 20:22 |
|
|
|
|
320X320 cia tashku skaicius, vienoje eiluteja yra 320 bitu ne baitu.
O kaip pvz "if(eilute==270)" kashkodel man po kiekvieno tokio palyginimo tashkas atsilieka per sheshis NOP taip ir nezinau kame reikalas gal kompiliatorius kaltas ?
naudoju CodeVisionAvr. |
|
|
|
|
|
 |
Video Overlay ( OSD ). |
Parašytas: 2009 08 23, 20:27 |
|
|
|
|
tavo programa i ekrana siuncia baitus o ne bitus. jei nori isuti bitus tai teks viska stipriai perdatryti
beje 320x320 net tiek bitu neuzteks tau atminties nes cia reikia 12kb o tu turi tik 2 ar maksimum 4 jei atmega128 paimsi
| Citata: |
O kaip pvz "if(eilute==270)" kashkodel man po kiekvieno tokio palyginimo tashkas atsilieka per sheshis NOP taip ir nezinau kame reikalas gal kompiliatorius kaltas ? |
taip, todel kad palyginimas jug irgi nemaza programa kuria ivykdyti reikia laiko. tu nebent gali prikabinti keleta nop tose vietose kur eilutes neatsilieka kad visur atsiliktu vienodai |
|
|
|
|
|
 |
 |
Video Overlay ( OSD ). |
Parašytas: 2009 08 23, 20:44 |
|
|
|
|
Su ta talpa viskas chernia man neriaikia viso ekrano, man svarbiau sparta.
tas palyginimas "if(eilute==x)" irgi chernia nes po sinxro impulso eina dar spalvos dar koks tai TORCH nu trumpiau tariant turiu tam apie 10 uS.
Procas dirbdamas 20Mhz dazniu kiek suprantu tiek ir veiksmu ?
viena veiksma atlieka per 0.05 uS, o man per 58 uS (mazdaug) reikia sukomutuoti ishejima 320 kartu. Tai yra 0.18 uS vienam tashkui.
Jei moku skaiciuoti tai yra trys ciklai prie 20 Mhz.
keista bet maciau toki daikta veikenti ant Atmega8 tik nemaciau koks kvarcas stovi. |
|
|
|
|
|
 |
 |
Video Overlay ( OSD ). |
Parašytas: 2009 08 23, 21:53 |
|
|
|
|
nu galima biski gudriaus padaryti jei tau taip greicio nepakanka.
iskaidyti i bitus tu ideliu atveju galesi clk/10 greiciu panaudodamas 10 ciklu.
bet atmega turi ivaitiu hardwariniu dalykeliu.
siuo atveju galim pagalvoti apie SPI
tas dalykas skirtas duomenism perdavineti tarp ivairiu mikroshemu nuosekliu protokolu o tau cia kaip tik to ir reikia.
reikia sukonfigūruoti spi norimam greiciui skykim 4 mhz ir tada bereikes kas 8 ciklai paduoti jam po viena baita jei cpu varysi ant 20 mhz o spi dirbs 4 mhz tai vienam baitui turesi kazkur 40 ciklu tai net pakankamai kad paleisti viska pertrauikimu rezime arba tiesiogiai apdirbineti grafika generuojant simbolius pagal lentele. |
|
|
|
|
|
 |
 |
Video Overlay ( OSD ). |
Parašytas: 2009 08 24, 13:56 |
|
|
|
|
Pasiemiau ta daikta dar karta Į rankas.
pasirodo sinchronizacijos ishskyrimas padarytas taip pat ant interuptu kaip ir as esu padares, bet video ishejimas paleistas ish Taimeriu ishejimu.
Nelaibai ash susidures su taimeriu panaudojimu.
Gal kas gali apibudinti kaip galima panaudoti taimeri ishsiusti duomenis.
Toje schemoje yra panaudoti abu.
kiek teko skaityti apie tokius dalykus, buvo rashoma kad vienas taimeris nustatytas tam tikram dazniui (tiksliai nepamenu lyg ir 1,4mhz) o kitas taimeris du kartus greiciau ir ale tas greitesnis kokiu tai budu ar tai kalibruoja pirmo darba ar tai seka ji .
http://arduino.cc/en/uploads/Reference/Arduino-To-Atmega8-Pins.png
ishejimui panaudota 15 ir 17 kojos. |
|
|
|
|
|
 |
Video Overlay ( OSD ). |
Parašytas: 2009 08 24, 14:06 |
|
|
|
|
su taimeriu to padaryti neimanoma.
neisivaizduoju kur tokia minti istraukei
su taimeriu galima nebent vertikalias lininas ant ekrano piesti. |
|
|
|
|
|
 |
Video Overlay ( OSD ). |
Parašytas: 2009 08 24, 15:03 |
|
|
|
|
PB1 OC1A (Timer/Counter1 Output Compare Match A Output)
PB3
MOSI (SPI Bus Master Output/Slave Input)
OC2 (Timer/Counter2 Output Compare Match Output)
Nu PB1 manau yra tikrai naudojama kaip Skaitiklio ishejimas,
kuris kashka skaiciuoja.
O PB3 kaip tu ir esi minejas galbut naudoja "SPI Bus Master Output" tipo duomenu ishejima.
Ishejimo pajungimas toks pat kaip ir shitos schemos:
http://garydion.com/projects/videoverlay/
Shito straipsnio nuotraukoje matosi raides juodam fone, tai reishkia kad yra sodinama video signalo ytampa ir tai gali daryti tik PB1 koja.
Tai taip ir nezinau kaip tiksliai tas kojas naudoja. |
|
|
|
|
|
 |
Video Overlay ( OSD ). |
Parašytas: 2009 08 24, 15:52 |
|
|
|
|
visai galimas dakykas kad taip ir yra toje shemoje
ziurint i programa irgi matosi kad naudoja SPDR registra |
|
|
|
|
|
 |
 |
Video Overlay ( OSD ). |
Parašytas: 2009 08 24, 19:26 |
|
|
|
|
Viena beda nebeda
man SPI(); siuncia tik apie 32 bitus, o jeigu naudoju viena ishkarto po kitos SPI() funkcijos man lieka tarpas.
PVZ:
int eilute,i;
unsigned int x[13]={ 0b00000000000000000000000,
0b00001001110000001000000,
0b00010001110000001000000,
0b00100001110000001000000,
0b01000001110000001000000,
0b10000001110000001000000,
0b11111001110000001000000,
0b00000001110000001000000,
0b11111111111111111111111,
0b00000001110000001000000,
0b11111111111111111111111,
0b00000001110000001000000,
0b00000000000000000000000};
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
#asm
nop
#endasm
if(eilute>260 & eilute<273)
{
spi(x[eilute-260]);spi(x[eilute-259]);
};
eilute++;
}
nelabai ash dirbes su SPI tai ir nelabai ji ikertu
kad ir rashant spi(0b00000001110000001000000);spi(0b00000001110000001000000);
vistiek tarpas lieka. |
|
|
|
|
|
 |
 |
Video Overlay ( OSD ). |
Parašytas: 2009 08 24, 19:49 |
|
|
|
|
zinoma taip neveiks, tau reikai palsukti kol tas spi tavo duotus duomenis issius o tik paskui padavineti jam sekanti baita
dabar tu kemsi duomenis 10 kartu greciau nsi spi juos i ekrana duoda.
reikia sekti kazkoki baita kuris rodo kada spi tuscias arba gali ta dali ant spi pertraukimo uzkabinti |
|
|
|
|
|
 |
Video Overlay ( OSD ). |
Parašytas: 2009 08 24, 20:06 |
|
|
|
|
siaip int yra 16 bitu (bent jau su IAR programuojant) long 32 bitai, tai masyvas pas tave kazkoks neaiskus SPI siuncia tik po 8 bitus, tai tau reikia int padaryti po 8 bitus
| Kodas: |
void komanda( unsigned long data){
SPI(data >> 24);
SPI(data >> 16);
SPI(data >> 8);
SPI(data);
} |
|
|
|
|
|
|
 |
Video Overlay ( OSD ). |
Parašytas: 2009 08 24, 21:04 |
|
|
|
|
| Neseniai susiduriau su tokia SPI problema ant AVR'o. Sekantis baitas iskeliauja mazdaug po periodo lygaus vieno baito. Zodziu keliauja baitas, tuscias tarpas vieno baito ilgio, ir tada sekantis. Niekaip neisprendziau tos problemos. Ko pasekoje, kita, greitesni proca teko naudot. Apsiskaiciavau koki greiti galiu isgaut su AVR. Bandziau naudoti SPI interrupta, while cikle pollinti flag'a ir pan, niekaip nepavyko duomenu siuntimo be zymios tarpbaitines pauzes. Gal kazka nemokejau padaryti. |
|
_________________ -----
That's what she said. |
|
|
|
 |
Video Overlay ( OSD ). |
Parašytas: 2009 08 24, 22:07 |
|
|
|
|
kiek suprantu
SPDR = ltrs[101]; Wait();
#define Wait() while(!(SPSR & (1<<SPIF)))
tai yra taspat kas pas mane
SPI(ltrs[101]); Wait();
? |
|
|
|
|
|
 |
Video Overlay ( OSD ). |
Parašytas: 2009 08 24, 23:30 |
|
|
|
|
o kam tau reikia sitaip?
tehul buna kaip ir buvo
SPDR = ltrs[101]; Wait(); |
|
|
|
|
|
|
 |
Google paieška forume |
|
|
 |
Naujos temos forume |
|
 |
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
 |
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
 |
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
 |
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
 |
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
 |
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
 |
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
 |
Must have farming mods
Farming simulator modhub,
Best farming simulator mods |
|

|
 |