Expanduino_I

Pochlubte se svým robotem ostatním!
Odpovědět
Uživatelský avatar
gilhad
Příspěvky: 264
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: 264
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: 264
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á)
Uživatelský avatar
gilhad
Příspěvky: 264
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: Expanduino_I

Příspěvek od gilhad »

  • Rozchodil jsem EEPROMwriter pro Mega Shield 01 a okopíroval si OMEN Kilo 8kB EEPROM na novou 32kB (a ta stará chcípla). Takže můžu přepínat Bank 0 a 1.
  • Rozchodil jsem EEPROMcopy pro OMEN Kilo, takže můžu kopírovat z jedné banky do druhé. (a až to vylepším o zadávání čísel tam a zpět, tak budu moct vypalovat i cokoli z RAM)
  • Rozchodil jsem Emulator6809 a můžu si emulovat KiloExp.EEPROM :) RESET mi funguje :)
  • Mám nový boot do EEPROM, sice ještě nic moc nedělá, ale píše písmenka :)
  • Expanduino_I v.00.00.01 (Nano Every/Micro Pro) zdetekuje Expanduino_I a vypíše jeho verzi. Main loop umí reboot, komentář a help :) 1164 B celkem z toho asi 300 B textů
Uživatelský avatar
gilhad
Příspěvky: 264
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: Expanduino_I

Příspěvek od gilhad »

Tak už mi to chodí - teda aspoň Castor (systémový EEPROM pro 6309) je ve stavu, kdy se dá nazvat plně funkčním alespoň na nejzákladnější úrovni

Například se dá do něj nabootovat, relokovat ho do RAM a tam z něj do ROM vypálit update.
(A to i přez to, že ta EEPROM zlobí a zápisy do ní nejsou spolehlivé, takže je nutno je opakovat, dokud se neuchytí správně. A aby se moc neošoupala, tak se vypaluje jen to, co je jinak (po bytech))

Z expanduina (pokud ho najde) si stáhne a spustí soubor /BOOT.HEX
Až to Expanduino bude umět, tak podobně bude moct spustit cokoli.
Umí to číst RTC a taky nastavit čas.
Umí načíst a spustit IHEX ze vstupu, nebo expanduina.
Umí vypisovat paměť, zavolat kód z libovolné adresy, porovnat dva bloky paměti, smazat RAM (přepsat daným bytem)

Start:

Kód: Vybrat vše

--==### CASTOR ###==--
v.0.1.0-r3 / master
07.12.2023 01:44:51
Address range: C000 - D8D8 (Total 18D8 ROM)
+++0000+
## Expanduino_I v.00.00.03 (Nano Every)
# Expanduino detected
 (Channel set to 1 )
Boot
*BOOT
Main Loop
> ### Expanduino_I v.00.00.03 (Nano Every)

> :20 2200 ################################ ;)
> :20 2220 #####=########################## ;)
> :20 2240 ################################ ;)
> :20 2260 #######=######################## ;)
> :20 2280 ################################ ;)
> :20 22A0 ################################ ;)
> :20 22C0 ################################ ;)
> :1A 22E0 ########################## ;)
> :00 2200  ;)

písmenko A přepíná AutoExec

Kód: Vybrat vše

> a Autoexec is now allowed

> exec pending:

Hello World!

Welcome back in Loop
>


Help obsahuje nápovědu takřka ke všemu (a ještě dumpne registry a spol)

Kód: Vybrat vše

> ?
Regs: A: 3F; B: 00; CC: 59=eFhINzvC; DP: 00; X: CAF2; Y: C19F; S: 7FAC; U: 7FAC; W: 1000; V: 8C9E;
 PC[CAF5]: 27 05 17 F8 E0 20 EB 17 F8 C1 39 17 FB 0C ^ 17 F5 BA 30 8D 08 4C 17 F8 BD 30 8D 0A 99 17 F8;
 St[7FAC]: C1 9F C0 00 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00 01 00 22 00 01 90 00 04 90 01 03 00 03 90 00 08 90;

--==### CASTOR ###==--
v.0.1.0-r3 / master
07.12.2023 01:44:51
Address range: C000 - D8D8 (Total 18D8 ROM)
 Help:
Q, q - quit Castor (Reboot computer)
R, r - return to calling program
C, c - call address
> - Relocate to new RAM place
D, d - dump memory
: - IHEX (type 0 & 3 ( & 1))
# - the rest of line is Comment (and so ignored)
* - the rest of line is StarCommand for Expanduino
^ - send 1 byte ControlCommand to Expanduino
| - SetAltChannel for communication with Expanduino
A,a - SwapAutoexec for IHEX etc.
F, f - SwapFastIHEX - fast=only RAM
` - Test (do not use)
~ - Diff memory to memory
K - KillROM (do not use)
Z, z - Zero - clear RAM to 00 (or any value)
?, H, h - this help
SYSTEM_Autoexec_allowed:  Yes 
SYSTEM_FastIHEX_allowed:  No 
LOOP.exec.pending:  No 
LOOP.exec.addr: 2200
Expanduino detected:  Yes 
> 

Obrácený apostrof zavolá SWI, SWI2 a SWI3 (SW interrupty) jako test a ty skutečně projdou kudy mají

Kód: Vybrat vše

> ` TEST

Regs: A: 60; B: 00; CC: D1=EFhInzvC; DP: 00; X: D2D8; Y: C19F; S: 7F9E; U: 7FAC; W: 1000; V: 8C9E;
 PC[C04B]: 00 1D 12 20 1E 12 12 17 05 BA 3B 17 05 B6 ^ 3B 17 05 B2 3B 17 05 AE 3B 17 05 AA 3B 17 05 A6;
 St[7F9E]: D1 60 00 10 00 00 D2 D8 C1 9F 7F AC CC 0C C1 9F C0 00 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00 01 00 22;

Regs: A: 60; B: 00; CC: D1=EFhInzvC; DP: 00; X: D2D8; Y: C19F; S: 7F9E; U: 7FAC; W: 1000; V: 8C9E;
 PC[C057]: 05 B6 3B 17 05 B2 3B 17 05 AE 3B 17 05 AA ^ 3B 17 05 A6 3B 17 05 A2 3B 10 CE 7F B0 30 8C 99;
 St[7F9E]: D1 60 00 10 00 00 D2 D8 C1 9F 7F AC CC 0E C1 9F C0 00 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00 01 00 22;

Regs: A: 60; B: 00; CC: D1=EFhInzvC; DP: 00; X: D2D8; Y: C19F; S: 7F9E; U: 7FAC; W: 1000; V: 8C9E;
 PC[C05B]: 05 B2 3B 17 05 AE 3B 17 05 AA 3B 17 05 A6 ^ 3B 17 05 A2 3B 10 CE 7F B0 30 8C 99 34 10 86 00;
 St[7F9E]: D1 60 00 10 00 00 D2 D8 C1 9F 7F AC CC 11 C1 9F C0 00 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 00 01 00 22;

> 

Taky má vlastní stránku http://8bit.gilhad.cz//6809/Castor.html, která časem rozkošatí :D
Uživatelský avatar
gilhad
Příspěvky: 264
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: Expanduino_I

Příspěvek od gilhad »

Chystám se udělat trochu větší projekt, zahrnující i nějaká ta Arduina (http://comp24.gilhad.cz/Comp24-specification.html) , ale je toho moc naráz, tak zatím postupuju menšími kroky


Obrázek


Podařilo se mi rozchodit 6309 počítač na breadboardu, zatím jen ve verzi OMEN kilo (ale se samotnýma hodinama pro ACIA 1.843MHz a samotnýma 3.686MHz pro CPU (krystal 14.7456MHz))



CPU běží na 3.686MHz (na breadboardu mi 4MHz už neběžely stabilně, vždycky se to po chvilce nějak seklo, na PCB to možná bude lepší, bez té spousty drátů). Oproti poloviční frekvenci OMEN kila to už zvládne přerušení a práci s buffery i při plné rychlosti přenosu (115.200 bps). Dva chipy dole jsou VIA a PIA a teprve čekají na svou šanci, až je zapojím.


Kapesní osciloskop Xscope není součástí celé konstrukce, ale jen zbytek po debugování. (Nekmital mi krystal pro sériový port ACIA, několik drátků bylo o dírku vedle, nebo nedostatečně doražených/uvolněných během stavby a testování a tak. Klasika.)


USB-Serial převodník bude PL2303, budu z něj muset ještě nějak vytáhnout řízení toku dat. Z ACIA by to chtělo vytáhnout teda taky, což sice nepůjde, ale půjde to ošetřit jinak, až zprovozním další hardware.


Nahrál jsem novou verzi firmware, zatím jen do RAM, schválně, co to udělá :)

Běží to, kontrolní součty sedí, tahle etapa se podařila dotáhnout do cíle :)

Screenshot nahrané vyšší verze Castora (aneb, když to dokáže načíst 6.5kB program přez IHEX, tedy i s kontrolními součty, tak to asi jede dost spolehlivě pro další pokusy)

Obrázek

Píšu si o tom, s více obrázky, například tady: http://mix.gilhad.cz/Blog/Blog.html#breadboard-base
Odpovědět