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

Slides:



Advertisements
Podobné prezentace
CIT Paměti Díl X.
Advertisements

© Adastra, 2008 Keyboard Robot Hardwarové pomůcky pro testování aplikací aneb Jednočip – nejlepší přítel testera Kamil Řezáč.
ProBot © Ondřej Staněk.
Digitální učební materiál
Programování v asembleru - multiprocesory Jakub Yaghob.
ALTERA Cyclone II 4608 – LE až 1152 Kbitů RAM konfigurace pomocí sériového rozhraní podpora více I/O standardů až 4 PLL až 16 globálních hodin podpora.
BPGA RS Logix 500 a Logix 5000 Ing. Radek Štohl, Ph.D.
MProcesory a Robotika.
Programování PA - 2.
Základy mikroprocesorové techniky
TEP Instrukční soubor č.9.
Student EEICT 2005 / Aleš Povalač1 Implementace Dallas 1-Wire slave protokolu v mikroprocesoru AVR Aleš POVALAČ.
Komunikační moduly C2COM a CSAIO8x
Výukový program: Mechanik - elektrotechnik Název programu: Číslicová technika - mikroprocesory III. ročník Mikrořadiče Vypracoval : Vlastimil Vlček Projekt.
Digitální učební materiál
TEP Paměť ATmega č.3. Paměť ATmega Téma Paměť ATmega TEP Předmět TEP Juránek Leoš Ing. Autor Juránek Leoš Ing. TEP.
Implementace USB rozhraní AVR mikrořadičem Diplomová práce Implementace USB rozhraní AVR mikrořadičem Vypracoval: Jan Smrž Vedoucí práce: Ing. Pavel Kubalík.
PicoBlaze, MicroBlaze, PowerPC
Základy mikroprocesorové techniky
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
TEP Charakteristika ATmega č.2. Charakteristika ATmega Téma Charakteristika ATmega TEP Předmět TEP Juránek Leoš Ing. Autor Juránek Leoš Ing. TEP.
Autor:Ing. Peter Podoba Předmět/vzdělávací oblast:Digitální technika Tematická oblast:Mikroprocesorová technika Téma:Vnořená časová smyčka Ročník:4. Datum.
= monolitický integrovaný obvod obsahující kompletní mikropočítač
Výukový program: Mechanik - elektrotechnik Název programu: Číslicová technika - mikroprocesory III. ročník Mikrořadiče Vypracoval : Vlastimil Vlček Projekt.
Popis mikroprocesoru David Rozlílek ME4B.
Provedení logických obvodů
Tato prezentace byla vytvořena
Jaroslav Krahula.  OSC - ? ROM - ? RAM - ? Č/Č - ? CPU - ? ŘS - ? SP - ? LPT -?
Začátky mikroprocesorů
Autor:Ing. Peter Podoba Předmět/vzdělávací oblast:Digitální technika Tematická oblast:Mikroprocesorová technika Téma:Atmel AVR - registry Ročník:4. Datum.
D S P V D I A G N O S T I C E A Ř Í Z E N Í AUTOR : Ing. Zdeněk Macháček PROJEKT : Digitální signálové procesory v diagnostice a řízení.
Číslicový generátor Praktická zkouška z odborných předmětů 2008 Vyšší odborná škola a střední průmyslová škola elektrotechnická Olomouc M/004 Slaboproudá.
Výukový program: Mechanik - elektrotechnik Název programu: Číslicová technika - mikroprocesory III. ročník Mikrořadiče Vypracoval : Vlastimil Vlček Projekt.
Elektrotechnika Mikroprocesorová technika
Popis obvodu 8051.
Srovnání mikrokontrolerů
Procesor Renesas H8S/2633F.
ZÁPADOČESKÁ UNIVERZITA V PLZNI FAKULTA ELEKTROTECHNICKÁ KATEDRA TEORETICKÉ ELEKTROTECHKY Oddělení informatiky Java Micro Edition pro mobilní zařízení.
Mikroprocesor.
ALTERA Stratix – LE až 7427 Kbitů RAM tři bloky RAM pamětí rychlé DSP bloky až 12 PLL (4+8 rychlých) až 16 globálních hodin a 22 zdrojů podpora.
Procesory.
Instrukce procesoru.
Arduino 101 Workshop Štěpán Martin
Jednočipové počítače v robotických systémech Vypracoval: Ing. Jaroslav Chlubný Kód prezentace: OPVK-TBdV-AUTOROB-ME-3-JCP-JCH-001 Technologie budoucnosti.
Bezdrátové senzorické sítě Operační systémy a vývojové prostředky Ing. David Široký Katedra informatiky a výpočetní techniky Fakulta aplikovaných.
Orbis pictus 21. století Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky Interkomunikační adresní systém.
Odborný výcvik ve 3. tisíciletí Tato prezentace byla vytvořena v rámci projektu.
Orbis pictus 21. století Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky Interkomunikační adresní systém.
Orbis pictus 21. století Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky Interkomunikační adresní systém.
Orbis pictus 21. století Instrukční soubor 2
ZŠ Brno, Řehořova 3 S počítačem snadno a rychle Informatika 7. ročník III
Mikropočítačová technika Úvod do mikropočítačové techniky a její aplikací.
Odborný výcvik ve 3. tisíciletí Tato prezentace byla vytvořena v rámci projektu.
Programování mikropočítačů Platforma Arduino
Výukový materiál zpracován v rámci projektu
Aritmetickologická jednotka
Inicializace portů mikrokontroléru
Vývojový kit Freescale M68EVB908GB60
Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/
Jednočipové počítače – instrukční sada
Hardware jednočipových počítačů I
Jednočipové počítače – základní struktura
Mikropočítač Vnitřní struktura 2
Výukový materiál zpracován v rámci projektu
Mikropočítač Soubor instrukcí
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
Programování moderních jednočipových mikropočítačů ve vyšších programovacích jazycích Výstup projektu 1594P2006.
Programování mikrokontrolerů PIC 16F84A
Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/
Transkript prezentace:

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

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

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

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

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

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

Atmel AVR Mega8: vývody

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…

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í)

Odbočka - bitové operace AND: 11110000 & 10101010 = 10100000 OR: 11110000 | 10101010 = 11111010 XOR: 11110000 ^ 10101010 = 01011010 NOT: ~ 10101010 = 01010101 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ů

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 = 00...1...00; nahození bitu: PORTB |= _BV(PB3); 00000000 | (1 << 3) = 00000000 | 00001000 = 00001000 shození bitu: PORTB &= ~_BV(PB3); 11111111 & ~(1 << 3) = 11111111 & (~00001000) = 11111111 & 11110111 = 11110111 překlopení bitu: PORTB ^= _BV(PB3); 00000000 ^ (1 << 3) = 00000000 ^ 00001000 = 00001000 11111111 ^ (1 << 3) = 11111111 ^ 00001000 = 11110111

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)

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

Low-cost programátory

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

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

Blikající LED – jak to zapojíme

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

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); }

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

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í

Č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

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

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

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

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

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

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

Další zdroje informací http://www.atmel.com http://robotika.cz/wiki/AVR http://www.avrfreaks.net/

Q & A roštěnka

CZECH REPUBLIC Adastra, s.r.o. Karolinská 654/2 186 00 Praha 8 - Karlín info@adastra.cz www.adastra.cz CANADA Adastra Corporation 8500 Leslie St. Markham, Ontario, L3T 7M8 info@adastracorp.com www.adastracorp.com SLOVAK REPUBLIC Adastra, s.r.o. Francisciho 4 811 08 Bratislava info@adastracorp.sk www.adastracorp.sk GERMANY Adastra GmbH Bockenheimer Landstrasse 17/19 60325 Frankfurt am Main info@adastracorp.de www.adastracorp.de