Fórum témák

» Több friss téma
Fórum » Atmega32 video generátor
 
Témaindító: hummer, idő: Jún 20, 2010
Témakörök:
Lapozás: OK   1 / 1
(#) hummer hozzászólása Jún 20, 2010 /
 
Helló ! Egy kis segítséget kérnék. Atmega32-vel építenék egy méréshez egy alapsávi videojel generátort. 15 MHz-es külső kvarcról megy. Azért így és ilyen módon csinálom, mert ez van kéznél. Mondjuk, a hogy a hardver rendben van. Egy egyszerű D/A átalakítót alkalmazok, három ellenállás, a neten találtam.

A gondom a következő: már nem látok tisztán. Véstem Pascalban egy programot az Atmega32-höz, a jelek megjelennek a képen, de sehogy nem tudom szinkronizálni a képet. Ebben kérnék segítséget. Mit toltam el a programomban ? Nem vagyok a programozás Paganínije, de azért megértem a válaszokat. A képen egy széles fehér oszlopnak kellene megjelennie, de ezidáig csak az oszlop csíkjai jelennek meg összevissza és fut a kép is.

Végigolvastam idevonatkozólag egy sereg irodalmat. Ha átnézem a progit, szerintem minden a felhasznált irodalmak szerint megy (pl. időzítések). Más dolog, hogy nem látom a hibá(ka)t, amit elkövettem a szinkronizálásnál. Attól tartok, hogy sem a sor, sem a képszinkronjeleim nem mennek jól, de nem tudom, hogy miért. Nem látom.

Köszi szépen minden segítséget.

proba03.mpas
    
(#) Ballage válasza hummer hozzászólására (») Jún 20, 2010 /
 
Halihó!

Atmegához sajnos nem értek, de esetleg hátha jól jön pár észrevétel.

A teljessor miért kezdődik feketével, nem egyből csőzár kellene oda?

Az első félkép után miért kell fésor? A 4. ábra szerint nincs ott, csak az előkiegyenlítő, előtte meg egy egész sor, amiben csak a második felében van képtartalom, az első fele fekete, de ettől függetlenül a teljes sort végig kell várni. A kód ezzel szemben rádob egy félsor várakozást a végén egy szinkronjellel.

Ugyanakkor a második félkép végén tényleg csak egy fél sornak kéne kimennie, a végén egy szinkronnal. Szerintem felcserélted a két félképet, mert az utókiegyenlítő hossza meg jónak tűnik nekem.

Egyébként meg pár ötlet még:

Nézd meg, hogy a késleltető delay_us mennyire pontos, illetve, hogy mennyire van pontosan hozzáigazítva az aktuális órajelfrekvenciához (PIC-nél az órajelfrekitől függ az időzítő kód, gondolom Atmegánál sincs másképp). Mivel minden ezekre épül, ezért fontos, hogy ezek jól legyenek belőve.

A mikrovezérlőről azt írja az adatlapja, hogy kb. 1 utasítás/órajel a sebessége. Ez azt jelenti, hogy 15MHz-es óra esetén egy utasítást kb. 0.066 us alatt hajt végre. A kódban az egyes jelek előállítása külön eljárásban történik, aminek a meghívása összességében (call/return utasítások meg esetleg a paraméterek átadása) több (akár tíz-húsz) utasítás is lehet, ami hozzáadódik a végrehajtás idejéhez, és ez így ronthatja az időzítések pontosságát, főleg, hogy ennyi hívás van egymásba ágyazva.

Nem ártana ellenőrizni a kimenőjel szintjeit és időzítéseit egy szkóppal (tv szkóp lenne erre az igazi).

Amúgy ezzel a forrással egyeztettem:

Bővebben: Link
(#) hummer válasza Ballage hozzászólására (») Jún 20, 2010 /
 
Köszi a választ. Azt a mérés1.doc-ot néztem én is. Azért kezdek mindig feketével, mert a szinkronjelek előtt mindig van egy 1,5us fekete szint, a képcsövet csak aztán tudom "lezárni" a szinkronjellel. De ha elhagyhatom a beugró 1,5us-of fekete szintet, akkor elhagyom.

Megnézem a kódot. Addig küldök átnézésre egy másikat. Ugyanazt átírta olyan formára, ahogy az impulzusok és a félképek következnek.

Megpróbálom ellenőrizni a delay_us hosszát.

Amúgy a jelenség az, hogy az oszlopom elemei (sorok) közvetlenül egymás alatt, félsornyi eltéréssel lépcsőzetesen vannak. Egy hosszú, jobbra lefele nyúló lapos lépcső, aminek a fokai a felette levő felénél kezdődnek. Tuti valami időzítési gond, de nem jövök rá, hogy hol.

proba03.mpas
    
(#) Ballage válasza hummer hozzászólására (») Jún 20, 2010 /
 
Akkor szinte biztosan az időzítéssel van a gond. Mivel jobbra lefelé nyúlik, ezért a soridőd jóval nagyobb, mint a szabványos. Feltétlenül meg kéne nézni, hogy mit csinál az a delay_us. Meg azt sem ártana megnézni, hogy milyen assembly kódot generál a fordító.
(#) hummer válasza Ballage hozzászólására (») Jún 20, 2010 /
 
Megváltoztattam az időzítéseket és megjelent az oszlopom, ahogy kell. Köszi az ötletet, szkóppal megmértem a jeleket, igazad volt, kábé 15%-kal nagyobbak voltak az időzítések.

Annyi gondom van még, hogy az oszlop tetején vagy 5 mm szellemképszerűen balra hajlik (alatta ott a rendes kép), a kép alján egy jó 1/5-1/6-od magasságban pedig egy árnyalattal halványabb az oszlopom.

A kép vibrál kicsit. Mi lehet még ?
(#) Ballage válasza hummer hozzászólására (») Jún 20, 2010 /
 
Módosított kódban az első félkép végén nem 5, hanem csak 4 utószinkron ciklus kell. (133-142. sor) és nem kell utána fésor szünet.

177-183. sor: a 2. félkép utáni félsor kódjában nem jó az időzítés: először kell egy 5 us-os csőzár, majd utána a hosszú fekete.

És még egy apróság a 105-108. és 171-174. soroknál:

  1. fekete;
  2.           delay_us(21);
  3.           fekete;
  4.           delay_us(2);


Ez összevonható egy 23 us-os feketévé.
(#) hummer válasza Ballage hozzászólására (») Jún 21, 2010 /
 
Köszi. Vettem a gépbe egy 16 MHz-es kristályt, azzal fogom megpróbálni. Sajnos, az Atmega32 amilyen jó kis gép, annyira nem megy 16 MHz-nél gyorsabban.

A két fekete sor az egy kísérlet eredménye volt, amiből az egyiket átírtam szürkének. Így most egy fehér és egy szürke oszlop van a képen.

Elég lesz szerinted a 4 utószinkron is ? Kipróbálom. Kiveszem a félsor szünetet is (ha azóta nem vettem ki).
(#) Ballage válasza hummer hozzászólására (») Jún 21, 2010 / 4
 
A szabvány szerint az első félkép kezdeténél 5, a másodiknál 4 félsorból áll az utókiegyenlítés.
Következő: »»   1 / 1
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem