Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Na velikosti (ne)záleží aneb Úvod do programování jednočipů

Podobné prezentace


Prezentace na téma: "Na velikosti (ne)záleží aneb Úvod do programování jednočipů"— Transkript prezentace:

1 Na velikosti (ne)záleží aneb Úvod do programování jednočipů
Kamil Řezáč © Adastra, 2008

2 Motivační: Od blikající LEDky k meteostanici

3 Motivační II: ukázkové projekty
měření teploty a tlaku spínaný zdroj pro 3x3W LED emulátor klávesnice deska řízení motorů přes RS-485 ovladač pro časosběrnou fotografii

4 Který jednočip je nejlepší?
8051? Encore? ARM? AVR? HC68? PIC? Rabbit? Zilog? !! ten, který umím !!

5 Rodina procesorů Atmel AVR
AtTiny pro méně náročné aplikace menší pouzdro (a tedy méně pinů) v závislosti na typu chybí některé funkční bloky (např. UART…) omezené použití vyšších programovacích jazyků (zásobník) Tiny15, Tiny2313 AtMega velký rozsah typů (pouzdra, velikosti paměti) varianty se specializovaným rozhraním (CAN, USB) slušná podpora pro vyšší programovací jazyky podpora ladění přes JTAG (kromě Mega8) Mega8, Mega128

6 Atmel AVR Mega8: vlastnosti
30Kč  oddělená paměť pro kód a data (8kB/4kinstr a 1kB) až 23 využitelných vývodů až 16MHz takt. frekvence vestavěný osc. 1 nebo 8 MHz 3 čítače/časovače EEPROM …. většina instrukcí (kromě skoků) vykonávána v 1 taktu, tedy až 16MIPS

7 Atmel AVR Mega8: vývody

8 Programovací jazyky a vývojová prostředí
assembler AVR Studio avra C/C++ gcc (port pro Win: WinAVR) + editor/IDE (AVR Studio, notepad, vim, Eclipse) + AVRlib IAR ImageCraft Basic Bascom Pascal, Java, Forth, Ada, teoreticky všechny gcc frontendy…

9 Kontrola chování procesoru - registry
chod procesoru lze řídit prostřednictvím kontrolních registrů příklad: UCSRB registr (nastavení sériového portu) chod procesoru lze monitorovat pomocí stavových registrů příklad: STATUS registr (příznaky výsledků aritmetických operací)

10 Odbočka - bitové operace
AND: & = OR: | = XOR: ^ = NOT: ~ = 1 na výstupu tam, kde je na daném bitu 1 v obou bytech 1 na výstupu tam, kde je na daném bitu 1 alespoň v jednom bytu 1 na výstupu tam, kde je na daném bitu 1 právě v jednom bytu (překlopí právě ty bity jednoho bytu, které mají 1 na témže bitu druhého bytu) negace všech bitů

11 Zacházení s bity V následujících ukázkách budeme manipulovat se třetím bitem (PB3) registru PORTB. _BV(x) - byte s nastaveným x-tým bitem: x _BV(x) = 1 << x = ; nahození bitu: PORTB |= _BV(PB3); | (1 << 3) = | = shození bitu: PORTB &= ~_BV(PB3); & ~(1 << 3) = & (~ ) = & = překlopení bitu: PORTB ^= _BV(PB3); ^ (1 << 3) = ^ = ^ (1 << 3) = ^ =

12 I/O operace – cvičíme s piny
piny sdruženy do portů (typicky po osmi) – PORTx[0..7], značíme písmenným suffixem, např. PORTB, jeho jednotlivé bity pak PB0 … PB7 pro každý port existují tři obslužné registry: DDRx (DDRB): směr pinu (0 – vstupní, 1 – výstupní) PORTx (PORTB): výstupní hodnota (0 – 0V, 1 – 5V) PINx (PINB): skutečná hodnota na vstupu (0 – 0V, 1 – 5V)

13 Programátor HW k nahrání programu (firmware) do jednočipu komerční
STK500 AVR Dragon samodomo protokolové (programovací signály generuje čip programátoru) problém slepice X vejce (jak naprogramovat čip do programátoru) avr910biprog bitbang (programovací signály generuje přímo PC na paralelním nebo sériovém portu) PonyProg, dasa… bootloadery sám sobě programátorem

14 Low-cost programátory

15 Zadání – blikající LED dioda
Základní zadání – pevné časování ¼ sekundy svítí ¾ sekundy nesvítí Rozšířené zadání doba svícení je nastavitelná uživatelem

16 Blikající LED – co potřebujeme
nepájivé kontaktní pole programátor AVR Mega8 LED dioda rezistor („odpor“) 1kohm zdroj napětí 4-6V

17 Blikající LED – jak to zapojíme

18 Blikající LED – jak to funguje
Schéma programu nekonečná smyčka Čekání použití časovačů zapouzdřené v knihovních funkcích alternativně lze, stejně jako v asembleru, použít naladěné vnořené cykly

19 Blikající LED – jak to naprogramujeme
ASM SBI DDRB, PB0 start: LDI count0, 128 LDI count1, 71 LDI count2, 2 CBI PORTB, PB0 delay_a1: DEC count0 BRNE delay_a1 delay_b1: DEC count1 BRNE delay_b1 delay_c1: DEC count2 BRNE delay_c1 LDI count0, 137 LDI count1, 212 LDI count2, 4 SBI PORTB, PB0 delay_a2: DEC count0 BRNE delay_a2 delay_b2: DEC count1 BRNE delay_b2 delay_c2: DEC count2 BRNE delay_c2 JMP start C #include <avr/io.h> #include "global.h" #include "timer.h" int main(void) { timerInit(); PORTB |= _BV(PB0); while(1) { PORTB &= ~_BV(PB0); timerPause(250); timerPause(750); }

20 Blikající LED – jak to dostaneme do jednočipu
AVR Studio UISP avrdude avrdude -p m8 -c stk500v2 -P COM1 -U flash:w:blink.hex

21 Přerušení čekání v hlavní smyčce je neefektivní
občas potřebujeme reagovat na události přerušení hlavní smyčky uložení stavu procesoru zavolání příslušné obslužné rutiny obnovení stavu procesoru návrat do hlavní smyčky přerušitelná a nepřerušitelná přerušení riziko „utopení se“ v přerušeních, pokud obsluha trvá déle, než je perioda vyvolávání přerušení

22 Časovače měření uplynulé doby nezávisle na hlavní smyčce
volitelná předdělička přerušení při přetečení dva osmibitové, jeden šestnáctibitový další funkcionalita (input capture, output compare) ukázka

23 A/D převodník měření analogové hodnoty napětí na pinu
6 multiplexovaných kanálů 8bit nebo 10bit výstup rychlost měření versus přesnost napěťová reference: interní (2.5V) / externí / napájení přerušení při ukončení převodu

24 A/D převodník: jak to zapojíme

25 A/D převodník: jak to naprogramujeme
měření pozice potenciometru podle získané hodnoty měníme dobu svitu LED ukázka

26 PWM – pulzně-šířková modulace
generování zvuku přes piezoměnič / řízení motoru regulace potenciometrem ukázka

27 Sériový port echo přijatých znaků (se zvětšením) ukázka

28 Alfanumerický displej
výpis textu na displej ukázka

29 Další zdroje informací

30 Q & A roštěnka

31 CZECH REPUBLIC Adastra, s.r.o. Karolinská 654/2 Praha 8 - Karlín CANADA Adastra Corporation 8500 Leslie St. Markham, Ontario, L3T 7M8 SLOVAK REPUBLIC Adastra, s.r.o. Francisciho 4 Bratislava GERMANY Adastra GmbH Bockenheimer Landstrasse 17/19 60325 Frankfurt am Main


Stáhnout ppt "Na velikosti (ne)záleží aneb Úvod do programování jednočipů"

Podobné prezentace


Reklamy Google