Klon slávneho Tetrisu napísaný v assembleri. Úplne sa zmestí do 512 bajtov zavádzacieho sektora (potrebuje iba 446 bajtov, čo je len maximálna veľkosť bootloader v MBR).

MBR - sekcia obsahujúca kód a údaje potrebné pre následné spustenie operačného systému a nachádza sa v prvých fyzických sektoroch. Prvých 446 bajtov disku je pridelených kódu zavádzača. Práve na tomto mieste je zaznamenaný TetrOS.

Prirodzene, kvôli takýmto vlastnostiam je zaťažený pred akýmikoľvek operačný systém- nevyžaduje žiadny OS, funguje sám. Áno, počuli ste dobre, TetrOS je vlastný bootloader.

Takto to vyzerá na obrazovke:

A zdroj v boot sektore vyzerá takto:

A áno je celá zdroj. Pamätáte si, že váži len 446 bajtov?

Tento „zázračný operačný systém“ je možné spustiť pod qemu alebo ho dokonca nainštalovať v reálnom čase zavádzací oddiel disk alebo flash disk.

spustiť

Stačí nainštalovať qemu:

sudo apt-get install qemu

a spustiť:

Stiahnite si na flash disk

Skopírujte obrázok na flash disk. Povedzme, že ak je jednotka flash pripojená ako /dev/sde , musíte na ňu spustiť nasledujúci príkaz boot sektor TetrOS:

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

Popis hry

Nie najnudnejší dizajn sa vývojárovi podarilo vtesnať len do 512 bajtov pamäte. Každá tehla v hre má svoju farbu, ovládanie sa vykonáva tlačidlami, v prípade porážky hra končí, tehly sa generujú náhodne... BolgenOS nebol ani zďaleka!

Žiaľ, kvôli veľkosti sa muselo od niektorých funkcií upustiť. V hre nie je žiadne bodovanie, reštartovanie hry bez opätovného načítania a zobrazenie ďalšej kocky.

ÚVOD Mikrokontroléry, ich výskyt a použitie
História mikrokontrolérov
Elektronika v gréckom štýle
Prečo AVR?
Čo bude ďalej?

ČASŤ I. VŠEOBECNÉ ZÁSADY NÁVRHU A FUNGOVANIA ATMEL AVR

Kapitola 1 Prehľad mikrokontrolérov Atmel AVR

rodiny AVR
Vlastnosti praktického využitia MK AVR

Kapitola 2. Všeobecné usporiadanie, organizácia pamäte, taktovanie, reset

Pamäť programu
Dátová pamäť (RAM, SRAM)
Energeticky nezávislá dátová pamäť (EEPROM)
Metódy taktovania
Resetovať
Funkcie pripojenia ďalšej externej dátovej pamäte

Kapitola 3. Úvod do periférnych zariadení

I/O porty
Časovače-počítadlá
Analógovo-digitálny prevodník
Sériové porty
UART
Rozhranie SPI
Rozhranie TWI (12C)
Univerzálny sériové rozhranie USI

Kapitola 4 Prerušenia a režimy úspory energie

Prerušenia
Typy prerušení
Režimy úspory energie
Spotreba MK AVR
Režimy spotreby a úspory energie MK AYR

ČASŤ II. PROGRAMOVANIE MIKROKONTROLÉROV ATMEL AVR

Kapitola 5. Všeobecné princípy programovania MK rodiny AVR

Assembler alebo C?
Spôsoby a prostriedky programovania AVR
Editor kódu
O AVR Studio
Usporiadanie zostavovateľa
programátorov
O hex súboroch
Príkazy, inštrukcie a zápis zostavy AVR
Čísla a výrazy
Smernice a funkcie
Všeobecná štruktúra programu AVR
Manipulácia s prerušením
RESETOVAŤ
Najjednoduchší program
Oneskorenie
Pultový program
Používanie prerušení
Oneskorenie časovača
Program počítadla prerušení
O konfiguračných bitoch

Kapitola 6 Príkazový systém AVR

Riadenie príkazov prenosu a registra SREG
Príkazy check-pass
Logické príkazy
Pokyny na posun a bitové operácie
Príkazy pre aritmetické operácie
Príkazy na prenos údajov
Príkazy na ovládanie systému
Vykonávanie typických procedúr v assembleri
O zásobníku, lokálnych a globálnych premenných

Kapitola 7 Aritmetické operácie

Štandardné aritmetické operácie
Násobenie viacciferných čísel
Viacmiestne delenie
Operácie so zlomkovými číslami
Generátor náhodných čísel
Operácie s číslami vo formáte BCD
Záporné čísla v MK

Kapitola 8 Programovanie časovačov

8 a 16 bitové časovače
Vytvorenie požadovanej hodnoty frekvencie
Odpočítavanie
Presná korekcia času
Merač frekvencie a merač periódy
Merač frekvencie
Periodometer
Dynamické ovládanie indikácie
LED indikátory a ich zapojenie
Programovanie dynamická indikácia
Časovače v režime PWM

Kapitola 9 Používanie EEPROM

Ešte raz o bezpečnosti údajov v EEPROM
Zápis a čítanie EEPROM
Ukladanie konštánt do EEPROM

Kapitola 10 Analógový komparátor a ADC

Analógovo-digitálne operácie a ich chyby
Práca s analógovým komparátorom
Integrácia ADC na komparátore
Princíp činnosti a výpočtové vzorce
Integrácia programu ADC
Vstavaný ADC
Príklad ADC
Program

Kapitola 11 Programovanie SPI

Základné operácie cez SPI
Možnosť hardvéru
Možnosť softvéru
O odrodách energeticky nezávislej pamäte
Zápis a čítanie flash pamäte cez SPI
Program na výmenu pamäte 45DB011B cez SPI
Písanie a čítanie flash kariet
Pripojenie MMS kariet
Vydávanie príkazov a inicializácia MMC
Písanie a čítanie MMS

Kapitola 12. Rozhranie TWI (12C) a jeho praktické použitie

Základný protokol 12C
Softvérová emulácia protokolu 12C
Zápis údajov do externej energeticky nezávislej pamäte
Výmenné režimy s pamäťou AT24
Program
Hodiny s rozhraním 12C
Záznam údajov
Čítanie údajov

Kapitola 13 Programovanie UART/USART

Inicializácia UART
Odosielanie a prijímanie údajov
Príklad nastavenia hodín DS1307 pomocou UART
Techniky ochrany pred zlyhaním komunikácie
Rovnomerná parita
Ako zorganizovať správnu výmenu
Pridané vlastnosti USART
Implementácia rozhraní RS-232 a RS-485
Prevodníky úrovne pre RS-232
RS-485

Kapitola 14 Režimy nízkej spotreby a časovač Watchdog

Programovanie úspory energie
Príklad prístroja na batérie
Spresnenie programu
Používanie časovača strážneho psa

APPS

Príloha 1. Hlavné parametre mikrokontrolérov Atmel AVR

Dodatok 2 Príkazy Atmel AVR
Aritmetické a logické inštrukcie
Príkazy pre bitové operácie
Porovnávacie príkazy
Ovládanie príkazov prenosu
Pokyny na bezpodmienečné skoky a podprogramy
Preskočte pokyny na kontrolu a podmienené pobočky
Príkazy na prenos údajov
Príkazy na ovládanie systému

Dodatok 3 Programové texty
Ukážkový program komunikácie s flash pamäťou 45DB011B cez rozhranie SPI
Postupy výmeny na rozhraní 12C

Dodatok 4 Komunikácia s osobný počítač a ladenie programov cez UART
Práca s COM portom v Delphi
COM port a Windows API
Práca s COM cez hotové komponenty
Inštalácia linky RTS v DOS a Windows
program COM2000
Ladenie programov pomocou terminálového programu

Dodatok 5 Slovník bežných skratiek a pojmov
Korešpondencia termínov v ruštine s ich prekladom do angličtiny
Korešpondencia termínov v angličtine s ich prekladom do ruštiny

Literatúra
Predmetový index

Nejako som videl na nete zaujímavé video, ukazovalo hru hada implementovanú na mikrokontroléri a matici 8x8 LED, potom som našiel ešte pár podobných videí, ktoré ma zaujali. Medzi nimi bolo aj video, kde bola hra Tetris zostavená na „výkonnom“ mikrokontroléri. Po zhliadnutí som sa rozhodol vyvinúť vlastnú verziu zariadenia, v ktorej sú obe hry kombinované, pomocou mikrokontroléra PIC16F688 a dvoch LED matíc, ktoré zobrazujú hracie pole s rozlíšením 8x16 pixelov.

Schéma zariadenia je uvedená nižšie. Výstup informácií o matici H1, H2 v dynamickom režime je realizovaný pomocou posuvných registrov DD2, DD3, DD4. Výstupy mikroobvodov DD2, DD3 sú pripojené k anódam matíc. Katódy oboch matíc sú pripojené ku kolektorom tranzistorov VT1-VT8, ktorých riadiace signály generuje čip DD4. Mikrokontrolér načíta dáta do registra DD4, pri jeho pretečení sa informácie z 9. výstupu prenesú na vstup registra DD3, následne sa rovnakým spôsobom prenesú dáta do registra DD2. Rezistory R1-R16 obmedzujú prúd cez maticové LED diódy. Rezistory R17-R23 nastavujú základný prúd tranzistorov VT1-VT8. Mikrokontrolér pracuje na frekvencii 8 MHz z interného oscilátora. Obnovovacia frekvencia obrazu je 100 Hz.


Po pripojení napájania sa na hracom poli zobrazí šetrič obrazovky hry „Snake“. V hornej časti poľa je zobrazené číslo 1, v dolnej časti je obrázok úryvku hry. Po stlačení tlačidla SB5 „Štart / Pauza“ prejdete do herného menu, v hornej časti ktorého je zobrazená úroveň hry vo forme čísel od 1 do 9. Úroveň hry sa nastavuje pomocou SB1 „Up“ pri každom stlačení sa číslo úrovne postupne zvyšuje o jednotku. Po čísle 9 sa opäť zobrazí číslo 1. Od stanovenú úroveň Hra závisí od počiatočnej dĺžky hada, takže pre 1. úroveň je dĺžka 3 body, pre 9. 11 bodov. V spodnej časti ponuky sa zobrazuje informácia o rýchlosti hada. Číslo 1 zodpovedá minimálnej rýchlosti a číslo 9 zodpovedá maximálnej. Hodnota rýchlosti sa nastavuje tlačidlom SB4 „Dole“, podobne ako pri nastavovaní úrovne hry. Svietenie LED diód po obvode ihriska v menu znamená, že je zvolený herný režim s prítomnosťou okrajov po obvode ihriska. V tomto režime, keď had opustí hracie pole, dôjde k strate. Ak sú v ponuke LED diódy po obvode poľa vypnuté, potom je zvolený režim bez okrajov. V tomto prípade sa pri opustení hracieho poľa hlava hada objaví na opačnej strane ihriska. Tlačidlá SB2 „Right“ a SB3 „Left“ nastavujú požadovaný herný režim. Pri prvom vstupe do menu hry sa nastaví hodnota dĺžky a rýchlosti na jednu, zvolí sa režim s prítomnosťou okrajov.

Po stlačení tlačidla „Štart / Pozastaviť“ z menu hry sa na hracom poli zobrazí had v základnej pozícii a náhodný voľný bod. Stlačenie ktoréhokoľvek z tlačidiel „Hore“, „Doľava“, „Doprava“ spôsobí, že sa had bude pohybovať v príslušnom smere. Po začatí pohybu je k dispozícii aj tlačidlo „Dole“ na ovládanie hada. Pri dopade na svetelný bod sa dĺžka hada zväčšuje. Po nazbieraní 14 bodov hráč postupuje do ďalšej úrovne hry. Po 9. úrovni nasleduje prechod do prvej úrovne. Ak had zasiahne vlastné telo alebo opustí hraciu plochu v režime ohraničenia, dôjde k strate. Po 3 prehrách sa vrátite do menu hry, kde je uvedená aktuálna herná úroveň a rýchlosť. Keď sa had začne pohybovať, stlačením tlačidiel „Štart / Pozastaviť“ môžete hru pozastaviť a obnoviť.

Ak chcete opustiť menu hry, podržte tlačidlo „Štart / Pozastaviť“ na 1 sekundu, po ktorej sa na hracom poli objaví úvodná obrazovka hry. Prepínanie medzi hrami sa vykonáva stlačením ktoréhokoľvek z tlačidiel „Hore“, „Dole“, „Doľava“, „Doprava“. Súčasne sa zobrazí úvodná obrazovka príslušnej hry.

Číslo 2 sa zobrazuje v hornej časti úvodnej obrazovky hry Tetris a obrázok fragmentu hry sa zobrazuje v spodnej časti. Prechod do menu hry sa vykonáva stlačením tlačidla „Štart/Pauza“. V hornej časti ponuky sa zobrazuje počet bodov, ktoré hráč získal. Za každého sa udeľujú body vymazaný riadok. Počítadlo skóre počíta do 99, potom sa vynuluje a skóre začína znova. Na začiatku každého Nová hra, počítadlo sa tiež vynuluje. V spodnej časti menu sa zobrazujú informácie o rýchlosti pohybu figúrok, ktorá sa nastavuje pomocou tlačidiel „Hore“, „Dole“, resp. Po stlačení tlačidla „Štart / Pozastaviť“ z ponuky sa hra spustí, v hornej časti poľa sa objavia náhodné figúrky, ktoré je možné posúvať tlačidlami „Doľava“ a „Doprava“ v príslušnom smere. Tlačidlo Hore otočí tvar o 90 stupňov v smere hodinových ručičiek pri každom stlačení. Podržaním tlačidla „Dole“ môžete zrýchliť pohyb figúrky. Tlačidlo „Štart/Pauza“ vám umožňuje pozastaviť a obnoviť hru. Hra končí, keď sa na hracie pole nezmestí nová figúrka, po ktorej nasleduje prechod do menu, kde si môžete pozrieť počet bodov, ktoré hráč získal. Výstup z ponuky sa vykonáva rovnakým spôsobom ako v hre „Snake“.

Ak do 4 minút nestlačíte žiadne z tlačidiel, zariadenie prejde do režimu nízkej spotreby, mikrokontrolér vypne matice LED a prejde do režimu spánku. Zariadenie sa „prebudí“ po stlačení tlačidla „Štart“ a vráti sa do predchádzajúceho stavu.

Zariadenie používa odpory - veľkosť 1206 pre povrchovú montáž. Kondenzátory C2, C3 - keramická veľkosť 1206. LED matrice H1, H2 - TOM-1088BG-B zelená žiara s priemerom 3mm LED diód, a rozlíšením 8x8 pixelov. Tlačidlá sú štandardné hodiny.

Zdrojom energie je stabilizovaný zdroj s napätím 3,7-5V, použiť môžete aj galvanické články alebo batérie, napríklad 3 1,5V AA alebo AAA batérie zapojené do série, ja napríklad používam 3 AA batérie. Zariadenie zostáva funkčné, keď napájacie napätie klesne na 3,3 V, pričom sa zníži jas LED matíc.

Názov: Praktické programovanie mikrokontrolérov Atmel AVR v assembleri 2 edition

Vydavateľ:"BHV-Petersburg"

Rok vydania: 2011

Stránky: 354

Jazyk: ruský

Formát: DjVu

Veľkosť: 12,2 MB

Princípy fungovania, vlastnosti architektúry a programovacie techniky mikrokontrolérov Atmel AVR sú superponované.

Uvádzajú sa hotové recepty na programovanie hlavných funkcií moderných mikroelektronických zariadení: od reakcie na stlačenie tlačidla alebo vybudovanie dynamickej indikácie až po zložité protokoly na zaznamenávanie údajov v externá pamäť alebo funkcie pripojenia hodín reálneho času. Osobitná pozornosť sa venuje výmene údajov mikroelektronických zariadení s osobným počítačom, uvádzajú sa príklady programov. Kniha zohľadňuje vlastnosti moderných modelov AVR a súvisiacich čipov. v posledných rokoch uvoľniť.
Aplikácia obsahuje hlavné parametre mikrokontrolérov AVR, zoznam príkazov a textov Aplikácie obsahujú hlavné parametre mikrokontrolérov AVR, zoznam príkazov a programových textov k nim, ako aj zoznam používaných pojmov a skratiek.
Pre študentov, inžinierov a rádioamatérov

7. Mikrokontroléry, ich výskyt a použitie
8. Pravek mikrokontrolérov
10. Elektronika v gréckom štýle
12. Prečo AVR?
14. Čo ďalej?
17. ČASŤ L VŠEOBECNÉ ZÁSADY NÁVRHU A FUNGOVANIA ATMEL AVR
19. Kapitola 1. Prehľad mikrokontrolérov Atmel AVR
21. Rodiny AVR
23. Vlastnosti praktického využitia MK AVR
23. Spotreba
25. Niektoré vlastnosti použitia AVR v obvodoch
27. Kapitola 2 Všeobecné zariadenie, organizácia pamäte, taktovanie, reset
27. Pamäť programu
29. Dátová pamäť (RAM, SRAM)
31. Energeticky nezávislá dátová pamäť (EEPROM)
32. Metódy časovania
34. Resetovať
37. Kapitola 3. Úvod do periférnych zariadení
38. I/O porty
39. Časovače-počítadlá
41. Analógovo-digitálny prevodník
42. Sériové porty
43. UART
46. ​​Rozhranie SPI
50. Rozhranie TWI (I2C)
50. Univerzálne sériové rozhranie USI
53. Kapitola 4. Prerušenia a režimy úspory energie
53. Prerušuje
57. Odrody prerušení
58. Režimy úspory energie
61. ČASŤ II. PROGRAMOVANIE MIKROKONTROLÉROV ATMELAVR
63. Kapitola 5 Všeobecné zásady programovanie MK rodiny AVR
63. Assembler alebo C?
67. Spôsoby a prostriedky programovania AVR
67. Editor kódu
68. O AVR Studio
70. Usporiadanie zostavovateľa
71. Programátori
75. O hex súboroch
78. Príkazy, inštrukcie a zápis assembleru AVR
79. Čísla a výrazy
80. Smernice a funkcie
84. Všeobecná štruktúra programu AVR
85. Obsluha prerušení
89. RESET
90. Najjednoduchší program
92. Oneskorenie
94. Pultový program
96. Používanie prerušení
97. Časovač oneskorenia
98. Čítací program využívajúci prerušenia
101. O konfiguračných bitoch
105. Kapitola 6, Systém príkazov AVR
105. Ovládajte prenosové príkazy a registrujte SREG
111. Príkazy check-pass
113. Príkazy logických operácií
114. Pokyny na posun a bitové operácie
116. Príkazy aritmetických operácií
118. Príkazy na prenos dát
122. Príkazy na ovládanie systému
123. Vykonávanie typických procedúr v assembleri
125. O zásobníku, lokálnych a globálnych premenných
127. Kapitola 7. Aritmetické operácie
128. Štandardné aritmetické operácie
129. Násobenie viacciferných čísel
131. Delenie viacciferných čísel
134. Operácie so zlomkovými číslami
136. Generátor náhodných čísel
138. Operácie s číslami vo formáte BCD
143. Záporné čísla v MK
147. Kapitola 8. Programovanie časovačov
147. 8 a 16 bitové časovače
149. Vytvorenie nastavenej hodnoty frekvencie
153. Odpočítavanie
158. Presná korekcia času
160. Počítadlo frekvencie a merač periódy
160. Merač frekvencie
164. Periodometer
167. Dynamické riadenie indikácie
168. LED indikátory a ich zapojenie
171. Programovanie dynamickej indikácie
174. Časovače v režime PWM
179. Kapitola 9. Používanie EEPROM
179. Ešte raz o bezpečnosti údajov v EEPROM
181. Zápis a čítanie EEPROM
183. Ukladanie konštánt do EEPROM
187. Kapitola 10. Analógový komparátor a ADC
187. Analógovo-digitálne operácie a ich chyby
190. Práca s analógovým komparátorom
193. Integrácia ADC na komparátore
194. Princíp činnosti a kalkulačné vzorce
198. Integračný program ADC
201. Vstavaný ADC
204. Príklad použitia ADC
206. Program
215. Kapitola 11 Programovanie SPI
215. Základné operácie cez SPI
216. Hardvérový variant
218. Možnosť programu
219. O odrodách neprchavej pamäte
221. Zápis a čítanie flash pamäte cez SP!
224. Program na výmenu s pamäťou 45DB011B cez SPI
225. Písanie a čítanie flash kariet
225. Pripojenie kariet MMS
228. Vydávanie príkazov a inicializácia MMC
232. Písanie a čítanie MMC
237. Kapitola 12. Rozhranie TW1 (I2C) a jeho praktické využitie
237. Základný protokol 1 2 C
240. Softvérová emulácia protokolu I 2 C
241. Zápis údajov do externej energeticky nezávislej pamäte
241. Spôsoby výmeny s pamäťou AT24
243. Program
247. Hodiny s rozhraním I 2 C
255. Záznam údajov
259. Čítanie údajov
261. Kapitola 13. Programovanie UART/USART
262. Inicializácia UART
263. Odosielanie a prijímanie dát
266. Príklad nastavenia hodín DS1307 pomocou UART
271. Techniky ochrany pred zlyhaním komunikácie
271. Kontrola parity
273. Ako zorganizovať správnu burzu
274. Ďalšie funkcie USART
276. Implementácia rozhraní RS-232 a RS-485
280. Prevodníky úrovní pre RS-232
283.RS-485
285. Kapitola 14. Režimy úspory energie a časovač Watchdog
286. Programovanie úsporného režimu
287. Príklad prístroja na batérie
289. Spresnenie programu
293. Používanie strážneho časovača
299. PRÍLOHY
301. Príloha 1. Hlavné parametre mikrokontrolérov Atmel AVR
309 Príloha 2 Príkazy Atmel AVR
310. Aritmetické a logické príkazy
311. Príkazy bitovej operácie
312. Príkazy na porovnávanie
313. Príkazy na prenos riadenia
313. Pokyny pre bezpodmienečný skok a volanie podprogramov
314. Príkazy check-skip a príkazy podmieneného skoku
315. Príkazy na prenos dát
316. Príkazy na ovládanie systému
317. Príloha 3. Texty programov
317. Ukážkový program na výmenu dát s flash pamäťou 45DB011B cez SPI rozhranie
321. Procedúry výmeny cez rozhranie I2C
329. Príloha 4. Výmena dát s osobným počítačom a ladiace programy cez UART
329. Práca s COM portom v Delphi
335. Inštalácia linky RTS v DOS a Windows
337. Program COM2000
339. Ladenie programov pomocou emulátora terminálu
341. Príloha 5. Slovník bežných skratiek a termínov
347. Literatúra
349. Predmetový register