forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
Jak spínat výstupy v bit-bang režimu?

 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Jiné mikrokontroléry, procesory, hradla
 
Vašek
Anonymní





PříspěvekZaslal: 16 květen 2012, 15:07    Předmět: Jak spínat výstupy v bit-bang režimu? Citovat

Používám obvod FT2232H jako převodník na I2C sběrnici. Sběrnice je připojena na první port a na druhém bych si chtěl udělat nějaké dig. vstupy a výstupy. Ale narazil jsem na problém a po několika dnech laborování, už nevím co s tím. Jde o spínání výstupů v bit-bang režimu. Program tvořím v Delphi a pro spínání používám příkaz FT_Write (ftHandle, parametr A, parametr B, parametr C). Když dám příklad: chci sepnout druhý bit portu. Potom hodnota parametru A by měla být 00000010, hodnota parametru B je 1 (odesílám jeden byte). Jde o to, že mě to takhle nefunguje. Ať je za A dosazeno cokoliv, nic se neděje, výstupy se spínají podle hodnoty parametru B, což mi přijde nesmyslné, navíc hodnoty, při kterých výstupy spínají, také nedávají smysl. Co dělám špatně? Nebo se příkaz FT_Write ke spínání výstupů v bit-bang režimu nepoužívá?

Arrow administrator: přesunuto z "Ostatní"
Návrat nahoru
 

 
sqad
Profesionál
Profesionál


Založen: 6.2.2009
Příspěvky: 43

PříspěvekZaslal: 16 květen 2012, 18:57    Předmět: Citovat

V knihe USB prakticky s FTDI, ak som to správne pochopil, tvrdia, že by si mal do parametra A vkladať adresu a nie hodnotu.

Takto je to tam uvedené:
FT_STATUS FT_Write(FTJHANDLE ftHandle, LPVOID IpBuffer, DWORD dwBytesToWrite, LPDWORD IpdwBytesWritten);
Parametry:
■ ftHandle - handle zařízení, na které se má zapisovat,
■ IpBuffer - adresa bufferu zapisovaných dat,
■ dwBytesToWrite - počet bajtů, které chceme zapsat,
■ IpdwBytesWritten - adresa proměnné typu DWORD pro příjem skutečného počtu
zapsaných bajtů.

Príklad:
ftStatus=FT_Write(ftHandle, &data, 1, &pocet);
if(ftStatus!=FT_OK) { //chyba }

Skús tak, možno pomôže, ak nie, trochu viac sa rozpíš...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Vašek
Anonymní





PříspěvekZaslal: 16 květen 2012, 21:13    Předmět: Citovat

Přesně takhle jsem to pochopil i já z manuálu ke knihovně D2XX. Mám nastavené první a poslední dva piny portu B jako vstupy, zbytek výstupy. Dejme tomu, že chci sepnout třetí pin (počítáno od pinu s nejnižší platností). Tady je přepis části zdrojáku, jak by to mělo být a jak jsem to zkoušel:

dataout := 4; //v bin soustavě 00000100
bytesTotransfer := 1;
ftStatus := FT_Write (ftHandleB, @dataout, bytesTotransfer, @bytesTotransfered);
if ftStatus <> 0
then MessageDlg('Chyba komunikace', mtError, [mbOk], 0);


Ale takhle mi to právě nefunguje. Ať mám v proměnné dataout cokoliv, tak se mi nesepne nic. Naopak, když měním hodnotu v proměnné bytesTotransfer, tak se výstupy spínají ať je hodnota v proměnné dataout jakákoliv. Pro tenhle případ se mi výstup sepne, když jsou hodnoty následující:

dataout := 0;
bytesTotransfer := 14;
ftStatus := FT_Write (ftHandleB, @dataout, bytesTotransfer, @bytesTotransfered);
if ftStatus <> 0
then MessageDlg('Chyba komunikace', mtError, [mbOk], 0);


Nevím, jak si to vysvětlit. Něco dělám špatně, ale netuším co.
Návrat nahoru
 

 
sqad
Profesionál
Profesionál


Založen: 6.2.2009
Příspěvky: 43

PříspěvekZaslal: 17 květen 2012, 12:30    Předmět: Citovat

Mám tu jeden dobrý článok z KE1/2009, skús pozrieť ešte tam, inak ti bohužiaľ neviem poradiť.


KE1_2009.zip
 Komentář:
veľkosť okolo 3MB

Stáhnout
 Soubor:  KE1_2009.zip
 Velikost:  3.02 MB
 Staženo:  397 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Divous
Profesionál
Profesionál


Založen: 24.4.2009
Příspěvky: 225
Bydliště: Valašsko

PříspěvekZaslal: 18 květen 2012, 7:57    Předmět: Citovat

Mám dojem, že jsem měl ten samý problém.
FTDI obvod mi nechtěl zaboha spínat k VCC, ale k nule to šlo.
Vyřešil jsem to externím pullup odpůrkem.
Není to sice košér, ale fungovalo to.

_________________
AVR Studio 4.18 + WinAVR, AVR Studio 6.2
Elnec T51prog, ASIX PRESTO, AVR MKII
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
Vašek
Anonymní





PříspěvekZaslal: 18 květen 2012, 22:41    Předmět: Citovat

Tak už je vím, kde byl problém.
Pro nastavení big-bang režimu jsem používal funkci Set_USB_Device_BitMode z D2XX unity pro Delphi, ale příkaz FT_Write jsem implementoval do programu přímo z DLL knihovny. Nevím, jaký to má vliv, když se to takhle zkombinuje (do programování zase tolik nevidím), ale když jsem v programu použil přímo příkaz FT_SetBitMode, tak pak všechno běželo jak má. Jiné změny jsem v programu nedělal, tak to muselo být ono.

Díky moc za pomoc, napadlo mi to, když jsem se koukal na ten výpis zdrojáku v článku z KTE Wink
Návrat nahoru
 

 
sqad
Profesionál
Profesionál


Založen: 6.2.2009
Příspěvky: 43

PříspěvekZaslal: 21 květen 2012, 17:21    Předmět: Citovat

Nie je za čo, som rád že ti to pomohlo...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Jiné mikrokontroléry, procesory, hradla Časy uváděny v GMT + 2 hodiny
 
Strana 1 z 1
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2017 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)