
Witam.
Od razu przepraszam za jakość płytki drukowanej, dopiero uczę się je robić.
Moją nową "zabawką" jest urządzenie, zwane "PseudoComputerem".
Pomysł
Wpadłem na pomysł urządzenia, które będzie posiadało coś na kształt interpretera. Wczytuje ono komendę w postaci kodu, następnie argumenty do niej i wykonuje zadanie. Szukałem znanych standardów kodów maszynowych, ale w końcu stworzyłem własny.
Budowa i działanie
Budowa płyty głównej jest nietypowa - nie ma tu pamięci RAM. Jest tylko pamięć EEPROM 24C256. Procesor (ATMega32) w trakcie działania programu wczytuje program bezpośrednio z EEPROM. Fakt, rozwiązanie jest wolne (przekaz przez I2C), ale po pierwsze nie miałem kostek, a po drugie, wymagałoby to większej ilości portów do stworzenia szyny adresowania. Mogłem jednak użyć RAMu dynamicznego - przyznaję.



Po uruchomieniu urządzenia włącza się tryb Writing by RS232. Programowanie odbywa się poprzez wpisywanie po kolei bajtów programu. Aby wybrać adres pamięci wpisujemy 255 a potem pierwszy bajt i drugi. Dalej piszemy "bajt po bajcie". Pozwala to na szybkie programowanie. Programować można za pomocą komputera (tu trwają pracę nad programem) lub za pomocą zadajnika RS232, ale o tym zaraz.
Pamięć EEPROM ma dwubajtową (jak już pisałem) deklarację adresu. Pierwszy bajt (0-127) definiuję "grupę" (jak ja to nazywam), a drugi (0-255) poszczególny adres. Grupa 0 jest zarezerwowana (tam mają być ustawienia ale póki co nie ma nic), a grupy 1-127 są dla programów. Możemy wpisywać wiele programów, a potem wybrać grupę, z którego chcemy uruchomić program. Każdy program musi zaczynać się komendą 1 i zaczynać się w 1 adresie swojej grupy. Przykładowo nie możemy zacząć programu w adresie 127/10, ale w 121/1 już tak. Programy mogą zajmować więcej niż 1 grupę i w wypadku przepełnienia dalszą część piszemy w następnej grupie.
Jest też tryb Reading from IIC. Pozwala on "na sucho" sprawdzić bajty wpisane w pamięci i ewentualnie znaleźć błędy.
Aby uruchomić program, wciskamy przycisk RUN (górny na płytce). Pojawia się prośba o wybranie adresu programu. Jeżeli program zaczyna się w adresie 5/1, wybieramy 5 za pomocą przycisku SET (dolnego). Wciskamy RUN i program się uruchamia.
Program kończy komenda 0. Wyświetla się wtedy informacja End of program i wracamy z powrotem do trybu pisania programu.



Interpreter i kod maszynowy.
Interpreter powstał w BASCOMIe. Wsad (razem z menu i wszystkimi funkcjami) zajmuje 16% pamięci, co oznacza, że możemy użyć ATMegi16. Program wymaga dopracowania, więc go nie publikuję. Wczytuje on dane bezpośrednio z kostki EEPROM. w pamięci SRAM układu znajdują się bufor zmiennych używanych przez program (32 zmienne 8-bitowe)
Kod maszynowy (jeśli tak można to nazwać) został opracowany przeze mnie. Działa on "najprościej, jak się da". Możemy tworzyć zmienne i na nich działać, pętlować program (przeskakiwać do danego adresu) i wykonywać operacje warunkowe. Możemy wyświetlać dane na wyświetlaczu LCD i korzystać z RS232. Pracuję też nad umożliwienie pracy z wejściami i wyjściami (by uzewnętrznić możliwości).
Póki co, nie miałem kłopotów z pracą interpretera. Sam interpreter ruszył praktycznie "z kopyta"
Zadajnik RS232
Powstał na potrzeby PseudoComputera i umożliwia wprowadzanie komend. Zasada jest prosta: wprowadzamy cyfry (w systemie dziesiętnym) i wciskamy gwiazdkę by wysłać bajt. Siedzi tu procesor ATTiny2313. Podstawka została przylutowana bezpośrednio do pinów klawiatury. 2 diody (WRITE i ERROR - łatwo się domyśleć, która jest która) pokazują: zaczęto wprowadzać cyfrę i przepełnienie bajtu.


A oto film:
Zapraszam do krytyki.
Cool? Ranking DIY