Zaslal: ne březen 19 2023, 16:23 Předmět: Radič diskety s Arduinom
Šuflíkový bastl jak remeň - Arduino s radičom diskety so švábom z PC karty.
Inšpirácia? Pripojiť (takmer) akúkoľvek predpotopnú mechaniku cez USBčko do dnešnej techniky a mať možnosť čítania, ako aj zápisu, dát - či už obrazu celých diskov, alebo jednotlivých súborov. Samozrejme, nejedná sa o profi archivačný nástroj, jedná sa o bastl, vôbec prvý pokus z mojej strany o fotocestu, osadenie SMT švábom vyfúkaného teplovzdušnou pištolou, a nadrátovanie adresných a dátových liniek do niečoho, kde nemusím študírovať datasheety.. Aspoň som si to myslel. Opak bol pravdou.
Napísal som o tom traktát v EN, ktorý nikto čítať nebude, takže tu to zhrniem v kocke - použil som FDC radič z PC karty, šikmákom opajcovaný DP8473 za tri doláre kus, pôvodne od National Semiconductor. S kódom, ktorým Arduhnilo komunikuje, je možné použiť bárjaký PC kompatibilný radič, iba sa musí správne zapojiť - mikrokód je kompatibilný s NEC uPD765, taký kvázištandard. To DPčko som tu použil preto, lebo som ho mal ako zopár náhrad do SCSI kariet Adaptec a Seagate, kde v jednej bol vadný a musel som ho nahradiť. K rozbehaniu stačí kryštál a bižutéria pre diskriminátor PLL.
Arduino dosku som použil Mega2560, znova šikmácky pajc, čo mi ostal ešte z experimentov 3D tlačiarne RAMPS/RepRap, aj s displejom - originál tu ozaj netreba. Komunikuje to cez 128x64 displej, možno použiť bárjaký ktorý podporuje Oli Krausova u8g2 knižnica, plus PS/2 klávesnica. Oboje sa dajú vypnúť, potom sa komunikuje priamo cez USB alebo sériový port, príkazovým riadkom "a la" DOS. So zapnutým displejom a klávesnicou sa sériák používa iba prenos súborov a obrazov diskov, počítač to nutne nevyžaduje - základné "dosovské" operácie to zvládne na displej - formátovanie, verifikácia, čítanie súborov, mazanie, jednoduchý traverz cez adresáre, výsyp obsahu. (Nie na CP/M diskoch, tam adresáre neexistujú.)
Pôvodná inšpirácia vychádzala z projektu ArduinoFDC, ktorý nadrátoval floppy mechaniku na arduhnilo napriamo bez radiča, konkrétne pre Uno, lenže to nebolo úplne spolahlivé, diskové prenosy častokrát skapali na CRC chybách či "vadných sektoroch" (ktoré neboli vadné, iba ich časovanie rozbilo), a navyše to bolo šeredne pomalé - dokázalo to pracovať iba s jedným sektorom naraz a odzrkadliť jednu stupidnú disketu trvalo vyše desať minút. Plus, podporovalo to iba 4 formáty diskov.
S týmto bastlom, kde používam AVR Mega2560, je k dispozícii trocha viac RAM, takže je možné použiť väčší diskový buffer a riešiť viac sektorov naraz - 1.44MB 3.5" idú za tri minúty a štyridsať sekúnd miesto desiatich, päťpalce do dvoch minút, osmipalce do minuty. Ako experiment som tomu dorobil podporu na čítanie 250K CP/M (MIKROS) osmipalcov + jednoduchý zápis (mazanie). Je možné ešte nahodiť úplne divné geometrie či veľkosti sektorov + to uložiť do EEPROM, aby si ich arduhnilo pamatalo i po reštarte.
To pre začiatok stačí. Koho to zaujíma - takto to pracuje s 8", 5.25" a 3.5" mechanikami, schéma je tu (podstatný je iba ten šváb, zvyšok je podporná bižuteria); ako vznikal plošák som riešil vo "vkladaní zaujimavých obrázkov".
Maximálny počet mechaník, ktoré sa dajú na jeden radič nastaviť naraz, je 4 - ja používam 2, nechcelo sa mi letovať dve kolíkové lišty.
No a keďže Arduhnilo na rozdiel od PC nemá DMA radič, takto nejak vyzerá komunikácia s FDC. Pol kódu je čakanie na Godota, druhá ošetrovanie chýb. Obsluhu prerušenia som radšej napísal v asembleri, pretože by sa mala vrátiť do 6 mikrosekúnd - toľko trvá arduiňáckemu overhead pred tým, než vôbec odovzdá riadenie samotnej obsluhe
Summa summarum:
,,Teda, to muselo dát příšernou práci. Přitom taková blbost, co?''
Ano, zapojenie mi funguje i s 1.2MB mechanikou, konkrétne svojou Teac FD-55GFR, + dá sa tam nastaviť aj ak náhodou vypadol DISK CHANGE signál, to isté ide v DOS cez DRIVER.SYS/DRIVPARM. Iba sa o sekundu-dve predlži čas prístupu na disketu.
V tvojom prípade, ak ti tá mechanika nefunguje, tak pred tým než sa s ňou začneš crcať s Arduinom, zapoj tú svoju pod DOS (na nejaký Knoppix sa vyser), stiahni Dave Dunfieldov ImageDisk (IMD); dnu vlož buď 360K alebo 1.2M disk a spusti Test RPM. Musí ukázať 360 ot/min u oboch, PC otáčky na 300 neznižovalo, iba prepínalo prenosovú rýchlosť podľa hustoty záznamu. Ak neukazuje nič, FDC nedostáva prerušenie - disk neindexuje, napríklad nefunguje infrazávora pre signál INDEX (overí sa osciloskopom), ap.
Následne Alignment/test musí prečítať obidve hlavy bez problémov. Ak zle číta, alebo nesprávne ukazuje číslo stopy v prvom stlpci, tak sú rozkalibrované hlavy alebo je nesprávne nastavený doraz stopy 0; ak sú na každej stope a na oboch hlavách otazníky a nečíta nič, mechanika/hlavy sú KO - to rozlíšiš prepípaním hlav multimetrom na spojitosť.
Ak máš v tej 1.2MB mechanike vložený 360K disk, musíš zapnúť Double Stepping, aby fungovalo čítanie i zápis. Ale pozor - zapisovať s 80stopou mechanikou na 40stopý disk sa neodporúča, pretože potom 40stopé mechaniky (s hustotou 48 stôp na palec) ich budú mať potom problém prečítať. Čítanie každopádne musí fungovať.
34pin rozhranie disketových mechaník 5,25" a 3,5" kompatibilných s PC je dostupné tu, neplatí to pre 8", ktoré majú vlastnú zbernicu - väčšinou Shugart, ale niekedy i vlastné poprehadzované vývody...
Založen: Jul 21, 2006 Příspěvky: 25741 Bydliště: skoro Brno
Zaslal: po březen 20 2023, 16:04 Předmět:
Už jste ty hlavy zkusili někdy vyčisti třeba isopropanolem? Je to mechanika jako každá jiná.
Mimochodem, to "snímání" otáček jsem řešil u 3" mechaniky pro Amstrad/Schneider CPC6128 a tam to ty diskety dokázalo i poškodit. Studeňák na optické závoře. _________________ Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?]
Založen: Apr 02, 2011 Příspěvky: 18533 Bydliště: Nový Bydžov
Zaslal: po březen 20 2023, 16:53 Předmět:
Nixdorfe, znáš se s Romanem B. z Košic? Ten taky už před dlouhým časem dělal na ATmega 328P řadič SD karet jako virtuální diskety pro PMD85. Já to 2011 předělal na Sapi1-CP/M, 4 "mechaniky". Buď 8" SS/SD IBM kompatibilní že to šlo vrazit do Altair simulátoru na PC a nebo nekompatibil velikost.
Připojení přes paralelní port.
To připojit k Sapi1 HDD přes IDE s PIO0 byla proti tomu celkem prkotina. Na jednom fyzickým HDD bylo 16 logických disků 16 MB, součastně aktivní jen dva ale dalo se volit který z těch 16. Větší kapacitu jsem nedával, takulky zabíraly strašně místa i když bylo použitý stránkování RAM. _________________ Jirka
@Habešan, rado sa stalo. Preto som zverejnil i zdrojáky, nech každý, koho to chytí, potom svojou troškou prispeje. Ale veľa RAM už v Arduine neostalo, jedine už iba ukrojiť zo statického diskového bafra, čím sa spomalia prenosy. Ideálne k tomu pripojiť DMA a dynamickú pamäť, ale to už sa človek zastaví nad tým, že vymýšla koleso nad bohom zabudnutou technologiou.
Okrem toho DPčka tam ide pripojiť i klasický ATčkový Intel 82077, teda radiče, ktoré majú 8 paralelných dátových, a 3 adresné linky. Zbytok sa zapojí už podľa katalogu - PLL filter pre zvolené prenosové rýchlosti atd. To DPčko v schéme bude fungovať od osmipalcov až po bohom zabudnuté PS/2 2.88MB
V súčasnom "prevedení" si to avšak neporadí s diskami, ktoré majú rozlišnú geometriu na druhej strane (ak nemajú do plášťa spravenú druhú dieru a patrične sa "neotočia"), prípadne rôzne geometrie sektorov na rôznych stopách - napríklad nepôjde odzrkadliť obraz starého MS Flight Simulatora, ten toto využíval ako dobovú ochranu proti dosovskému kopírovaniu. Čiže aká geometria sa zvolí na začiatku, tá platí potom pre celý disk. Čo sa týka kódovania dát, DPčko ide nastaviť na FM a MFM, M2FM a GCR zatím nepôjdu.
@Zdeněk: FDC použitý v PC (a tiež riešenie s Arduinom hore, viď fdc.cpp) nevráti prerušenie, ak absentuje indexový signál - po timeoute Not ready error. Ani sa nesnaží pristupovať na stopy, takže tam je v suchu.
Ale boli stroje, ktoré na ten signál hádzali šumák a tam už hrozilo, že mohlo dôjsť k poškodeniu dát, ak sa tie sektory správne nečasovali, ako píšeš.
Špinavú hlavu by poznal - vrstvy oxidov, najmä z navlhlých diskiet (niečo na spôsob škrípavých kotúčových pások, kde sa odliepa vrstva od základného pásku). Hneď by sa to prejavilo škripotom a v horších prípadoch by videl v diskovom médiu vyoranú špirálu. Každopádne, ak mechanika nečíta stopu 0 (viď ten RPM check/alignment test), potom je to o niečo horšie - treba zistiť, či sú hlavy poškodené, alebo bolo s azimutom manipulované, alebo je vada v separátori dát na DPS ap.
@Celeron: stránky Bórikovcov poznám, myslím že tam mali i disketový emulátor k PMD-SD jak píšeš. Ale osobne ich nepoznám, osmibity ma tak trocha obišli. Ku starému hardware proste ten Abort, Retry, Fail patrí
Naposledy upravil nixdorf dne po březen 20 2023, 17:11, celkově upraveno 1 krát.
Ano, ale chápeš jak to myslím, staré "domáce počítače". Ostatne, 8088 jv IBM PC je tiež svojim spôsobom "osmibit", pretože má osembitovú dátovú zbernicu, aby veľká modrá ušetrila
a takto nejak to vie vyzerať, keď sa z jednostranného bastlu osvicovaného doma na kolene, navrhne normálny obojstranný plošák ako "shield" na Arduino, teda DPS na zacvakávanie zvrchu, s FDC v sokli. Sa hovorí že kdo umí, ten umí... a kdo neumí, ten čumí.
Týpek si to spravil pre imaging osmipalcov z Consulov, zdá sa, že úspešne. No a ja som konečne objavil i "nepodporovaný" formát diskiet, ktoré ten čip neprekúsne - napríklad 880K z Amigy/Atari ako double density (DD). To vychádza v prepočte 11 sektorov na stopu pri prenosovej rýchlosti 250 kb/s - na radič FDD z PC ako je tento DP8473 bez šance, pretože sú tam zahrnuté celé stopy aj s odskokmi (gaps) medzi sektormi.
Čo ešte takýto PC FDC zvládol pri 250kbps DD, je 10 sektorov na stopu s malými odskokmi (7 a 27), teda 800K. Ale nulovými odskokmi ten šváb naprogramovať žiaľ nejde.
Nemůžete odesílat nové téma do tohoto fóra. Nemůž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. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.