Vážení a milí, jsem mrzutý, doufal jsem že více z vás najde a opraví chybu v LCD knihovně - ALE NIKDO!! Nikdo mi nezaslal svůj pokus o opravenou verzi LCD.c! Tak mám pochybnosti, zda se na tom opravdu něco zkoušíte naučit a protože bych nerad psal texty jen pro legraci králíkům, tak zveřejním tento díl a pokud přístup nebude aktivnější, tak si dám pauzu. V tomto díle popíšu, jako první na světě (hledal jsem marně nějaký jiný příklad), jak připojit k STM32 VL Discovery kitu normální PS2 klávesnici.
Úvod
Takže moderní klávesnice PS/2 má malý 6-pin DIN konektor a celkem 4 důležité dráty - GND, Ucc, CLK a DATA. Pokud vyhrabete někde starou klávesnici s velkým DIN (5-pin) konektorem, tak jí pochopitelně také můžete připojit. Bezva popis klávesnice zveřejnil Adam Chapweske před 11 roky zde a další dobrý popis který napsal Craig Peacock, naleznete zde.
Nejdříve konektor klávesnice. Konektor je samec, tedy má kolíky a ne díry. Pokud nemáte vlastní samičí konektor na připojení klávesnice, tak jednoduše konektor ucvakněte a pocínujte dráty tak, aby vám šly zastrčit do nepájivého pole. Připojíte ho následovně:
Ucc, tedy napájení - na 5V z USB konektoru
GND na zem, to není žádná věda
CLK, tedy vodič s hodinovým signálem - na pin PA1
DATA, tedy signálový vodič - na pin PA2
Klávesnice moc nežere, zkusil jsem jich několik. Největší spotřeba je na začátku, kdy probliknou LED a nabíjí se kondík u mcu klávesnice, ale nepřevýší to 30 mA, takže můžete být v klidu. Při normálním stavu čekání na klávesu mají moderní klávesnice spotřebu pod 1 mA, jedna starší co jsem zde vyhrabal, měla 5 mA.
Do klávesnice může mcu i posílat data a například rozsvítit LEDky, ale ne to se vykašlem, pro nás bude důležité hlavně přijímat co klávesnice vysílá. Ta je v normálním stavu ticho, takže nejdou hodiny ani data, oba vodiče jsou na +5V. Jakmile stisknete nějakou klávesu na klávesnici, tak klávesnice pustí hodiny a pak pošle 11 bitů (1 start bit - vždy nula, 8 datových bitů, 1 bit sudé parity a 1 stop bit - vždy jedna). Problém je, že scan kódy se nerovnají ASCII hodnotám, takže je musíme "přetransformovat" pomocí tabulky. Signál z klávesnice tedy vypadá takto:
Z toho vidíte že pro nás je důležitá sestupná hrana a při ní načteme co je na datové vodiči. Nejjednodušší způsob je vyvolání přerušení pomocí CLK signálu sestupnou hranou a postupné zpracování DATA signálu. Přesně tak jsem postupoval i já. Testovat to můžete například na klávese Q, která má scan kód 0x15, takže data přicházejí takto:
0(start) 10101000(kód) 0 (parita) 0(stop bit)
Program
Knihovnu pro LCD jsem nechal tak špatnou, jak byla - třeba se někdo najde, koho trkne jak jí "opravit". Knihovna pro PS2 keyboard načítá klávesy a strká je do bufferu, ze kterého si je tahá hlavním program v main.c pomocí volání keyboard_getchar(). Funkce buď pošle 0 (nulu), když nic v bufferu není, nebo pošle ASCII hodnotu stisknuté klávesy. Stisknutá klávesa se zobrazí na LCD. Pokud stisknete Enter, tak se obrazovka LCD vymaže a můžete zase psát od začátku. Stejně jako v předchozích dílech je využito TrueSTUDIO od Atollic s tou verzí knihoven a souborů, jakou máte po instalaci, abych začátečníky nestresoval nějakými přepisováními knihoven na aktuální verze.
Přerušení
Stejně jako v 13 dílu, kde jsme probírali přerušení, tak i zde je do stm32f10x_it.c "vsunuto" obsloužení přerušení.
void EXTI1_IRQHandler(void)
{
Preruseni_PS2();
}
Které pak vypadá následovně.
void Preruseni_PS2(void)
{
uint8_t pom;
if(EXTI_GetITStatus(EXTI_Line1) != RESET)
{
casPS2 = Cas(); // aktualizujeme cas posledniho preruseni
Když máte k STM32 VL Discovery kitu připojen LCD a klávesnici, tak už můžete konstruovat poměrně neomezeně projekty. Ladění LCD usnadní velmi výrazně a rovněž možnost vstupu libovolného znaku přes klávesnici je výhodná. Pro ověření většiny běžných projektů s těmito perifériemi mnohdy vystačíte. Klávesnicí si nasimulujete tlačítka vašeho projektu a na LCD sledujete chování. Alespoň já to tak dělám. Na stisk F1 si vytvoříte vlastní Debug rutinu, která bude postupně vypisovat proměnné, stavy GPIO, čítačů nebo vámi požadovaných hodnot. Klávesnice je určitě pohodlnější než IR dálkový ovladač, který nemá zdaleka tak spolehlivý stisk tlačítek.
Upozornění
Pozor - tato veze knihovny LCD obsahuje z didaktických důvodů chyby! (nekorektní inicializaci LCD a odporné řešení komunikace s portem)!
Be careful, this version of the LCD library includes for didactic purposes errors! (incorrect initialisation of LCD and awful solution of port controlling)!
Odkazy
STM32-VL DISCOVERY popis je zde. STM32-VL Discovery 2. (další popis, osobní poznatky) je zde. Začínáme s STM32 VL Discovery kitem naleznete zde. Začínáme s STM32 VL Discovery kitem _2. naleznete zde. Začínáme s STM32 VL Discovery kitem _3. naleznete zde. Začínáme s STM32 VL Discovery kitem _4. naleznete zde. Začínáme s STM32 VL Discovery kitem _5. naleznete zde. Začínáme s STM32 VL Discovery kitem _6. naleznete zde. (blikání LED) Začínáme s STM32 VL Discovery kitem _7. naleznete zde. (ladění) Začínáme s STM32 VL Discovery kitem _8. naleznete zde. (využití SysTick) Začínáme s STM32 VL Discovery kitem _9. naleznete zde. (změna CLK) Začínáme s STM32 VL Discovery kitem 10. naleznete zde. (kontaktní pole) Začínáme s STM32 VL Discovery kitem 11. naleznete zde. (PWM) Začínáme s STM32 VL Discovery kitem 12. naleznete zde. (watchdog) Začínáme s STM32 VL Discovery kitem 13. naleznete zde. (externí přerušení) Začínáme s STM32 VL Discovery kitem 14. naleznete zde. (LCD) Začínáme s STM32 VL Discovery kitem 15. naleznete zde. (ADC) Začínáme s STM32 VL Discovery kitem 16. naleznete zde. (Teplotní čidlo)
Referenční manuál k STM32F100 v pdf si můžete stáhnout zde. (cca 5,6 MB) Tento RefMan je pro VL typ mcu! Datasheet pro VL obvody si můžete stáhnout zde. The Insider's Guide to the STM32 ARM® based Microcontroller (Hitex) si můžete stáhnout zde. The Definitive Guide To The ARM Cortex M3 si můžete stáhnout zde.
gnat 24/05 14:28 btw mi to nevychází ani pro těch 75A nijak pěkně
gnat 24/05 14:27 pako: njn to je z toho, že člověk nečte poznámky. Vidím: "Continuous Drain Current, V GS @ 10V" a až na druhém konci datasheetu je poznámka pod čarou, že je to calculated pro maximální povolený trátový výkon a že package limitation is 75A
mojerena 24/05 11:39 Nová výbava do laboratoria aneb pohádka o jednom ESR metru - 3 měsíce trvalo, než došel balík...... odkaz
Gotrek 24/05 09:12 Netušíte někdo kde sehnat hliníkovou tenkostěnou uzavřenou trubičku na výrobu teplotního čidla. Něco jako je toto: odkaz
pako 24/05 00:19 Tech 150A je samozrejme jen spickove :), slusny vyrobci pisou "package limited" odkaz
gnat 23/05 22:45 Dospěl jsem k řádově stejnému výsledku. Nechápu tu drzost výrobců uvést to jako katalogový údaj.
jeso 23/05 16:46 gnat: mno mě to vychází 990K za 1s :-)
pako 23/05 16:42 Taky jsem se shanel po tlustsi Cu vrstve a nakonec se ukazalo, ze obycejne pocinovani tlustou vrstvou to vyresilo ...
krepa 23/05 13:28 No a neni tam "de-rating curve" ? Tedy ze podle teploty okoli se snizuje maximalni proud (vykonova ztrata)
gnat 23/05 12:44 sakra asi něco počítám blbě, podle mých výpočtů se nožičky TO220 při povolených 150A musejí prostě roztéct.
gnat 23/05 12:35 Aha propočítal jsem to pro jistotu ještě pro teplotu okolí 35 stupňů a 105um bude lepší. Nepotřebuju toho moc, cca. 2dm2
gnat 23/05 12:31 Nevíte kde rozumně sehnat 70um Cuprextit ?
maci 23/05 09:31 CNC: po roznych mailoch je cena 800 EUR bez PC, 1000 EUR s PC. Neposielajte vyssie ponuky, ten kto pvry zaplati toho bude. Dakujem za pochopenie, nechceli sme robit z toho drazbu.