Obsah
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?
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
V 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 implementací 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.
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
- Stránky firmy Microchip Technology (výrobce mikrořadičů PIC)
http://www.microchip.com/ - Výběr z různých modelů (osmibitových) mikrořadičů PIC
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2661 - Řada (rodina) osmibitových mikrořadičů PIC 10
http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1009&mid=10&lang=en&pageId=74 - Řada (rodina) osmibitových mikrořadičů PIC 12
http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1001&mid=10&lang=en&pageId=74 - Řada (rodina) osmibitových mikrořadičů PIC 14
http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1008&mid=10&lang=en&pageId=74 - Řada (rodina) osmibitových mikrořadičů PIC 16
http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1002&mid=10&lang=en&pageId=74 - Další výběr z různých modelů mikrořadičů PIC
http://www.microchip.com/maps/microcontroller.aspx - PIC microcontroller (Wikipedia EN)
http://en.wikipedia.org/wiki/PIC_microcontroller - Mikrokontrolér PIC (Wikipedia CZ)
http://cs.wikipedia.org/wiki/Mikrokontrolér_PIC - FLASHFORTH for the PIC18F and the dsPIC30F
http://flashforth.sourceforge.net/ - FlashForth
http://www.sourceforge.net/projects/flashforth - Free Pic software tools
http://softwarepic.50webs.com/freesoft.html - What is Amicus?
http://www.picbasic.org/proton_lite.php - Amicus FAQ
http://www.myamicus.co.uk/faq.php?s=2e8d12e7f4c23e775776f4916876354b& - Microcontrollers development tools
http://www.gnupic.dds.nl/ - gpsim (Wikipedia EN)
http://en.wikipedia.org/wiki/Gpsim - gpsim home page
http://gpsim.sourceforge.net/gpsim.html - The FreeRTOS Project
http://www.freertos.org/ - FreeRTOS (Wikipedia)
http://en.wikipedia.org/wiki/FreeRTOS - Serial EEPROM (93C46 / 93CS46) Routines
http://www.pjrc.com/tech/8051/serial-eeprom.html - Great Microprocessors of the Past and Present (V 13.4.0)
http://jbayko.sasktelwebsite.net/cpu.html - SPI interface tutorial
http://www.best-microcontroller-projects.com/spi-interface.html - Serial Peripheral Interface Bus
http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus - EUSB to SPI bus Kit
http://www.eidusa.com/Electronics_Kits_EUSB_To_SPI_BUS.htm - SPI Block Guide V03.06, Freescale Semiconductor
http://www.freescale.com/files/microcontrollers/doc/ref_manual/S12SPIV3.pdf - What is SPI?
http://www.fpga4fun.com/SPI1.html - SPI – A simple implementation
http://www.fpga4fun.com/SPI2.html - Bit-banging
http://en.wikipedia.org/wiki/Bit-banging - Joint Test Action Group
http://en.wikipedia.org/wiki/JTAG - I2C
http://en.wikipedia.org/wiki/I2C - Seriál o programovacím jazyce Forth:
seriál o programovacím jazyce Forth - Display Data Channel
http://en.wikipedia.org/wiki/Display_Data_Channel - I2 Background
http://www.microport.tw/blognew.php?blog_no=7#theory - PIC16F87X, 28/40-pin 8-Bit CMOS FLASH Microcontrollers
Microchip Technology Inc.
http://www.microchip.com