Vývojové nástroje pro osmibitové mikrořadiče PIC (2)

Pavel Tišnovský 7. 10. 2010

Dnes nejdříve společně dokončíme popis vývojových kitů BASIC Stamp, které umožňují programování mikrořadičů PIC s využitím interpretru programovacího jazyka Basic upraveného pro tyto „malé“ mikrořadiče a posléze se začneme věnovat vývojovému kitu Amicus, jenž se podobá známějšímu Arduinu.

Obsah

1. Verze PBasicu

2. Řídicí příkazy PBasicu verze 1.0

3. Programové smyčky a řídicí příkazy v PBasicu verze 2.x

4. Komunikace z PBasicu s periferními zařízeními

5. Význam operátoru ** (Multiply High)

6. Význam operátoru */ (Multiply Middle)

7. Reprezentace úhlů a goniometrické funkce

8. Vývojový kit Amicus – odpověď na Arduino?

9. Odkazy na Internetu

1. Verze PBasicu

V předchozí části seriálu o architekturách počítačů jsme se seznámili s vývojovým kitem nazvaným příhodně BASIC Stamp. Z konstrukčního hlediska se jedná o relativně malý plošný spoj obsahující osmibitový mikrořadič PIC16C56A odvozený od známého čipu PIC16C54, který je doplněný externím paměťovým modulem EEPROM s kapacitou 256 bajtů, jenž s mikrořadičem komunikuje pomocí sériové sběrnice typu I2C. Tento vývojový kit je možné připojit k osobnímu počítači, na němž probíhá vlastní vývoj, s využitím sériového portu. Navíc lze k mikrořadiči přes jeho vstupně/výstupní piny připojovat různá periferní zařízení – LED, displeje, teplotní a optická čidla atd. Vzhledem k tomu, že se BASIC Stamp stal po svém uvedení na trh poměrně populární, především mezi amatérskými konstruktéry různých zařízení, kteří k nim potřebovali připojit nějaký „mozek“ (ovládání topení v domě, jednoduché roboty, řízení kolejiště), vzniklo postupně několik dalších verzí BASIC Stampu, například BASIC Stamp 2, BASIC Stamp 2e atd.

Obrázek 1: Různé varianty vývojového kitu BASIC Stamp.

Jednotlivé varianty tohoto vývojového kitu se od sebe odlišují jak svým hardwarovým vybavením (některé typy BASIC Stampu lze například k počítači připojit pomocí sběrnice USB a nikoli s využitím sériového portu), tak i tím, jaký interpret programovacího jazyka PBasic je pro ně možné použít a kolik příkazů tento interpret na daném kitu dokáže vykonávat. Připomeňme si, že programy napsané v PBasicu jsou nejprve přeloženy ve vývojovém prostředí běžícím na osobním počítači do bajtkódu a následně je tento bajtkód nahrán do externího paměťového modulu EEPROM, jehož kapacita 256 bajtů (v případě BASIC Stampu 1) dokáže pojmout cca 80 příkazů. Interpret bajtkódu je umístěn přímo v interní paměti EPROM mikrořadiče a poslední typ paměti – interní paměť RAM – je využívána jak samotným interpretrem (například pro uložení návratových adres pro příkaz GOSUB), tak i uživatelským basicovým programem, protože právě zde jsou uloženy všechny uživatelské proměnné (jak skalární typy, tak i malá pole).

Obrázek 2: Modul vývojového kitu BASIC Stamp 1.

Původní varianta PBasicu nesoucí označení PBasic 1.0 byla z dnešního pohledu velmi jednoduchá a pro některé účely nevhodná. Například nebylo možné vytvářet strukturované programové smyčky s podmínkou na začátku či konci – tyto smyčky se musely, jak si ostatně pamětníci klasických „osmibitových“ Basiců vzpomenou, tvořit s využitím příkazů IF a programových skoků GOTO. Dále tato verze dokonce ani neumožňovala zapisovat závorky ve výrazech. V PBasicu 2.0 byly tyto nedostatky opraveny a to dokonce takovým způsobem, že nebylo nutné přidávat další typy tokenů do generovaného bajtkódu, protože se například programová smyčka typu DO-LOOP interně přeložila pomocí tokenů pro již zmíněné příkazy IF a GOTO. V následující tabulce jsou uvedeny počty použitelných příkazů a kompatibilita jednotlivých verzí interpretru PBasicu s jednotlivými verzemi vývojového kitu BASIC Stamp (znak × značí, že daná kombinace není podporována):

PBasic BS1 BS2 BS2e BS2sx BS2p BS2pe BS2px
PBASIC 1.0 32 × × × × × ×
PBASIC 2.0 × 37 40 40 56 56 58
PBASIC 2.5 × 42 45 45 61 61 63

Obrázek 3: Plně osazený modul BASIC Stamp 2, který je možné ihned po připojení na baterii nebo stabilizovaný zdroj začít používat.

2. Řídicí příkazy PBasicu verze 1.0

Původní verze PBasicu obsahuje, jak jsme si ostatně již řekli v úvodní kapitole, pouze velmi malou skupinu příkazů vhodných pro řízení běhu programu. Jedná se o příkazy známé již z klasických osmibitových BASICů, ovšem namísto čísel řádků se v PBasicu používají mnohem čitelnější a přehlednější návěští, pro jejichž pojmenování platí stejná pravidla, jako pro pojmenování proměnných. V následující tabulce jsou vypsány všechny řídicí příkazy dostupné v PBasicu 1.0:

Příkaz Význam
GOTO skok na specifikovaný programový řádek
GOSUB skok do podprogramu
RETURN návrat z podprogramu
IF-THEN podmíněný příkaz
BRANCH obdoba příkazu ON GOTO: rozeskok na několik míst v programu

Následuje jednoduchý demonstrační příklad ukazující použití příkazu GOTO a návěští:

Greeting:
    DEBUG "Hello World!", CR
    PAUSE 500
    GOTO Greeting

Dále si ukažme použití podprogramů. Povšimněte si, že podprogramy, na rozdíl od procedur či funkcí známých z dalších programovacích jazyků, nemají parametry a nemohou vracet žádnou hodnotu – veškerá komunikace se musí provádět přes globální proměnné. Nicméně i přesto je výhodné podprogramy využívat, protože se s jejich použitím může zmenšit objem obsazené paměti EEPROM (samozřejmě v případě, že podprogram nahrazuje vícekrát zapsanou sekvenci příkazů).

Main:
    GOSUB Hello
    GOSUB Goodbye
    END
Hello:
    DEBUG "Hello there!", CR
    RETURN
Goodbye:
    DEBUG "Bye now!", CR
    RETURN

Poznámka: úroveň vnoření podprogramů je omezena na čtyři, a to u BASIC Stampu 1 i u BASIC Stampu 2. Toto omezení samozřejmě platí kvůli nutnosti uchovávat adresu tokenu, který podprogram vyvolal, na zásobníku obhospodařovaného interpretrem Basicu.

Příklad náhrady několika příkazů IF-THEN-GOTO

IF value = 0 THEN Case_0 ' when value is 0, jump to Case_0
IF value = 1 THEN Case_1 ' when value is 1, jump to Case_1
IF value = 2 THEN Case_2 ' when value is 2, jump to Case_2

…jediným příkazem BRANCH:

BRANCH value, ( Case_0, Case_1, Case_2 )

Obrázek 4: Vývojový kit BASIC Stamp ve variantě vybavené rozhraním universální sériové sběrnice (USB).

Kromě výše uvedených základních řídicích příkazů lze v PBasicu 1.0 a samozřejmě i v dalších verzích tohoto jazyka používat počítanou programovou smyčku typu FOR-NEXT. U této smyčky se specifikuje řídicí proměnná (počitadlo smyčky), počáteční hodnota proměnné, její koncová hodnota a volitelně též krok, tj. hodnota, která se k obsahu počitadla připočte při každé iteraci (krok může být i záporný). Proměnná může být jak osmibitová, tak i šestnáctibitová, totéž platí pro obě mezní hodnoty a taktéž pro krok. Při popisu příkazu GOSUB jsme se zmínili o omezení úrovně vnoření podprogramů. Podobné omezení platí i pro počítané smyčky FOR-NEXT – ty lze samozřejmě vnořovat (tvořit vnitřní smyčky), ovšem může se jednat o pouze osm vnořených smyček u BASIC Stampu 1 a šestnáct vnořených smyček u BASIC Stampu 2 (ovšem tento limit pravděpodobně nebude v reálných programech nikdy dosažen). Následují ukázky použití počítané smyčky FOR-NEXT:

FOR counter = 1 TO 3
    GOSUB Blink_LEDs
NEXT
FOR counter = 1 TO 10 step 2
    DEBUG DEC counter, CR
NEXT
FOR i = 0 to 2
    INPUT switchA+i           ' same as INPUT 4+i, makes each pin 4,5 and 6 an input
    DEBUG DEC switchA(i),CR   ' same as DEBUG DEC in4(i),CR, displays each state
    OUTPUT ledA+i             ' makes each of the pins 7,8 and 9 and output
    ledA(i)=switchA(i)        ' same as out7(i)=in4(i)
NEXT

Obrázek 5: Schéma zapojení modulu vývojového kitu BASIC Stamp 1.

3. Programové smyčky a řídicí příkazy v PBasicu verze 2.x

PBasicu 2.0 a na něj navazujících verzích se repertoár řídicích příkazů poměrně značným způsobem rozšířil a navíc se u některých stávajících příkazů se poněkud změnila jejich syntaxe. V předchozí kapitole jsme si ukázali náhradu několika příkazů IF-THEN-GOTO jediným příkazem BRANCH. Syntaxe tohoto příkazu se v PBasicu 2.0 poněkud změnila, protože jsou využity jiné typy závorek. Sekvenci příkazů:

IF value = 0 THEN Case_0 ' when value is 0, jump to Case_0
IF value = 1 THEN Case_1 ' when value is 1, jump to Case_1
IF value = 2 THEN Case_2 ' when value is 2, jump to Case_2

…je možné v PBasicu 2.0 nahradit jediným příkazem BRANCH:

BRANCH value, [ Case_0, Case_1, Case_2 ]

Ovšem to je pouze kosmetická a vcelku nevýznamná úprava syntaxe. Mnohem důležitější jsou pro programátory nové typy programových smyček, které mohou ve svých programech použít. Především se jedná o smyčku typu DO-LOOP s podmínkou uvedenou na začátku či konci smyčky. Navíc může splnění podmínky zapříčinit opakování smyčky (modifikátor WHILE) či naopak opuštění smyčky (modifikátor UNTIL). Z tohoto hlediska se jedná o zcela univerzální nepočítanou programovou smyčku, viz též následující ukázky všech čtyř variant smyčky typu DO-LOOP. Připomeňme si, že pro tento nový typ programové smyčky nemusely být přidány žádné nové tokeny do generovaného bajtkódu, protože překladač generuje bajtkód pro smyčky pomocí již existujících tokenů pro příkazy IF a GOTO.

DO
    příkaz
    ...
    příkaz
LOOP WHILE podmínka
DO
    příkaz
    ...
    příkaz
LOOP UNTIL podmínka
DO WHILE podmínka
    příkaz
    ...
    příkaz
LOOP
DO UNTIL podmínka
    příkaz
    ...
    příkaz
LOOP

Následuje jednoduchý příklad použití tohoto typu programové smyčky:

reps VAR Nib           ' proměnná typu nibble (4 bity)
DO WHILE (reps < 3) ' test proveden před provedením těla smyčky
    DEBUG "*"          ' výpis textu na PC
    reps = reps + 1
LOOP

Obrázek 6: Rozměry vývojového kitu BASIC Stamp 2.

Do PBasicu 2.0 byl přidán ještě další typ řídicího příkazu nahrazujícího sekvenci příkazů IF-THEN. Jedná se o příkaz SELECT, který se podobá například řídicí struktuře switch známé z céčka či Javy, s tím, že bajtkód generovaný pro příkaz SELECT je mnohem efektivnější než v případě použití sekvence IF-THEN. Použití tohoto příkazu si můžeme ukázat na velmi jednoduchém programu pro hádání čísla uživatelem. Povšimněte si především použití klíčového slova TO pro zadání číselného intervalu:

cislo  VAR  WORD
pokusy VAR WORD
DEBUG "Myslim si cislo 0-100, zkus ho uhodnout"
DO
    DEBUGIN DEC cislo                       ' načtení čísla z PC
    pokusy = pokusy + 1
    SELECT cislo
        CASE < 30                             ' uživatel zadal menší číslo
            DEBUG "Moc malo, zkus zadat vetsi cislo", CR
        CASE > 54                             ' o mnoho větší číslo
            DEBUG "Prilis mnoho, zkus zadat mensi cislo", CR
        CASE 31 TO 41, 43 TO 53               ' dva rozsahy čísel
            DEBUG "Hmm, uz se blizis", CR
        CASE 42                             ' trefa
            DEBUG "Trefa po ", pokusy, " pokusech", CR
            STOP
    ENDSELECT
    DEBUG "Dalsi pokus: ", CR
LOOP

Obrázek 7: Rozměry vývojového kitu BASIC Stamp 2px24.

4. Komunikace z PBasicu s periferními zařízeními

V této kapitole budou vypsány příkazy PBasicu, které jsou určeny pro komunikaci osmibitového mikrořadiče PIC s periferními zařízeními. U každého příkazu je zapsána i verze BASIC Stampu, v níž či nichž je možné daný příkaz využít. Neexistence některých příkazů na různých typech tohoto vývojového kitu je logická – nemá například smysl použít příkaz COMPARE na mikrořadiči, který neobsahuje komparátor dvou analogových napětí atd. Povšimněte si, že některé vstupně/výstupní příkazy jsou samy o sobě interně implementovány pravděpodobně poměrně složitým způsobem (BUTTON, COUNT, SOUND atd.), takže znalost správného použití takových příkazů může programátorům velmi významným způsobem ulehčit vývoj. Jinými slovy – jediným PBasicovým řádkem lze nahradit až několik desítek řádků v assembleru. Vstupně/výstupní příkazy jsou podle své funkce rozděleny do několika skupin:

Ovládání vstupně/výstupních pinů:

Příkaz Verze Popis
INPUT 1, 2 vybraný pin se přepne do režimu vstupu
OUTPUT 1, 2 vybraný pin se přepne do režimu výstupu
REVERSE 1, 2 přepnutí režimu vybraného pinu
LOW 1, 2 nastavení pinu na logickou nulu
HIGH 1, 2 nastavení pinu na logickou jedničku
TOGGLE 1, 2 jednotkový skok na logickou nulu nebo jedničku
PULSIN 1, 2 měření doby trvání pulsu
PULSOUT 1, 2 vytvoření pulsu o specifikované délce
BUTTON 1, 2 čtení tlačítka s provedením debouncingu a popř. s imple­mentací autorepeatu
COUNT 2 počítání, kolik signálů přijde na vybraný pin za daný časový okamžik

Práce se synchronním a asynchronním sériovým portem:

Příkaz Verze Popis
SERIN 1, 2 vstup dat přes asynchronní sériový port
SEROUT 1, 2 výstup dat na asynchronní sériový port
SHIFTIN 1, 2 výstup dat na SIO
SHIFTOUT 1, 2 vstup dat ze SIO
OWIN 2px výstup dat na sběrnici 1-wire
OWOUT 2px vstup dat ze sběrnice 1-wire
I2CIN 2px podpora pro I2C, rychlost cca 80kbps, jsou použity piny SDA a SCL
I2COUT 2px vstup dat z I2C

Obrázek 8: Komunikace probíhající na sběrnici I2C, při níž je pomocí sedmi bitů vybráno jedno ze zařízení, které pracuje v režimu slave. Po sedmi bitech adresy je navíc přenesen jeden bit, kterým je určeno, zda bude zařízení typu „master“ data posílat či naopak přijímat. Každá osmice bitů (bajt, znak) je potvrzována, přenesení osmi bitů je tedy provedeno za devět hodinových cyklů (devátý cyklus slouží k přenesení potvrzovacího bitu – ACK).

Ovládání LCD přes paralelní port:

Příkaz Verze Popis
LCDCMD 2px poslání příkazu na LCD
LCDIN 2px čtení bajtu z LCD (jen pro některé typy)
LCDOUT 2px zápis bajtu na řadič LCD

Ovládání analogových vstupů a výstupů:

Příkaz Verze Popis
PWM 1, 2 výstup „analogové“ hodnoty s využitím PWM (šířkové modulace)
POT 1 čtení aktuální hodnoty potenciometru v rozmezí 5 až 50 kΩ
COMPARE 2px porovnání dvou analogových vstupů, na nichž může být napětí 0–5V

Obrázek 9: Sběrnice I2C s jedním zařízením typu Master a až (teoreticky) 127 zařízeními typu Slave.

Práce s časovačem a řadičem přerušení

Příkaz Verze Popis
PAUSE 1, 2 čekání 0 až 65535 milisekund
POLLWAIT 2px čekání na externí signál

Komunikace s PC

Příkaz Verze Popis
DEBU G 1, 2 poslání zprávy do PC (zobrazeno ve vývojovém prostředí)
DEBUGIN 2 čtení řetězce či čísla z PC (interaktivní vstup)

Generování zvuků

Příkaz Verze Popis
SOUND 1 generování čistého tónu nebo bílého šumu
FREQOUT 2 vytvoření jedné nebo dvou sinusových vln
DTMFOUT 2 generování telefonních tonů DTMF (dva sinusové průběhy), lze použít pro ovládání některých externích zařízení vybavených například dekodérem MT 8870, ve skutečnosti se sinusové průběhy vytváří pomocí PWM

Obrázek 10: Poslání jedné číslice po analogové lince pomocí dvojice sinusových vln zkombinovaných do jednoho „tónu“ DTMF.

5. Význam operátoru ** (Multiply High)

Programovací jazyk PBasic, v němž je, jak již víme z předchozí části tohoto seriálu, možné manipulovat s proměnnými a konstantami o šířce 4, 8 a 16 bitů, obsahuje většinu známých aritmetických a logických operátorů: součet, rozdíl, součin, podíl, výpočet zbytku po dělení, bitové posuvy a samozřejmě též bitové a logické operace typu AND, OR a XOR. Ovšem v repertoáru operátorů tohoto programovacího jazyka můžeme najít i dva poněkud neobvyklé operátory, které v ostatních programovacích jazycích v naprosté většině případů nejsou implementovány. První z těchto operátorů se zapisuje pomocí dvojice hvězdiček ** a nazývá se podle své funkce Multiply High. Tento operátor pracuje tak, že nejprve vynásobí své dva šestnáctibitové operandy a posléze vrátí nejvyšších šestnáct bitů 32bitového výsledku. To je rozdílné chování oproti operátoru *, jenž vrací dolních 16 bitů výsledku, což je korektní pouze při násobení dvou relativně malých celých čísel (u větších čísel dochází k přetečení). Následuje příklad použití tohoto operátoru:

SYMBOL value1 = W0        ' pojmenování paměťového místa v RAM
SYMBOL value2 = W1        ' dtto
value1 = $FDE8
value2 = value1 ** value1 ' výpočet druhé mocniny hodnoty 0xFDE8 a vrácení horních 16 bitů výsledku
DEBUG value2              ' výpis výsledku na PC

Obrázek 11: Další pohled na vývojový kit BASIC Stamp 2.

Zajímavé a v praxi mnohem důležitější je však fakt, že tento operátor lze použít pro vynásobení celého čísla konstantou nebo proměnnou menší než 1. Postačuje totiž reálnou konstantu, kterou chce programátor použít, vynásobit hodnotou 65536 a zaokrouhlený výsledek následně využít při výpočtech. Ve skutečnosti tedy můžeme konstantu použitou pro násobení považovat za číslo uložené v systému pevné řádové tečky umístěné za šestnáctým bitem, protože přesně tímto způsobem operátor ** pracuje – provede vynásobení dvou čísel a následně výsledek zdánlivě vydělí hodnotou 65536 (216):

SYMBOL Frac1 = 47554     ' = 0.72562 x 65536 (nutno provést ručně)
SYMBOL Frac2 = 43691     ' = 2/3 x 65536 (opět nutno provést ručně)
SYMBOL value = W0        ' pojmenování paměťového místa v RAM
value = 10000            ' naplnění hodnoty proměnné
value = value ** Frac    ' Multiply 10000 by 0.72562
DEBUG value              ' výpis výsledku na PC

Obrázek 12: Robot (koho jen připomíná? :-) řízený modulem BASIC Stamp.

6. Význam operátoru */ (Multiply Middle)

Druhým zvláštním a neméně užitečným operátorem dostupným v programovacím jazyce PBasic je operátor zapisovaný pomocí dvojice znaků */, který se nazývá Multiply Middle. Opět se jedná o operátor provádějící aritmetickou operaci násobení dvou šestnáctibitových čísel, ovšem */ vrací prostředních šestnáct bitů z 32bitového výsledku. Na první pohled možná někomu může tato operace připadat nedůležitá, ovšem v některých případech je velmi užitečná, protože je pomocí ní možné provádět vynásobení proměnné konstantou, která sice musí být menší než 256, ovšem může navíc obsahovat i desetinnou část. Operace x */ y (pro libovolnou dvojici šestnáctibitových konstant nebo proměnných x a y) totiž ve skutečnosti znamená provedení následujícího výpočtu: x*y/256, přičemž se jako výsledek výpočtu vrátí celé šestnáctibitové číslo (dělení konstantou 256 se samozřejmě neprovádí přímo, ale je způsobeno zanedbáním dolních osmi bitů výsledku).

Obrázek 13: Další robot, kterého si uživatelé mohou naprogramovat v PBasicu, protože je řízen modulem BASIC Stamp.

Pokud je například v nějakém výpočtu zapotřebí vynásobit hodnotu proměnné konstantou Π, lze pro tuto činnost použít operátor */ a konstantu 804, neboť platí, že int(Π×256)=804. Chyba vzniklá zanedbáním nižších cifer při reprezentaci čísla Π pomocí šestnáctibitové hodnoty s řádovou tečkou umístěnou za osmým bitem je v tomto případě menší než 0,1%. Podobným způsobem lze s využitím ** a */ realizovat i mnoho dalších výpočtů, které by se na výkonnější platformě pravděpodobně programovaly pro hodnoty typu float či double.

Obrázek 14: Vnitřní uspořádání robota vyfoceného na obrázku číslo 13.

7. Reprezentace úhlů a goniometrické funkce

Dalším problémem, se kterým se mohou programátoři používající BASIC Stamp a PBasic, který nepodporuje práci s hodnotami typu float ani double, setkat, je práce s úhly a goniometrickými funkcemi. PBasic obsahuje podporu pro běžné goniometrické funkce typu sin či cos, ovšem úhly používané jako parametry těchto funkcí nejsou reprezentovány v radiánech ani ve stupních, ale v takzvaných „binárních radiánech“ neboli „bradech“. Jde o celou kladnou osmibitovou hodnotu 0 až 255, jejíž vztah k úhlům je naznačen na následujícím obrázku.

Obrázek 15: Vztah mezi jednotkou „brad“ a úhlem na jednotkové kružnici. Na tomto obrázku je také naznačen způsob reprezentace výsledků goniometrických funkcí jako celých čísel v rozsahu –127 až 127 s doplněnými osmi bity ležícími za řádovou tečkou.

Jeden „brad“ zhruba odpovídá 1,4° a pro převod mezi těmito jednotkami lze použít operaci */ 360 (zde můžeme vidět jedno z pěkných použití výše popsaného operátoru */). Výsledkem funkce sin či cos je šestnáctibitové číslo v rozsahu –127 až 127 s doplněnými osmi bity, které leží za řádovou tečkou. Těchto spodních osm bitů lze samozřejmě v případě potřeby zanedbat. Jedním z důvodů této možná poněkud svérázné reprezentace souřadnic bodů ležících na jednotkové kružnici je to, aby bylo možné stejný formát souřadnic použít i pro operátor HYP a ATN. Operátor HYP dokáže vypočítat délku přepony pravoúhlého trojúhelníku pro zadané délky jeho odvěsen. Operátor ATN vypočte úhel vektoru zadaného dvojicí souřadnic (tj. arkustangens směrnice tohoto vektoru). U obou operátorů (skutečně se jedná o operátory zapisované mezi operandy!) se zadávají souřadnice jako celá čísla v rozsahu –127 až 127.

Obrázek 16: Význam parametrů operátorů HYP a ATN.

widgety

8. Vývojový kit Amicus – odpověď na Arduino?

V následující části seriálu o architekturách počítačů dokončíme popis aplikací osmibitových mikrořadičů PIC. Budeme se zabývat především popisem dalšího vývojového kitu, který se jmenuje Amicus. Tento vývojový kit je, podobně jako „konkurenční“ Arduino, jímž se zabývá paralelně běžící Martinův seriál, otevřenou platformou, kterou je možné programovat (samozřejmě kromě obligátního assembleru) v několika programovacích jazycích a pro níž je již navrženo a ověřeno mnoho různých zapojení a doplňků. Vzhledem k tomu, že například rozměry obou kitů jsou shodné, stejně jako jejich konstrukční uspořádání, je možné pro Amicus využívat i doplňky navržené původně pro Arduino, což byl záměr autorů – umožnit snadnou konstrukci různých elektronických zařízení i těm uživatelům, kteří chtějí či potřebují využít osmibitové mikrořadiče PIC.

Obrázek 17: Vývojový kit Amicus s mikrořadičem PIC. Tento vývojový kit byl inspirován kitem Arduino určeným pro mikrořadiče Atmel AVR.

9. Odkazy na Internetu

  1. Stránky firmy Microchip Technology (výrobce mikrořadičů PIC)
    http://www.mi­crochip.com/
  2. Výběr z různých modelů (osmibitových) mikrořadičů PIC
    http://www.mi­crochip.com/ste­llent/idcplg?Id­cService=SS_GET_PA­GE&nodeId=2661
  3. Řada (rodina) osmibitových mikrořadičů PIC 10
    http://www.mi­crochip.com/Pa­ramChartSearch/char­t.aspx?branchID=1009&mi­d=10&lang=en&pa­geId=74
  4. Řada (rodina) osmibitových mikrořadičů PIC 12
    http://www.mi­crochip.com/Pa­ramChartSearch/char­t.aspx?branchID=1001&mi­d=10&lang=en&pa­geId=74
  5. Řada (rodina) osmibitových mikrořadičů PIC 14
    http://www.mi­crochip.com/Pa­ramChartSearch/char­t.aspx?branchID=1008&mi­d=10&lang=en&pa­geId=74
  6. Řada (rodina) osmibitových mikrořadičů PIC 16
    http://www.mi­crochip.com/Pa­ramChartSearch/char­t.aspx?branchID=1002&mi­d=10&lang=en&pa­geId=74
  7. Další výběr z různých modelů mikrořadičů PIC
    http://www.mi­crochip.com/map­s/microcontro­ller.aspx
  8. PIC microcontroller (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/PIC_mi­crocontroller
  9. Mikrokontrolér PIC (Wikipedia CZ)
    http://cs.wiki­pedia.org/wiki/Mi­krokontrolér_PIC
  10. FLASHFORTH for the PIC18F and the dsPIC30F
    http://flashf­orth.sourcefor­ge.net/
  11. FlashForth
    http://www.sou­rceforge.net/pro­jects/flashfor­th
  12. Free Pic software tools
    http://softwa­repic.50webs.com/fre­esoft.html
  13. What is Amicus?
    http://www.pic­basic.org/pro­ton_lite.php
  14. Amicus FAQ
    http://www.my­amicus.co.uk/faq­.php?s=2e8d12e7f4c23e775­776f4916876354b&
  15. Microcontrollers development tools
    http://www.gnu­pic.dds.nl/
  16. gpsim (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/Gpsim
  17. gpsim home page
    http://gpsim.sou­rceforge.net/gpsim­.html
  18. The FreeRTOS Project
    http://www.fre­ertos.org/
  19. FreeRTOS (Wikipedia)
    http://en.wiki­pedia.org/wiki/Fre­eRTOS
  20. Serial EEPROM (93C46 / 93CS46) Routines
    http://www.pjrc­.com/tech/8051/se­rial-eeprom.html
  21. Great Microprocessors of the Past and Present (V 13.4.0)
    http://jbayko­.sasktelwebsi­te.net/cpu.html
  22. SPI interface tutorial
    http://www.best-microcontroller-projects.com/spi-interface.html
  23. Serial Peripheral Interface Bus
    http://en.wiki­pedia.org/wiki/Se­rial_Peripheral_In­terface_Bus
  24. EUSB to SPI bus Kit
    http://www.ei­dusa.com/Elec­tronics_Kits_E­USB_To_SPI_BUS­.htm
  25. SPI Block Guide V03.06, Freescale Semiconductor
    http://www.fre­escale.com/fi­les/microcontro­llers/doc/ref_ma­nual/S12SPIV3­.pdf
  26. What is SPI?
    http://www.fpga4fun­.com/SPI1.html
  27. SPI – A simple implementation
    http://www.fpga4fun­.com/SPI2.html
  28. Bit-banging
    http://en.wiki­pedia.org/wiki/Bit-banging
  29. Joint Test Action Group
    http://en.wiki­pedia.org/wiki/JTAG
  30. I2C
    http://en.wiki­pedia.org/wiki/I2C
  31. Seriál o programovacím jazyce Forth:
    seriál o programovacím jazyce Forth
  32. Display Data Channel
    http://en.wiki­pedia.org/wiki/Dis­play_Data_Chan­nel
  33. I2 Background
    http://www.mi­croport.tw/blog­new.php?blog_no­=7#theory
  34. PIC16F87X, 28/40-pin 8-Bit CMOS FLASH Microcontrollers
    Microchip Technology Inc.
    http://www.mi­crochip.com
Našli jste v článku chybu?
Vitalia.cz: Test dětských svačinek: Tyhle ne!

Test dětských svačinek: Tyhle ne!

DigiZone.cz: Ultra HD v praxi a v Portugalsku

Ultra HD v praxi a v Portugalsku

Lupa.cz: Patička e-mailu závazná jako vlastnoruční podpis?

Patička e-mailu závazná jako vlastnoruční podpis?

120na80.cz: Galerie: Čínští policisté testují českou minerálku

Galerie: Čínští policisté testují českou minerálku

Vitalia.cz: Voda z Vltavy před a po úpravě na pitnou

Voda z Vltavy před a po úpravě na pitnou

Lupa.cz: Proč jsou firemní počítače pomalé?

Proč jsou firemní počítače pomalé?

Měšec.cz: TEST: Vyzkoušeli jsme pražské taxikáře

TEST: Vyzkoušeli jsme pražské taxikáře

Podnikatel.cz: ČSSZ posílá přehled o důchodovém kontě

ČSSZ posílá přehled o důchodovém kontě

Podnikatel.cz: Letáky? Lidi zuří, ale ony stále fungují

Letáky? Lidi zuří, ale ony stále fungují

Vitalia.cz: Tesco nabízí desítky tun jídla zdarma

Tesco nabízí desítky tun jídla zdarma

Lupa.cz: Blíží se konec Wi-Fi sítí bez hesla?

Blíží se konec Wi-Fi sítí bez hesla?

DigiZone.cz: DVB-T2 ověřeno: seznam TV zveřejněn

DVB-T2 ověřeno: seznam TV zveřejněn

DigiZone.cz: Nova opět stahuje „milionáře“

Nova opět stahuje „milionáře“

DigiZone.cz: Parlamentní listy: kde končí PR...

Parlamentní listy: kde končí PR...

DigiZone.cz: Technisat připravuje trojici DAB

Technisat připravuje trojici DAB

Lupa.cz: Jak se prodává firma za miliardu?

Jak se prodává firma za miliardu?

DigiZone.cz: Wimbledon na Nova Sport až do 2019

Wimbledon na Nova Sport až do 2019

Podnikatel.cz: Udělali jsme velkou chybu, napsal Čupr

Udělali jsme velkou chybu, napsal Čupr

Vitalia.cz: Tradiční čínská medicína a rakovina

Tradiční čínská medicína a rakovina

Vitalia.cz: dTest odhalil ten nejlepší kečup

dTest odhalil ten nejlepší kečup