Klon slavného Tetrisu, napsaný v assembleru. Zcela se vejde do 512 bajtů spouštěcího sektoru (potřebuje pouze 446 bajtů prostoru, což je jen maximální velikost bootloader v MBR).

MBR - sekce obsahující kód a data nezbytná pro následné spuštění operačního systému a umístěná v prvních fyzických sektorech. Prvních 446 bajtů disku je přiděleno kódu bootloaderu. Právě na tomto místě je zaznamenán TetrOS.

Přirozeně je díky těmto vlastnostem zatížen dříve než jakýkoli operační systém- nevyžaduje žádný OS, funguje sám. Ano, slyšeli jste dobře, TetrOS je vlastní bootloader.

Na obrazovce to vypadá takto:

A zdroj v boot sektoru vypadá takto:

A ano je celý zdroj. Pamatujete si, že váží pouhých 446 bajtů?

Tento "zázračný operační systém" je možné provozovat pod qemu nebo jej dokonce instalovat doopravdy spouštěcí oddíl disk nebo flash disk.

zahájení

Stačí nainstalovat qemu:

sudo apt-get install qemu

a spustit:

Stáhnout na flash disk

Zkopírujte obrázek na flash disk. Řekněme, že pokud je flash disk připojen jako /dev/sde , musíte pro zápis na něj spustit následující příkaz boot sektor TetrOS:

sudo dd if=tetros.img of=/dev/sde

Popis hry

Ne ten nejnudnější design se vývojáři podařilo nacpat do pouhých 512 bytů paměti. Každá cihla ve hře má svou barvu, ovládání se provádí tlačítky, v případě porážky hra končí, cihly se generují náhodně... BolgenOS nebyl ani zdaleka!

Bohužel kvůli velikosti se muselo od některých funkcí upustit. Ve hře není žádné bodování, restartování hry bez opětovného načtení a zobrazení toho, jaká bude další kostka.

ÚVOD Mikrokontroléry, jejich výskyt a použití
Historie mikrokontrolérů
Elektronika v řeckém stylu
Proč AVR?
Co bude dál?

ČÁST I. OBECNÉ ZÁSADY NÁVRHU A FUNGOVÁNÍ ATMEL AVR

Kapitola 1 Přehled mikrokontrolérů Atmel AVR

rodiny AVR
Vlastnosti praktického použití MK AVR

Kapitola 2. Obecné uspořádání, organizace paměti, taktování, reset

Paměť programu
Datová paměť (RAM, SRAM)
Energeticky nezávislá datová paměť (EEPROM)
Metody taktování
Resetovat
Funkce připojení další externí datové paměti

Kapitola 3. Úvod do periferních zařízení

I/O porty
Časovače-počítadla
Analogově digitální převodník
Sériové porty
UART
SPI rozhraní
Rozhraní TWI (12C)
Univerzální sériové rozhraní USI

Kapitola 4 Přerušení a úsporné režimy

Přerušuje
Typy přerušení
Úsporné režimy
Spotřeba MK AVR
Režimy spotřeby a úspory energie MK AYR

ČÁST II. PROGRAMOVÁNÍ MIKROKONTROLÉRŮ ATMEL AVR

Kapitola 5. Obecné principy programování MK rodiny AVR

Assembler nebo C?
Způsoby a prostředky programování AVR
Editor kódu
O AVR Studiu
Uspořádání assembleru
programátory
O hex souborech
Příkazy, instrukce a zápis sestavy AVR
Čísla a výrazy
Direktivy a funkce
Obecná struktura programu AVR
Manipulace s přerušením
RESETOVAT
Nejjednodušší program
Zpoždění
Pultový program
Použití přerušení
Zpoždění časovače
Program počítadla přerušení
O konfiguračních bitech

Kapitola 6 Příkazový systém AVR

Ovládací příkazy přenosu a registr SREG
Příkazy check-pass
Logické příkazy
Shift instrukce a bitové operace
Příkazy pro aritmetické operace
Příkazy pro přenos dat
Příkazy ovládání systému
Provádění typických procedur v assembleru
O zásobníku, lokálních a globálních proměnných

Kapitola 7 Aritmetické operace

Standardní aritmetické operace
Násobení víceciferných čísel
Vícemístné dělení
Operace s desetinnými čísly
Generátor náhodných čísel
Operace s čísly ve formátu BCD
Záporná čísla v MK

Kapitola 8 Programování časovačů

8 a 16 bitové časovače
Tvorba žádané hodnoty frekvence
Odpočítávání
Přesná korekce času
Měřič frekvence a měřič periody
Měřič frekvence
Periodometr
Dynamické řízení indikace
LED indikátory a jejich zapojení
Programování dynamická indikace
Časovače v režimu PWM

Kapitola 9 Používání paměti EEPROM

Ještě jednou o bezpečnosti dat v EEPROM
Zápis a čtení EEPROM
Ukládání konstant do EEPROM

Kapitola 10 Analogový komparátor a ADC

Analogově-digitální operace a jejich chyby
Práce s analogovým komparátorem
Integrace ADC na komparátoru
Princip činnosti a výpočetní vzorce
Integrace programu ADC
Vestavěný ADC
Příklad ADC
Program

Kapitola 11 Programování SPI

Základní operace přes SPI
Možnost hardwaru
Možnost softwaru
O odrůdách energeticky nezávislé paměti
Zápis a čtení flash paměti přes SPI
Program výměny paměti 45DB011B přes SPI
Psaní a čtení flash karet
Připojení MMS karet
Vydávání příkazů a inicializace MMC
Psaní a čtení MMS

Kapitola 12. Rozhraní TWI (12C) a jeho praktické použití

Základní protokol 12C
Softwarová emulace protokolu 12C
Zápis dat do externí energeticky nezávislé paměti
Výměnné režimy s pamětí AT24
Program
Hodiny s rozhraním 12C
Záznam dat
Čtení dat

Kapitola 13 Programování UART/USART

Inicializace UART
Odesílání a příjem dat
Příklad nastavení hodin DS1307 pomocí UART
Techniky ochrany před výpadky komunikace
Rovnoměrná parita
Jak zorganizovat správnou výměnu
Další funkce USART
Implementace rozhraní RS-232 a RS-485
Převodníky úrovní pro RS-232
RS-485

Kapitola 14 Režimy úspory energie a časovač Watchdog

Programování úspory energie
Příklad přístroje na baterie
Upřesnění programu
Použití hlídacího časovače

APLIKACE

Příloha 1. Hlavní parametry mikrokontrolérů Atmel AVR

Dodatek 2 Příkazy Atmel AVR
Aritmetické a logické instrukce
Příkazy pro bitové operace
Porovnávací příkazy
Ovládací příkazy přenosu
Pokyny pro bezpodmínečné skoky a volání podprogramů
Přeskočte pokyny pro kontrolu a podmíněné větve
Příkazy pro přenos dat
Příkazy ovládání systému

Dodatek 3 Programové texty
45DB011B demo program komunikace s flash pamětí přes rozhraní SPI
Procedury výměny na rozhraní 12C

Dodatek 4 Komunikace s osobní počítač a ladění programů přes UART
Práce s COM portem v Delphi
COM port a Windows API
Práce s COM přes hotové komponenty
Instalace linky RTS v DOS a Windows
Program COM2000
Ladění programů pomocí terminálového programu

Dodatek 5 Slovník běžných zkratek a termínů
Korespondence termínů v ruštině s jejich překladem do angličtiny
Korespondence termínů v angličtině s jejich překladem do ruštiny

Literatura
Předmětový rejstřík

Nějak jsem na netu viděl zajímavé video, ukazovalo hru hada implementovanou na mikrokontroléru a matici 8x8 LED, pak jsem našel ještě pár podobných videí, která mě zaujala. Mezi nimi bylo také video, kde byla hra Tetris sestavena na „výkonném“ mikrokontroléru. Po zhlédnutí jsem se rozhodl vyvinout vlastní verzi zařízení, ve které jsou obě hry kombinovány, pomocí mikrokontroléru PIC16F688 a dvou LED matic, které zobrazují herní pole v rozlišení 8x16 pixelů.

Schéma zařízení je uvedeno níže. Výstup informací na matici H1, H2 v dynamickém režimu se provádí pomocí posuvných registrů DD2, DD3, DD4. Výstupy mikroobvodů DD2, DD3 jsou připojeny k anodám matric. Katody obou matric jsou připojeny ke kolektorům tranzistorů VT1-VT8, pro které jsou řídicí signály generovány čipem DD4. Mikrokontrolér načte data do registru DD4, při jeho přetečení se informace z 9. výstupu přenesou na vstup registru DD3, poté se stejným způsobem data přenesou do registru DD2. Rezistory R1-R16 omezují proud procházející maticovými LED. Rezistory R17-R23 nastavují základní proud tranzistorů VT1-VT8. Mikrokontrolér pracuje na frekvenci 8 MHz z interního oscilátoru. Obnovovací frekvence obrazu je 100 Hz.


Po připojení napájení se na hracím poli zobrazí spořič obrazovky hry „Snake“. V horní části pole je zobrazena číslice 1, ve spodní části je obrázek fragmentu hry. Stisknutím tlačítka SB5 „Start / Pause“ přejdete do herního menu, v jehož horní části je zobrazena úroveň hry ve formě čísel od 1 do 9. Úroveň hry se nastavuje pomocí tlačítka SB1 „Up“ Při každém stisknutí se číslo úrovně postupně zvyšuje o jednotku. Po čísle 9 se opět zobrazí číslo 1. Od zavedená úroveň Hra závisí na počáteční délce hada, takže pro 1. úroveň je délka 3 body, pro 9. 11 bodů. V dolní části nabídky se zobrazí informace o rychlosti hada. Číslo 1 odpovídá minimální rychlosti a číslo 9 odpovídá maximální. Hodnota rychlosti se nastavuje tlačítkem SB4 „Dolů“, podobně jako při nastavení úrovně hry. Záře LED diod po obvodu hřiště v menu znamená, že je zvolen herní režim s přítomností hranic po obvodu hřiště. V tomto režimu, když had opustí hrací pole, dojde ke ztrátě. Pokud jsou v nabídce LED diody po obvodu pole zhasnuté, pak je zvolen režim bez okrajů. V tomto případě se při opuštění hracího pole objeví hlava hada na opačné straně hřiště. Tlačítka SB2 „Right“ a SB3 „Left“ nastavují požadovaný herní režim. Při prvním vstupu do menu hry se nastaví hodnota délky a rychlosti na jedničku, zvolí se režim s přítomností hranic.

Po stisknutí tlačítka „Start / Pauza“ z menu hry se na hracím poli zobrazí had na základní pozici a náhodný volný bod. Stisknutí kteréhokoli z tlačítek „Nahoru“, „Vlevo“, „Vpravo“ způsobí pohyb hada v odpovídajícím směru. Po zahájení pohybu je k dispozici také tlačítko „Dolů“ pro ovládání hada. Při dopadu na světelný bod se délka hada prodlužuje. Po nasbírání 14 bodů hráč postoupí do další úrovně hry. Po 9. úrovni následuje přechod do první úrovně. Pokud had zasáhne vlastní tělo nebo opustí hrací pole v režimu ohraničení, dojde ke ztrátě. Po 3 prohrách se vrátíte do menu hry, kde je uvedena aktuální úroveň hry a rychlost. Poté, co se had začne pohybovat, stisknutím tlačítek „Start / Pauza“ můžete hru pozastavit a obnovit.

Chcete-li opustit herní menu, podržte tlačítko „Start / Pauza“ po dobu 1 sekundy, poté se na hracím poli objeví úvodní obrazovka hry. Přepínání mezi hrami se provádí stisknutím kteréhokoli z tlačítek „Nahoru“, „Dolů“, „Doleva“, „Doprava“. Současně se zobrazí úvodní obrazovka příslušné hry.

V horní části úvodní obrazovky Tetris je zobrazeno číslo 2, ve spodní části je obrázek fragmentu hry. Přechod do menu hry se provádí stisknutím tlačítka „Start/Pauza“. V horní části nabídky se zobrazuje počet bodů, které hráč získal. Za každého se přidělují body smazaný řádek. Počítadlo skóre počítá do 99, pak se vynuluje a skóre začíná znovu. Na začátku každého nová hra, počítadlo se také vynuluje. Ve spodní části menu jsou zobrazeny informace o rychlosti pohybu figurek, která se nastavuje pomocí tlačítek „Nahoru“ a „Dolů“. Po stisku tlačítka „Start / Pause“ z nabídky se hra spustí, v horní části pole se objeví náhodné figurky, které lze posouvat tlačítky „Vlevo“ a „Vpravo“ příslušným směrem. Tlačítko Nahoru otočí obrazec o 90 stupňů ve směru hodinových ručiček při každém jeho stisknutí. Podržením tlačítka „Dolů“ můžete zrychlit pohyb figurky. Tlačítko „Start/Pauza“ vám umožňuje pozastavit a obnovit hru. Hra končí ve chvíli, kdy se na hrací pole nevejde nová figurka, poté následuje přechod do menu, kde si můžete prohlédnout počet bodů, které hráč získal. Výstup z menu se provádí stejným způsobem jako ve hře „Snake“.

Pokud do 4 minut nestisknete žádné z tlačítek, zařízení přejde do režimu nízké spotřeby, mikrokontrolér vypne matice LED a přejde do režimu spánku. Zařízení se „probudí“ po stisknutí tlačítka „Start“ a vrátí se do předchozího stavu.

Zařízení používá rezistory - velikost 1206 pro povrchovou montáž. Kondenzátory C2, C3 - keramická velikost 1206. LED matice H1, H2 - TOM-1088BG-B zelená záře s průměrem 3mm LED a rozlišením 8x8 pixelů. Tlačítka jsou standardní hodiny.

Zdrojem energie je stabilizovaný zdroj o napětí 3,7-5V, lze použít i galvanické články nebo baterie, např. 3 1,5V AA nebo AAA baterie zapojené do série, já používám 3 AA baterie. Zařízení zůstává v provozu, když napájecí napětí klesne na 3,3 V, zatímco jas matic LED klesá.

Název: Praktické programování mikrokontrolérů Atmel AVR v assembleru 2 edition

Vydavatel:"BHV-Petersburg"

Rok vydání: 2011

Stránky: 354

Jazyk: ruština

Formát: DjVu

Velikost: 12,2 MB

Principy činnosti, vlastnosti architektury a programovací techniky mikrokontrolérů Atmel AVR jsou superponovány.

Jsou uvedeny hotové recepty na programování hlavních funkcí moderních mikroelektronických zařízení: od reakce na stisknutí tlačítka nebo vybudování dynamické indikace až po složité protokoly pro záznam dat v externí paměť nebo funkce připojení hodin reálného času. Zvláštní pozornost je věnována výměně dat mikroelektronických zařízení s osobním počítačem, jsou uvedeny příklady programů. Kniha zohledňuje vlastnosti moderních modelů AVR a souvisejících čipů. v posledních letech uvolnění.
Aplikace obsahuje hlavní parametry mikrokontrolérů AVR, seznam příkazů a textů Aplikace obsahují hlavní parametry mikrokontrolérů AVR, seznam příkazů a programových textů k nim a také seznam použitých pojmů a zkratek.
Pro studenty, inženýry a radioamatéry

7. Mikrokontroléry, jejich výskyt a použití
8. Prehistorie mikrokontrolérů
10. Elektronika v řeckém stylu
12. Proč AVR?
14. Co bude dál?
17. ČÁST L OBECNÉ ZÁSADY NÁVRHU A FUNGOVÁNÍ ATMEL AVR
19. Kapitola 1. Přehled mikrokontrolérů Atmel AVR
21. Rodiny AVR
23. Vlastnosti praktického použití MK AVR
23. Spotřeba
25. Některé vlastnosti použití AVR v obvodech
27. Kapitola 2 Obecné zařízení, organizace paměti, taktování, reset
27. Paměť programu
29. Datová paměť (RAM, SRAM)
31. Energeticky nezávislá datová paměť (EEPROM)
32. Metody časování
34. Resetovat
37. Kapitola 3. Úvod do periferních zařízení
38. I/O porty
39. Časovače-počítadla
41. Analogově digitální převodník
42. Sériové porty
43. UART
46. ​​Rozhraní SPI
50. Rozhraní TWI (I2C)
50. Univerzální sériové rozhraní USI
53. Kapitola 4. Přerušení a režimy úspory energie
53. Přerušuje
57. Odrůdy přerušení
58. Úsporné režimy
61. ČÁST II. PROGRAMOVÁNÍ MIKROKONTROLÉRŮ ATMELAVR
63. Kapitola 5 Obecné zásady programování MK rodiny AVR
63. Assembler nebo C?
67. Způsoby a prostředky programování AVR
67. Editor kódu
68. O aplikaci AVR Studio
70. Uspořádání assembleru
71. Programátoři
75. O hex souborech
78. Příkazy, instrukce a zápis assembleru AVR
79. Čísla a výrazy
80. Směrnice a funkce
84. Obecná struktura programu AVR
85. Zpracování přerušení
89. RESET
90. Nejjednodušší program
92. Zpoždění
94. Pultový program
96. Použití přerušení
97. Časovač zpoždění
98. Čítací program využívající přerušení
101. O konfiguračních bitech
105. Kapitola 6, Příkazový systém AVR
105. Řídit přenosové příkazy a registrovat SREG
111. Příkazy pro kontrolu
113. Příkazy logických operací
114. Shift instrukce a bitové operace
116. Příkazy aritmetických operací
118. Příkazy přenosu dat
122. Příkazy pro ovládání systému
123. Provádění typických procedur v assembleru
125. O zásobníku, lokálních a globálních proměnných
127. Kapitola 7. Aritmetické operace
128. Standardní aritmetické operace
129. Násobení víceciferných čísel
131. Dělení víceciferných čísel
134. Operace se zlomkovými čísly
136. Generátor náhodných čísel
138. Operace s čísly ve formátu BCD
143. Záporná čísla v MK
147. Kapitola 8. Programování časovačů
147. 8 a 16 bitové časovače
149. Tvorba hodnoty nastavené frekvence
153. Odpočítávání
158. Přesná oprava času
160. Čítač frekvence a měřič period
160. Měřič frekvence
164. Periodometr
167. Dynamické řízení indikace
168. LED indikátory a jejich zapojení
171. Programování dynamické indikace
174. Časovače v režimu PWM
179. Kapitola 9. Použití EEPROM
179. Ještě jednou o bezpečnosti dat v EEPROM
181. Zápis a čtení EEPROM
183. Ukládání konstant do EEPROM
187. Kapitola 10. Analogový komparátor a ADC
187. Analogově-digitální operace a jejich chyby
190. Práce s analogovým komparátorem
193. Integrace ADC na komparátoru
194. Princip činnosti a výpočetní vzorce
198. Integrační program ADC
201. Vestavěný ADC
204. Příklad použití ADC
206. Program
215. Kapitola 11 Programování SPI
215. Základní operace přes SPI
216. Hardwarová varianta
218. Možnost programu
219. O odrůdách energeticky nezávislé paměti
221. Zápis a čtení flash paměti přes SP!
224. Program pro výměnu s pamětí 45DB011B přes SPI
225. Psaní a čtení flash karet
225. Připojení karet MMS
228. Vydávání příkazů a inicializace MMC
232. Psaní a čtení MMC
237. Kapitola 12. Rozhraní TW1 (I2C) a jeho praktické využití
237. Základní protokol 1 2 C
240. Softwarová emulace protokolu I 2 C
241. Zápis dat do externí energeticky nezávislé paměti
241. Způsoby výměny s pamětí AT24
243. Program
247. Hodiny s rozhraním I 2 C
255. Záznam dat
259. Čtení dat
261. Kapitola 13. Programování UART/USART
262. Inicializace UART
263. Odesílání a přijímání dat
266. Příklad nastavení hodin DS1307 pomocí UART
271. Techniky ochrany před výpadky komunikace
271. Kontrola parity
273. Jak uspořádat správnou výměnu
274. Další funkce USART
276. Implementace rozhraní RS-232 a RS-485
280. Převodníky úrovní pro RS-232
283.RS-485
285. Kapitola 14. Režimy úspory energie a časovač Watchdog
286. Programování úsporného režimu
287. Příklad přístroje na baterie
289. Upřesnění programu
293. Použití hlídacího časovače
299. PŘÍLOHY
301. Příloha 1. Hlavní parametry mikrokontrolérů Atmel AVR
309 Příloha 2 Příkazy Atmel AVR
310. Aritmetické a logické příkazy
311. Příkazy bitové operace
312. Porovnávací příkazy
313. Příkazy pro přenos řízení
313. Pokyny pro nepodmíněný skok a volání podprogramů
314. Příkazy check-skip a příkazy podmíněného skoku
315. Příkazy přenosu dat
316. Příkazy řízení systému
317. Příloha 3. Texty programů
317. Demonstrační program pro výměnu dat s flash pamětí 45DB011B přes SPI rozhraní
321. Procedury výměny přes rozhraní I2C
329. Příloha 4. Výměna dat s osobním počítačem a ladění programů přes UART
329. Práce s COM portem v Delphi
335. Instalace linky RTS v DOS a Windows
337. Program COM2000
339. Ladění programů pomocí emulátoru terminálu
341. Příloha 5. Slovník běžných zkratek a termínů
347. Literatura
349. Věcný rejstřík