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

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

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

Podobné prezentace


Prezentace na téma: "© Adastra, 2008 Na velikosti (ne)záleží aneb Úvod do programování jednočipů Kamil Řezáč."— Transkript prezentace:

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

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

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

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  AND: & =  OR: | =  XOR: ^ =  NOT:~ = Odbočka - bitové operace 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:76 x 10 _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 #include "global.h" #include "timer.h" int main(void) { timerInit(); PORTB |= _BV(PB0); while(1) { PORTB &= ~_BV(PB0); timerPause(250); PORTB |= _BV(PB0); 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/ Praha 8 - Karlín CANADA Adastra Corporation 8500 Leslie St. Markham, Ontario, L3T 7M8 SLOVAK REPUBLIC Adastra, s.r.o. Francisciho Bratislava GERMANY Adastra GmbH Bockenheimer Landstrasse 17/ Frankfurt am Main


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

Podobné prezentace


Reklamy Google