Nové články

Můj cíl je napsat alespoň jeden smysluplný článek v průběhu 14ti dnů. Bohužel jsem se na začátku února válel týden v nemocnici a pak 3 týdny doma, takže teď doháním to, co jsem zameškal v práci a nemám čas na zábavu.

V nejbližší době zkusím napsat něco o jednom z těchto témat:

  • logický analyzátor za pár pětek s grafickým displejem a podporou SPI, I2C, 1-Wire, IR (RC-5, RC-6, pulse/space modulation)
  • bezdrátový přenos dat pro domácí automatizaci s použitím eZ430-RF2500 a/nebo EasyBee
  • přenos dat mezi MCU a telefonem s Androidem
Posted in Nezařazené | Leave a comment

AVR – odstranění nepoužitého kódu

Pokud se vám nedaří dostat program do AVR kvůli tomu, že má použitý čip málo FLASH, přesvědčte se, že máte zapnuto odstraňování nepoužitého kódu. Standardně jsou totiž  tyto volby v AVR Studiu vypnuté.

Funkce, které jsou obsaženy ve zdrojových souborech se do výsledného kódu linkují bez ohledu na to, zdali je voláte, nebo ne a zabírají drahocenné místo. K jejich odstranění použijte následující volby v okně Custom Options.

All files: -ffunction-sections
Linker Options: -Wl,-gc-sections

Zdroj: http://old.nabble.com/how-to-remove-unused-code–td15548009.html

Posted in AVR | Tagged | Leave a comment

1-Wire Slave pro AVR

V příloze je zdrojový soubor v C, pomocí kterého můžete (pokud doplníte podporu konkrétních příkazů) do vašeho zařízení s AVR, přidat podporu protokolu 1-Wire.

1-Wire Slave

Užitečné odkazy

Pro případné dotazy použijte prosím link Napsat komentář.

Posted in AVR | Tagged , | Leave a comment

stm32flash

Pokud potřebujete nahrát program do STM32 a nevyhovuje vám aplikace Flash Loader Demo nebo pracujete v Linuxu, můžete použít aplikaci stm32flash. Ta umí nahrát program přes sériový port pomocí standardního boot loaderu. V současné verzi (únor 2011) má několik drobných chyb viz. http://code.google.com/p/stm32flash/issues/list, ale i tak je velmi dobře použitelná a to i na Windows!

Posted in STM32 | Tagged , , , , | Leave a comment

Nejlevnější USB programátor (nejen) pro Atmel AVR

Pokud chcete dostat program do mikrořadiče z rodiny AVR potřebujete k tomu nějaký programátor. Tedy zařízení, které připojíte na jedné straně do počítače a na druhé do tzv. ISP konektoru na desce s AVR případně pomocí vodičů na piny AVR umístěného v univerzální desce apod. Programátorů AVR existuje  spousta od jednoduchých na paralelní port přes sofistikované, připojované na RS-232 nebo USB. Ty první nepoužijete, pokud používáte notebook (nemá většinou paralelní ani sériový port), ty druhé pak kvůli jejich závratné ceně. Pokud hledáte nějakou alternativu a navíc jste líní něco stavět, zkuste tento kabel: http://cz.farnell.com/ftdi/ttl-232r-3v3/cable-usb-to-ttl-level-seri-converter/dp/1329311

Aktuální cena v době psaní tohoto článku (leden 2011) je cca 380 Kč!

Jak to funguje?
Stáhnete si upravenou verzi avrdude, která umožňuje tzv. bitbang u obvodů FTDI. Na vodiče připojíte vhodný konektor podle požadovaného ISP (buď 2×3 nebo 2×5) a můžete vesele programovat. Vyrábějí se i alternativy bez konektorů případně bez kabelů. Najdete je zde: http://www.ftdichip.com/Products/Cables/USBTTLSerial.htm

Samozřejmě, že se použití neomezuje pouze na MCU od Atmelu. Jelikož jde primárně o převodník USB/RS-232 v TTL úrovních, můžete ho např. použít i pro nahrávání programu přes boot loader u STM32.

Kompletní návod a instalační soubory naleznete zde: http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html

Užitečné odkazy

Posted in AVR, STM32 | Tagged , , , | Leave a comment

AVR

Informace o AVR jsou na tomto webu vyhledávány nejčastěji. Je to tím, že jsem dříve napsal sérii článků o implementaci protokolu 1-Wire v assembleru pro AVR. Po přechodu na WordPress jsem jí ještě nepřevedl ze starého serveru a spíš uvažuji o tom, že napíšu nový článek o implementaci 1-Wire v C.

Proč v dnešní době používat AVR?
S AVR jsem začal pracovat někdy v 90tých letech minulého století. Vyhovovala mi relativně  snadná dostupnost (pár typů), cena, přepisovatelná paměť a to, že jsem byl schopen sám postavit programátor s 3 odpory na paralelní port. S výjimkou toho programátoru platí ostatní argumenty i dnes. Nicméně, pro náročnější aplikace volím poslední 2 roky čipy STM32. Zejména proto, že mají JTAG a USB. AVR je právě v této chvíli (leden 2011) “dotahují” svojí novou rodinou U2/U4, která už má USB také. Abych odpověděl jednoznačně na otázku v nadpisu: dle mého názoru se AVR hodí všude tam, kde jde o jednoduchou funkci (nepotřebujete složité ladění přes JTAG), je tlak na cenu vybavení pro vývoj (IDE, programátor/debugger) nebo jsou požadovány extrémně malé rozměry (ATtiny10, 13, 15 apod.).

Pokud máte nějaký dotaz či připomínku k tématu AVR, použijte prosím diskuzi.

Posted in AVR | Tagged , | Leave a comment

USB (VCP) bootloader pro STM32

Pokud navrhujete USB zařízení s STM32F102 či STM32F103 budete pravděpodobně potřebovat nějaký způsob, jak do něj nahrávat nové verze programu (firmware).

Jednou z možností je použití interního bootloaderu přístupného na USART0 po nastavení vysoké úrovně na pinu BOOT0 (+ nízké úrovně na pinu BOOT1). Další možností je použití JTAG. Možnost nahrát program přímo pomocí USB mají pouze čipy z rodiny connectivity line.

V tomto článku najdete postup, jak programovat přes USB všechny čipy STM32 s podporou USB (především STM32F102 a STM32F103).

Protokol standardního bootloaderu, přístupného přes USART0, popisuje AN3155 (USART protocol used in the STM32™ bootloader). Pokud se zařízení připojené k USB chová jako virtuální COM port (VCP), může použít stejný protokol a přesně to VCP bootloader dělá. Můžeme použít stejný obslužný program pro oba typy bootloaderu. Rozdíl bude pouze v čísle portu, kterým budeme na PC komunikovat s USB zařízením.

Pro nahrání programu můžeme ve Windows použít aplikaci “Flash Loader Demo” přímo od společnosti STMicroelectronics. Pokud chcete nahrávat program z Linuxu můžete použít aplikaci stm32flash, které je věnován samostatný článek.

Použití
Po připojení napájení se vždy spustí bootloader a čeká předem nastavenou dobu (standardně 15 sec) na zahájení komunikace z PC. Není tedy potřeba zkratovat vstupní pin MCU proti zemi jako u standardního bootloaderu. Pokud není navázána komunikace, spustí se (dříve nahraná) aplikace.

Omezení
VCP bootloader zabírá cca 10 KB FLASH. Cca 2 KB představuje vlastní bootloader, 8 KB je virtuální COM port. Bootloader je uložen na začátku FLASH a aplikace musí být umístěna až za něj. Zároveň jsou použity 3 KB SRAM (2 KB buffery pro VCP, 1 KB struktury pro bootloader).

Aplikace určená pro VCP bootloader tedy musí počítat s obsazenou FLASH a
případně (podle způsobu použití) i SRAM.
Naštěstí lze linkeru jednoduše nastavit začátek použité FLASH a SRAM. V našem
případě bude FLASH začínat na adrese 0×08002800 a SRAM na adrese 0x20000C00.

Takto upravený program můžeme nahrát do MCU. Pokud nenastavíme začátek
FLASH, odmítne bootloader program uložit – přepsal by tím sám sebe.

U nejmenších čipů jako je např. STM32F103C6, který má 32 KB FLASH, obsadí bootloader téměř 1/3 FLASH. Je tedy potřeba optimalizovat využití FLASH. Pokud bude program používat (stejně jako bootloader) VCP, bude ve FLASH uložen kód pro obsluhu VCP 2x – jednou v bootloaderu a jednou v programu. Pro tento případ umožňuje VCP bootloader tzv. dynamickou vazbu, která funguje obdobně jako DLL ve Windows.
Při inicializaci knihovny pro VCP se zjistí adresy funkcí obsažené v bootloaderu a ty se pak volají z programu. Tímto způsobem se uspoří cca. 8 KB FLASH. Program ale musí mít nastaven odpovídající začátek SRAM (viz. výše), aby nepřepisoval paměť používanou VCP.

Rychlost programování
Rychlost je omezena především rychlostí zápisu do FLASH. Rychlost přenosu dat přes USB dosahuje s maximální velikostí bufferů cca 600 kbps.

V připojeném archivu najdete zdrojové soubory, projekt pro CrossWorks a dva stupidní příklady. V případě komplikací s překladem mě prosím kontaktujte.

Posted in STM32 | Tagged , , | 1 Comment

Vítejte

Na této stránce naleznete informace o mých projektech a jak by měl napovědět horní detail plošného spoje, všechny se týkají mikrořadičů a HW.

Aktuálně pracuji na přechodu z původního proprietárního systému na WordPress, ale nechci, pokud možno, kopírovat celý původní obsah serveru. Část podle potřeby zkopíruji, ale rád napíšu i něco nového, na témata, která mě i Vás (jinak by jste tu nebyli) zajímají.

Nechci obsahem tohoto webu konkurovat např. serverům mcu.cz nebo pandatron.cz apod. Chci se věnovat několika málo tématům a rozpracovat je do hloubky.

V této chvíli to jsou mikrořadiče AVR a STM32, domácí automatizace, jednoduché konstrukce pro výuku práce s MCU, Embedded Linux a jeho alternativy. Jestli budou i nějaké další, záleží na vás.

Toto stránku prosím berte i jako místo pro vaše dotazy a připomínky – vkládejte sem prosím své komentáře.

Posted in Nezařazené | Leave a comment