Switch branches/tags
Nothing to show
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
..
Failed to load latest commit information.
.gitignore
Makefile.ascii
Makefile.binary
Makefile.linux
README.rst
bufroll.sh
ctrlascii.c
ctrlbinary.c
hw_avr.c
hw_init.h
hw_pcemu.c
lcd_emu.c
lcd_framebuf.c
lcd_framebuf.h
lcd_hw.c
lcd_hw.h
lcd_stream.c
lcd_stream.h
transmit.py
transmit_whole.py
usb_serial.c
usb_serial.h
usbstdio.c
usbstdio.h

README.rst

Ohjauskoodia teensylle, grafiikkaa usbin yli

Miniframeworkki/-kirjasto/whatever C:llä teensylle ohjaamaan väylää, sekä pc:n puolelle python-sotkua syöttämään sitä graffaa teensylle usbista.

LCD-frameworkista on kaksi versiota: yksi streamaa suoraan väylälle sitä mukaa kun tavuja tulee, ja toinen nykii graffat framebufferiin, joka työnnetään väylälle kokonaisena myöhemmin. Streamaus ei vaadi juurikaan ram-tilaa, framebuffer taas on 276 tavua (per neljän segmentin rivi). Framebufferia täytyy käyttää, jos graffaa piirretään täysin mikrokontrollerin puolella (tai ei ole pakko, mutta se helpottaa elämää).

Pääohjelmat mikrokontrollerille (ctrlascii.c ja ctrlbinary.c) lukevat stdin/stdoutiksi konffattua sarjaporttia (tässä teensyn hardiksella toimiva virtuaalisarjaportti usbin yli, pohjautuu PJRC:n esimerkkikoodiin (usb_serial.[ch]), sieltä myös avr-makefilet, kääntyy ainakin arduinon mukana tulevalla avr-gcc:llä kun pjrc sitä suosittelee) ja syöttävät luetut bitit sellaisenaan näytölle. Lähetetyt tavut kaiutetaan takaisin debuggaustarkoituksessa.

Kaksi eri versiota lukevat asciita ja binääriä, ensimmäinen syö suoraan samaa alkuperäisdumpeista grepattua asciibittidataa kuin muutkin työkalut (esim. printline_decoder.py) ja jälkimmäiselle syötetään bitit binäärimuodossa, eli se on ainakin teoriassa noin kahdeksan kertaa vikkelämpi.

Koodia voi käyttää avr:n lisäksi myös linuxilla emuloimaan väylää, tulosteet ovat samankaltaisia kuin 8085-emulaattorikaappauksissa. Niitä vertailemalla voi verifioida koodin oikeellisuuden.

PC-puolen ohjauskoodit ovat pythonia (transmit.py asciiversiolle, transmit_whole.py binääriversiolle) ja niille syötetään bitit taas samassa muodossa.

Yläpuoliskon tekstit varastoidaan framebufferissakin vielä toistaiseksi suoraan lcd-järjestyksessä, eli lopusta alkuun; tälle kannattanee tehdä myöhemmin jotain, että olisi helpompi ohjata pikseleitä käsin. Nyt tuolle on vain helppoa antaa alkuperäistekstiä.