První Pico krůčky v C/C++

První Pico krůčky v C/C++

Máte před sebou Raspberry Pi Pico a nevíte, jak začít? Začněte tady! Názorně si tu ukážeme, jak Pico oživit, jak se do něj připojit, a jak rozblikat vestavěnou LED kontrolku.

Raspberry Pi Pico

Pico je jednočipový počítač založený na mikrokontroléru RP2040. Oba, čip i celá deska, jsou od společnosti Raspberry Pi. Stejně jako jeho starší sourozenci z rodiny Raspberry Pi je i Pico snadno přístupný a široce dostupný kus výpočetní techniky, který se hodí ne jen ke vzdělávání, ale i domácím kutilům a do průmyslu.

Rychlá instalace C/C++ SDK

C je nízkoúrovňový, kompilovaný, relativně minimalistický programovací jazyk.

C++ je rozšířením jazyka C. Podporuje více programovacích stylů (paradigmat) jako je procedurální programování, objektově orientované programování a generické programování.

Protože Raspberry Pi Pico budeme v tomto článku ovládat z Raspberry Pi 4B nebo Raspberry Pi 400, můžeme použít instalační skript. Stáhneme si ho následujícím příkazem:

$ git clone git@github.com:raspberrypi/pico-setup.git

Nejprve musíte mít nainstalovaný Git: sudo apt install git

Skript spustíme dalším příkazem:

$ pico-setup/pico_setup.sh

Skript…

  • vytvoří složku s názvem pico,
  • nainstaluje potřebné závislosti,
  • stáhne pico-sdk a pico-examples,
  • definuje PICO_SDK_PATH v souboru ~/.bashrc,
  • zkompiluje příklady blink a hello_world v pico-examples/build/blink a pico-examples/build/hello_world,
  • stáhne a zkompiluje OpenOCD (pro podporu debugování),
  • stáhne a nainstaluje Visual Studio Code,
  • nainstaluje potřebná rozšíření pro Visual Studio Code a
  • nastaví Raspberry Pi UART pro použití s Raspberry Pi Pico.

Aby se projevila konfigurace UART, musíme Raspberry Pi restartovat:

$ sudo reboot

Jakmile se Raspberry Pi restartuje, můžeme už v nabídce „Programování“ najít Visual Studio Code a začít programovat.

„Hello World“ v jazyce C

„Hello World“ je typicky první program pro seznámení se s pravidly a funkcemi nového programovacího jazyka, v tomto případě jazyka C.

Sestavení programu hello_world

Program hello_world je součástí příkladů a instalační skript nám ho už sestavil, takže ho najdeme v v adresáři pico-examples/build/hello_world. Tady je úryvek kódu:

10 int main() {
11    stdio_init_all();
12    while (true) {
13        printf("Hello, world!\n");
14        sleep_ms(1000);
15    }
16    return 0;
17 }

Popis sestavení programu hello_world najdete v dokumentaci na str. 13.

Načtení programu hello_world

Nejjednodušší metodou načtení softwaru na Raspberry Pi Pico je přetažení sestaveného souboru s programem přes USB kabel do integrované flash paměti.

  • Stikneme a držíme tlačítko BOOTSEL (aby se Pico přepnulo do režimu USB Mass Storage),
  • pomocí micro USB kabelu připojíme Raspberry Pi Pico k řídícímu Raspberry Pi
  • a až se v řídícím počítači objeví připojený disk pojmenovaný RPI-RP2, tlačítko tlačítko BOOTSEL pustíme.
  • Na disk RPI-RP2, což je flash paměť integrovaná v Pico, přesuneme soubor hello_usb.uf2 ze složky pico-examples/build/hello_world.

Pico se odpojí, restartuje na spustí nahraný program.

Načítání programu pomocí režimu USB Mass Storage je skvělé, pokud víte, že váš program bude fungovat hned napoprvé, ale pokud vyvíjíte něco nového, je pravděpodobné, že jej budete chtít ladit. Potom je lepší progam načíst pomocí rozhraní Serial Wire Debug, viz Kapitola 5. Kromě načítání softwaru vám totiž SWD umožňuje nastavit zarážky, zkontrolovat proměnné a zkontrolovat obsah paměti.

Zobrazení výstupu programu hello_world

Program hello_usb.uf2 posílá text na USB, takže abychom si ho mohli přečíst, musíme se z terminálu připojit přes USB k Raspberry Pi Pico.

Když máme Raspberry Pi Pico připojené přes USB přímo k řídícímu Raspberry Pi, text se zobrazí po instalaci a spuštění programu minicom.

Instalace minicom:

$ sudo apt install minicom

Spuštění minicom:

$ minicom -b 115200 -o -D /dev/ACM0

V tuto chvíli by se nám měl ukázat nápis Hello, world!.

Blikající LED v jazyce C

Blikající LED obvykle prvním programem na vyzkoušení hardwaru. Naučit se, jak rozblikat LED, nás dostane na půli cesty kamkoli. Na Raspberry Pi Pico je vestavěná LED připojená k výstupu RP2040 č. 25.

Sestavení programu blink

Program blink, které rozbliká LED je součástí příkladů a instalační skript nám ho už sestavil, takže ho najdeme v adresáři pico-examples/build/blink. Tady je úryvek kódu:

 9 int main() {
10 const uint LED_PIN = 25;
11 gpio_init(LED_PIN);
12 gpio_set_dir(LED_PIN, GPIO_OUT);
13 while(true) {
14 gpio_put(LED_PIN, 1);
15 sleep_ms(250);
16 gpio_put(LED_PIN, 0);
17 sleep_ms(250);
18 }
19 }

Popis sestavení programu blink najdete v dokumentaci na str. 8.

Načtení programu blink

Nejjednodušší metodou načtení softwaru na Raspberry Pi Pico je přetažení sestaveného souboru s programem přes USB kabel do integrované flash paměti.

  • Stikneme a držíme tlačítko BOOTSEL (aby se Pico přepnulo do režimu USB Mass Storage),
  • pomocí micro USB kabelu připojíme Raspberry Pi Pico k řídícímu Raspberry Pi
  • a až se v řídícím počítači objeví připojený disk pojmenovaný RPI-RP2, tlačítko tlačítko BOOTSEL pustíme.
  • Na disk RPI-RP2, což je flash paměť integrovaná v Pico, přesuneme soubor blink.uf2 ze složky pico-examples/build/blink.

Pico se odpojí, restartuje na spustí nahraný program – rozbliká se LED kontrolka.

Kam dál?

Teď, když máme Pico zapojené a rozblikané, můžeme se pustit do něčeho složitějšího. Pro pokračování cestou C/C++ si stáhněte Getting Started with Raspberry Pi Pico. Můžete se v něm rovnou posunout na stránku 15. Pokud Vás zajímá, jak to samé vypadá v jazyce MicroPython, pokračujte článkem První Pico krůčky v MicroPython.

Podobné příspěvky

Napsat komentář: pavel Zrušit odpověď na komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

6 Komentářů

  1. Postupoval jsem podle dokumentace – „As we did for the previous „Blink“ example, change directory into the hello_world directory inside the pico-examples tree, and run make.“ Když se o to ale pokusím, dostanu „no targets specified and no makefile found“.
    Kdyby mi někdo věděl poradit, bylo by to fajn, díky.