/ STM8 FAQ |
Na tomto místě bude postupně přibývat seznam často kladených dotazů a typických problémů se kterými se setkám při výuce STM8.
- V prostředí STVD nejde spustit debug. - Pokus o spuštění debugu skončí chybovou hláškou gdi-error [40201]: can't access configuration database. ST-Link se ve windows hlásí správně (jako "flash disk") a čtení/programování čipu skrze STVP probíhá také korektně.
1. Spusťte příkazový řádek jako správce
2. Zadejte příkaz Regsvr32 /u "C:\Program Files (x86)\Common Files\Microsoft Shared\DAO\DAO350.DLL" (včetně uvozovek)
3. Zadejte příkaz Regsvr32 "C:\Program Files (x86)\Common Files\Microsoft Shared\DAO\DAO350.DLL"
- I2C komunikace (knihovou swi2c) končí chybou 0xAA (170)
Pokud se pokusíte nahrát do MCU nový program zrovna ve chvíli kdy po I2C čtete nějaká data ze slave zařízení tak se může stát, že se slave "zasekne". Slave obvod totiž v té chvíli ovládá SDA linku (aby vám mohl poslat data) a neuvolní ji dokud neodešle zbytek zprávy (kterou jste přerušili programováním MCU). Protože ovládá SDA linku (a očekává že bude moct svou zprávu dokončit) tak blokuje I2C sběrnici a Master (MCU) nemůže zahájit další komunikaci a to vyústí ke zmíněné chybě - knihovní funkce vrátí hodnotu 0xAA (170). Tento problém nastává tím častěji čím více I2C sběrnici provozujete. Pokud váš program třeba neustále něco čte ze slave zařízení, je šance že se trefíte zrovna doprostřed nějakého čtení vysoká a chyba se může stávat často. Možná řešení:
a) Po volání swi2c_init() zavolejte funkci swi2c_recover(). Ta se pokusí postupně generovat pulzy na SCK a sleduje kdy slave uvolní SDA linku (prostě "dokončí" přerušenou zprávu a slave se "uklidní").
b) Nahrajte nový program, zastavte ho ještě před zahájením I2C komunikace a "resetujte" slave obvod (odpojením a zapojením napájení)
c) Předcházet takové situaci tím že po I2C komunikujete jen když je to potřeba. Například pokud čtete stav RTC obvodu, stačí to v podstatě jednou za sekundu. V takovém případě je šance že se s programováním čipu trefíte zrovna doprostřed komunikace se pak pohybuje v řádu 1:1000.
- Pokus o přečtení programu nebo konfigurace v STVP z čínského kitu s STM8S103 ("Blue pill") skončí chybou "Can't communicate with the device" nebo "Device is protected".
Mikrokontroléry přichází z číny už naprogramované. Je v nich nahrátý program který bliká LEDkou. Ze mě záhadného důvodu je u nich zapnutá ochrana proti čtení. Pokus o čtení programu nebo konfigurace MCU skončí chybou a to si můžete mylně vyhodnotit jako že s čipem nelze komunikovat. Stačí v STVP otevřít kartu "Option bytes", nahoře vybrat kolonku "ROP" (Read Out Protection), nastavit ji na OFF a nahrát konfiguraci (Program->Current Tab). Tím se ochrana proti čtení vypne (a program v čipu se vymaže). Od tohoto okamžiku je spojení s čipem v pořádku a lze do něj zapisovat i z něj číst.
- Nevidím PWM signál na výstupu časovače (případně jinou funkci)
Funkce pinů nejsou pevné a mohou být remapované. Zkontroluj si zda signál na pinu kde ho očekáváš nepotřebuje remapovat, případně naopak zda není remapovaný na jiný pin. Remapování se provádí pomocí bitů AFR0 až AFR7 v STVP v kartě Option Bytes. Popisky u každého bitu jsou "samovysvětlujicí" a jednoznačně určují na kterých pinech které funkce budou. Rozklikni si text abys viděl všechny možnosti - pomůže to při orientaci.
Home
| V2.00 20.3.2024 /
| By Michal Dudka (m.dudka@seznam.cz) /