Expanduino_I

Pochlubte se svým robotem ostatním!
Odpovědět
Uživatelský avatar
gilhad
Příspěvky: 249
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Expanduino_I

Příspěvek od gilhad »

Není to zrovna robot, ale aspoň je v tom Arduino ...

TL;DR: Expanduino je rozšiřující deska, která poskytuje 3 8-bitové obousměrné komunikační kanály + 1 8-bitový řídící a 8-bitový stavový pro snadné připojení dalších zařízení k SBC 6809 a 6502 (a podobným)

Obrázek


Stránky: http://8bit.gilhad.cz/6809/Expanduino/Expanduino_I.html
Poznámky, Plány a Errata
Galerie z finální fáze oživování

Pro počítače: OMEN Kilo a Bravo
MCU: Arduino Pro Micro (Atmega32U4)

Expanduino je rozšiřující deska, která poskytuje 3 8-bitové obousměrné komunikační kanály + 1 8-bitový řídící a 8-bitový stavový pro snadné připojení dalších zařízení k SBC 6809 a 6502 (a podobným).

Na rozdíl od například Z80, 8086 a tak podobně nemají 6809 ani 6502 žádné vstupně/výstupní porty a ke všemu přistupují stejně jako k paměti - prostě čtou a zapisují byty jako obvykle, a pokud se "náhodou" strefí na nějaké zajímavé místo, tak se začnou dít věci - například fungovat periferie :D

Aby taková periferie s nima fungovala, tak musí v plné rychlosti (třeba 2MHz) dekódovat adresu na adresové sběrnici, zjistit, zda je signál pro čtení nebo zápis a podle toho na datovou sběrnici vystavit data, nebo je z ní přečíst, než ten signál zmizne.
Některé periferie jsou na to přímo stavěné, jako třeba MC68B50 ACIA (sériová linka) a musí se jim pomoct jenom s dekódováním adresy, zatímco jiné na to stavěné nejsou vůbec a musí se jim nějak pomoct hodně a udělat to za ně všechno (RTC, I2C senzory, SPI zařízení, SD karty ...).

Na druhou stranu například takové Arduino má v sobě elektroniku pro I2C, SPI a tak přímo zabudovanou a je pro něj spousta modulů na připojení a knihovan na jejich ovládání, takže jako interface by bylo celkem šikovné. Akorát teda absolutně neustíhá zareagovat na na signály ze sběrnice a včas tam nachystat, nebo přečíst data.

Takže Expanduino mezi nimi tvoří most. Pro 6809 odchytává 9000h-9003h paměť v obou směrech a pro Arduino představuje 8 SPI registrů (4 pro čtení, 4 pro zápis) a navíc eviduje, kdo k danému zdroji přistoupil jako poslední a kdo je teda další na řadě, aby s ním něco dělal. A pokud se k němu oba chovají aspoň trochu slušně, tak si můžou běžet různými rychlostmi a pracovat různým způsobem sobě přirozeným a o nic se nestarat.

Teď už mám za sebou prví kolo návrhu, plošňák mi dorazil, osadil jsem většinu čipů a opravil pár chyb, které jsem v návrhu udělal a tak se s tím chci taky někde chlubit 8-)

Ty stránky :arrow: http://8bit.gilhad.cz/6809/Expanduino/Expanduino_I.html a :arrow: Poznámky, Plány a Errata průběžně upravuju a doplňuju, takže už začínají dávat smysl i někomu jinému, než jenom mě, a bude ještě líp ;)

Přez různé schválnosti osudu, jako vyhřívací chipy, spálené páječky, chybějící chipy, pozitivní a negativní logika a mnohé další efekty speciální jsem se nakonec přece jen někam dokopal :D

Tady je pár fotek z poslední fáze ladění a kutění :arrow: http://8bit.gilhad.cz//6809/Expanduino/ ... lerie.html - včetně několika přilehlých přípravků a mezivýrobků ;)

Teď už zbývají jen takové maličkosti, jako si napsat firmware na míru, aby to umělo RTC, práci se soubory a tak podobně, napsat si nějaký OS, nebo aspoň slušný monitor a už si budu moct začít hrát se svým retrocomputerem :ugeek: ... teda, až si na to napíšu nějaké ty hry ... :twisted:

(A taky chci dopsat dokumentaci a někam vystavit ty různé meziprogramy a testovadla, která jsem k tomu všemu vybudoval ... ale i ta nejdelší cesta začíná prvním krokem a ten jsem dnes dokončil )

Expanduino_I (klikací)
Obrázek

Galerie z finální fáze oživování (klikací)
Obrázek

Errata, Poznámky a Plány (klikací)
Obrázek



A taky o tom budu postupně psát víc a uvítám jak pochvaly, tak kritiku, tak nápady na vylepšení a další připomínky.
Uživatelský avatar
gilhad
Příspěvky: 249
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: Expanduino_I

Příspěvek od gilhad »

Tak mě frankenstein-chip potrolil, když si trhnul nohou (od napájení) a pak z něj padaly nesmysly. Ale přišel jsem mu na to a zatrhnul (přiletoval) mu to a už seká dobrotu.
A taky dorazily normální chipy, takže přišel o postavení jedináčka :)
A už jsem naučil 6809 si od Expanduina vyžádat přesný čas.
A změřil jsem rychlost, kterou dokážou cpát data do HW, bez testů, zda se smí a zda někdo poslouchá (Arduino R: 18.000 B/s W: 18.500 B/s; 6809: 96.900 B/s - ano, je to v bytech za sekundu) tedy s plným handshakem bude Expanduino_I asi 2x pomalejší, než ACIA - to není zlé, vzhledem k tomu, co všechno může zařizovat, ale komunikaci spíš tedy přez tu ACIA ... programy v sekci zdrojáky na Expanduinu (Teda ono tam je ještě dost dalšího systémového bordelu, jako vybírání kanálu, spousta digitalWrite a tak, takže kdybych to chtěl optimalizovat na kost, tak by to ještě asi šlo dost, ale to teď není priorita)
Uživatelský avatar
gilhad
Příspěvky: 249
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: Expanduino_I

Příspěvek od gilhad »

Výrazně jsem zjednodušil přidávání nových příkazů a je to fajn.
Taky jsem začal psát přístup k SD kartě, ale tam jsem narazil - examply mi chodí na breadboardu, po drobné úpravě kodu (ohledně přístupu k SPI) i v desce, ale už se tam nevejdou s ovládacím softwarem (zabráno víc než 100% flash = paměti pro program)
Teď už jsem ty examply nějak základně ořezal o spoustu zbytných věcí, stejně jako ten Expanduino systém a problém pořád trvá (Global variables use 1959 bytes (76%) of dynamic memory, leaving 601 bytes for local variables. Maximum is 2560 bytes.) a jakýkoli pokus o použití SD pak vede k tomu, že se zásobník potká s haldou a nějak se to vysype (často až po vypsání obsahu karty, nebo tak něco).
Tak jsem vyměknul a objednal Arduino nano Every, které má místo 32 kB flash celých 48 kB a místo 2.5 kB RAM rovnou 6 kB a tam už se to bude muset vejít bez řečí. Jen ještě budu muset udělat konverzní desku ála F-chip pro ty Arduina, mají jiný půdorys a počet nohou. (V Expanduino_II už bude upravený pro Every v základu)
(Přemýšlel jsem ještě o Blue Pill, kterých mám doma taky pár, ale 3V3 logika by s 5V nedělala dobrotu a konverze by byla složitá)
Odpovědět