TI58 tiny - replika kalkulátoru TI-58 s ATmega8

Zkusil jsem vytvořit obdobu starších kalkulátorů - konkrétně repliku kalkulátoru TI-58C - s novodobějším procesorem, ATmega8. Podle odhadu by mohl mít přiměřenou velikost pamětí pro daný účel. Bohužel jsem se dostal jen na 90% práce na firmware, narazil jsem na zaplnění paměti ROM a nedokázal tam vměstnat celý potřebný kód. Převést kód na větší procesor jsem nechtěl, protože kód v assembleru se už stával nepřehledný, a tak budu dál pokračovat raději v C s větším procesorem, v nové koncepci.

Kalkulátor je použitelný jen jako kalkulátor, není funkční programování. Přesto ale má replika zajímavé vlastnosti, jako běžný kalkulátor - počítá s přesností 19 platných číslic, exponent 4 číslice, 60 paměťových buněk. Proto zde uvádím popis kalkulátoru, mohl by být někomu užitečný. Např. využít float knihovny v assembleru AVR.

Upozorňuji že konstrukci jsem odbyl jen jako nejnutnější, abych si vyzkoušel tvorbu firmware, tj. napájení je z USB, tlačítka bez hmatníků, nevhodná krabička a potisky “upatlané”. Řešil jsem jen software, ne hardware.

breatharian.eu/hw/ti58/index.html

breatharian.eu/hw/ti58/img/TI58_0_m2.jpg

Odhadom, súvislým prechodom na Atmega168 alebo 328, by mali byť všetky vlastnosti programovania v ASM zachované.
Pinovo sú plne kompatibilné.

Ano, zřejmě tento projekt k tomu dospěje, že by mohl být dokončený s ATmega168. Jen už to nebude tak vtipné jako nacpat to do ATmega8. :slight_smile:

Teď pomalu dokončuji variantu TI-59 s ATmega644p, ale v C. Kód je 4x větší a stejně tak pomalejší (výsledná rychlost srovnatelná s originálním TI), ale alespoň je dokončení reálnější. Možná pak poslouží jako vzor k dokončení rychlejší a úspornější ASM varianty.

Ono obcas treba rozmyslat pri programovani v Cku. Aby preklad bol pouzitelnejsi. Sice to obcas nejde, alebo kod v c vyzera všelijako. Na druhej strane pre vypoctoch co su na kalkulacke, sa to velm8 vylepsit nebude dat.
Zase 4x vecsi kod sa mi zda dost.
V c9m to robis?

Ve WinAvr. Ten rozdíl mezi C a ASM verzí je především v metodě. ASM verze je dost optimalizovaná podle vzoru kódu ZX Spectrum (makro kód, důsledné používání všech registrů). Ale C verze je psaná obecně - nejen aby byla nezávislá na procesoru, ale aby float knihovna měla konfigurovatelnou přesnost (arbitrary, navíc kompatibilní s IEEE formátem, který není sw implementaci moc nakloněný) - kvůli tomu, protože je to příprava pro následující verzi kalkulačky s ARM procesorem a podstatně vyšší přesností. Takže ten poměr 4x větší i pomalejší je asi tak přiměřený.

Akú optimalizáciu používaš?
Používaš -oS alebo -o3?

U ATmega používám nejčastěji -Os, optimalizace na velikost, bývá spíš problém s pamětí než s rychlostí. Ale stejně to nezmáčkne až tak moc jak by mohl, např. vkládá funke jako inline, musí se mu i tak ještě dost domlouvat.

Update: Dokončil jsem další mezi-prototyp kalkulátoru, rozšířená replika TI-59. Tentokrát už plně funkční, jen neodladěný, protože je to testovací meziverze (proto opět ošklivá kontrukce), ladit budu až poslední nejvyšší verzi. Mohou se proto objevit nefunkčnosti. Tahle verze by měla zajišťovat všechny funkce původní TI-59 plus nějaká nová rozšíření. Používá procesor ATmega644P naprogramovaný v C kódu. K dispozici je i emulátor pro Windows.

Parametry: přesnost 19 číslic, exponent 4 číslice, paměť 1000 programových kroků a 100 registrů, interní záložní paměť EEPROM, načítání programových modulů z SD karty, ukládání programů na SD kartu, tisk do souboru na SD kartu.

breatharian.eu/hw/ti59/index.html

breatharian.eu/hw/ti59/img/TI59_1_m2.jpg

breatharian.eu/hw/ti59/img/TI59_emul.jpg

Veľmi pekné :slight_smile:

Si bretarian (podľa uvedenej stránky)? By som sa nedivil. Veď odkiaľ by si zobral toľko času na takéto veci :slight_smile:

Bohužel ne. :slight_smile: To byl jen původní sen a plán, ale časem jsem pochopil jak to funguje a proč to funguje jen někomu a proč to vlastně není vůbec důležité.

Challenge splněn - úspěšně vytvořen klon kalkulátoru TI-57 s rozšířenými funkcemi a “natlačen” do 8 KB ROM procesoru ATmega8. :slight_smile: Obzvláště vhodný jako výukové programovadlo do škol, protože umožňuje ovládání externích periferií a je zcela open source. A i pořizovací náklady jsou příjemné (400 Kč).

http://www.breatharian.eu/hw/et57/index.html

ET57_0
Výčet vlastností:

  • Procesor ATmega8 (8MHz, 8KB ROM, 1KB RAM, 512B EEPROM)
  • Napájecí napětí 5 V (z USB nabíječky nebo z USB portu)
  • Výpočty v BCD kódu
  • Přesnost výpočtů 17 číslic
  • Přesnost základních registrů 15 číslic
  • Přesnost rozšířených registrů 13 číslic
  • Zobrazení údaje na 11 platných číslic
  • Exponent 2 číslice, rozsah ± 99
  • 10 programových prostorů
  • Každý prostor 50 programových kroků (celkem 500 kroků)
  • Uživatelský program uchován v EEPROM (bez baterie)
  • 10 základních registrů (přístupných přímým adresováním)
  • 70 rozšířených registrů (přístupných indexovým adresováním)
  • Dvouřádkový LCD displej (2 x 16 alfanumerických znaků)
  • 40 tlačítek
  • Ovládání externího zařízení přes ISP konektor
  • Kód kalkulátoru kompletně napsaný v AVR assembleru
  • Exponenciální a logaritmické funkce
  • Trigonometrické funkce
  • Faktoriál
  • Generátor náhodných čísel
  • Indexový přístup k proměnným
  • Vědecký mód zobrazení s exponentem
  • Statistická funkce
  • 10 návěští v každém programovém prostoru
  • Volání funkcí a skoky mezi programovými prostory
  • Hardware i software plně open source
1 Like

Doplňuji nové info: Vytvořil jsem mini klon kalkulačky TI-57, programovatelná mini-kalkulačka ET-57M. Určená např. jako náramková kalkulačka na ruku. :slight_smile: Má 6-místný LED displej, napájení z baterky CR2032, 12 ovládacích tlačítek a procesor ATmega8. Softwarově má plné vybavení jako kalkulačka ET-57.

et57m_2

Link na www stránku: http://www.breatharian.eu/hw/et57m/index.html
Manuál PDF: http://www.breatharian.eu/hw/et57m/dwn/ET57M_User_Manual_CZ.pdf

Vlastnosti:

  • Procesor ATmega8 (4MHz, 8KB ROM, 1KB RAM, 512B EEPROM)
  • Napájení z baterie CR2032, akumulátoru LiR2032 nebo z USB
  • Externí napájení a dobíjení akumulátoru z USB konektoru
  • Rozměr pouhých 43 x 43 mm
  • Výpočty v BCD kódu
  • Přesnost výpočtů 11 číslic
  • Zobrazení údaje na max. 6 platných číslic
  • Exponent 2 číslice, rozsah ± 99
  • 10 programových prostorů
  • Každý prostor 50 programových kroků (celkem 500 kroků)
  • Uživatelský program uchován v EEPROM (bez baterie)
  • 10 základních registrů (přístupných přímým adresováním)
  • 90 rozšířených registrů (přístupných indexovým adresováním)
  • 6-místný LED displej
  • 12 tlačítek
  • Kód kalkulátoru kompletně napsaný v AVR assembleru
  • Exponenciální a logaritmické funkce
  • Trigonometrické funkce
  • Faktoriál
  • Generátor náhodných čísel
  • Indexový přístup k proměnným
  • Vědecký mód zobrazení s exponentem
  • Statistická funkce
  • 10 návěští v každém programovém prostoru
  • Volání funkcí a skoky mezi programovými prostory
  • Hardware i software plně open source!

et57m_1m2

Co tak nejaky oled 128x32 bodov? Lepsia citelnost mozno mensia spotreba alebo nejaky epaper

I jsem o oled uvažoval a i nějaké koupil :slight_smile: , ale zatím se k tomu nedostal a asi už přenechám další hraní jiným. Tady byl důvod pro LED aby se to trochu blížilo původní kalkulačce retro stylem (i když samozřejmě na oled by se asi dal vykouzlit lepší retro vzhled).