Texas Instruments LaunchPad

V únoru jsem začal studovat on-line kurz „UT.6.02x Embedded Systems – Shape the World“ na serveru edx.org. Na tomto serveru najdete řadu kurzů, které pořádají renomované univerzity. Z průběhu kurzu jsem byl velmi překvapen, jak je profesionálně připraven.

Tento konkrétní kurz je zaměřen na procesory ARM Cortex-M4 a jejich programování na nízké úrovni. Jen pro představu, jak vypadá blikání LED (procesor TM4C123GH6PMI, Texas Instruments):

#define GPIO_PORTF_DATA_R       (*((volatile unsigned long *)0x400253FC))
#define GPIO_PORTF_DIR_R       (*((volatile unsigned long *)0x40025400))
#define GPIO_PORTF_AFSEL_R     (*((volatile unsigned long *)0x40025420))
#define GPIO_PORTF_PUR_R       (*((volatile unsigned long *)0x40025510))
#define GPIO_PORTF_DEN_R      (*((volatile unsigned long *)0x4002551C))
#define GPIO_PORTF_LOCK_R       (*((volatile unsigned long *)0x40025520))
#define GPIO_PORTF_CR_R         (*((volatile unsigned long *)0x40025524))
#define GPIO_PORTF_AMSEL_R     (*((volatile unsigned long *)0x40025528))
#define GPIO_PORTF_PCTL_R       (*((volatile unsigned long *)0x4002552C))
#define SYSCTL_RCGC2_R         (*((volatile unsigned long *)0x400FE108))

#define LED 0x08

void PortF_Init(void);
void Delay(void);
void EnableInterrupts(void);

int main(void){
PortF_Init();
while(1){
   GPIO_PORTF_DATA_R = LED;
   Delay();
   GPIO_PORTF_DATA_R = 0x00;
   Delay();
}
}

void PortF_Init(void){
volatile unsigned long delay;
SYSCTL_RCGC2_R |= 0x00000020;
delay = SYSCTL_RCGC2_R;
GPIO_PORTF_LOCK_R = 0x4C4F434B;
GPIO_PORTF_CR_R = LED;
GPIO_PORTF_AMSEL_R = 0x00;
GPIO_PORTF_PCTL_R = 0x00;
GPIO_PORTF_DIR_R = LED;
GPIO_PORTF_AFSEL_R = 0x00;
GPIO_PORTF_DEN_R = LED;
}

void Delay(void){unsigned long volatile time;
time = 727240*200/91;
while(time){
   time--;
}
}

Tento kurz mě přivedl k vývojovým deskám LaunchPad společnosti Texas Instruments, protože je celý postaven na desce EK-TM4C123GXL .

Desek z rodiny LaunchPad je celá řada. Velmi mě zaujala deska MSP-EXP430G2, která je dodávána s 16-bitovým procesorem MSP430G2553 a MSP430G2452. Procesor je totiž vyměnitelný, podobně, jak je tomu u desek Arduino Uno. Navíc je možné tyto procesory objednat jako vzorek, tedy zdarma. Vyzkoušeno, do ČR dorazí cca během dvou dnů. Vlastní desku jsem kupoval v on-line obchodu Farnell. S doručením do druhého dne stála cca 470,- Kč včetně dopravy, která je 130,- Kč.

Protože nejsem žádný expert na nízkoúrovňové programování procesorů a výše uvedený kurz jsem dokončil s „odřenýma“ ušima, tak mě o zajímavosti desek LaunchPad přesvědčil projekt Energia. Tento projekt není nic jiného, než vývojové prostředí Arduino upravené pro programování desek z rodiny LaunchPad.

energia

Blikání LED je pak triviální:

#define LED RED_LED
void setup() {
  pinMode(LED, OUTPUT);
}

void loop() {
  digitalWrite(LED, HIGH);
  delay(1000);
  digitalWrite(LED, LOW);
  delay(1000);
}

K deskám LaunchPad je k dispozici celá řada rozšiřujících desek, označovaných jako BoosterPac. Systém je velmi podobný Arduino shields, ale není samozřejmě k dispozici tak velké množství rozšiřujících desek jako pro Arduino. Celkem se mi podařilo najít cca 70 BosterPacks. Desky z rodiny LaunchPad, zejména MSP-EXP430G2, mi přijdou jako velmi zajímavá alternativa k Arduinu. Jak cenově, tak způsobem programování.