Duela urte batzuk Milanderen errusiar mikrokontrolagailuak ezagutu nituen. 2013a zen, ingeniariek 2008-2015erako "Oinarri elektronikoen eta irrati-elektronikaren garapena" Helburu Federaleko Programaren lehen emaitzak eztabaidatzen ari zirenean. Garai hartan, K1986BE9x kontrolatzailea (Cortex-M3 core) jada kaleratua zen, eta 1986BE1T kontrolatzailea (Cortex-M1 core) agertu berria zen. Plastikozko zorroan, LQFP-144, K1986BE1QI (aviazioa) izendapena zuen dokumentazioan, eta txipan bertan MDR32F1QI izendapena. Fabrikatzailearen webgunean "avia" atzizkia du, hegazkingintzarako berariazko interfazeak dituelako (ARINC 429, MIL_STD_1553).
Harrigarria bada ere, kontrolagailu hauek banatzeko garaian Milander enpresak arazketa-kit eta azpierrutinen liburutegi bat prestatu zituen periferikoekin lan egiteko, "baina liburutegiaren zuzentasunari buruzko berme edo betebehar gehigarririk gabe". Liburutegia STMicroelectronics-en Standard Peripheral Library-ren antzekoa da. Oro har, Cortex-M nukleoan eraikitako ARM kontrolagailu guztiek komunean asko dituzte. Hori dela eta, Errusiako kontrolatzaile berriekin ezagutzea azkar joan zen. Eta markako arazketa-kitak erosi zituztenentzat, laguntza teknikoa eman zen erabileran.
1986BE1T mikrokontrolagailurako arazketa-kit, Β© Milander
Hala ere, denborarekin, mikrozirkuitu eta liburutegi berrien "haurtzaroko gaixotasunak" agertzen hasi ziren. Firmwarearen proba-adibideek arazo ikusgarririk gabe funtzionatu zuten, baina aldaketa esanguratsuekin, hutsegite eta akatsak gertatu ziren. Nire praktikako lehen "enara" CAN kontrolagailuaren funtzionamenduaren hutsegite ulertezinak izan ziren. Urtebete beranduago, moduluarekin arazo bat aurkitu zen 1986BE1T (aviazio) errebisio goiztiar baten kontrolagailuan.
Ezaugarri desatsegina zen akatsak lantzea eta aurre egitea beharrezkoa zela ez arazketa-plaketan, baizik eta serieko fabrika ekoizteko aurreikusita zeuden gailuen prototipoen plaketan. Normalean ez zegoen ezer JTAG konektorea izan ezik. Analizatzaile logiko batekin konektatzea zaila eta deserosoa zen, eta normalean ez zegoen LED edo pantailarik. Hori dela eta, nire arazketa-taula sortzeko ideia agertu zitzaidan buruan.
Alde batetik, markako arazketa-kitak zeuden merkatuan, baita Zelenograd-eko LDM-Systems konpainiaren taula zoragarriak ere. Bestalde, produktu horien prezioak ikaragarriak dira, eta hedapen-txartelik gabeko oinarrizko funtzionaltasunak ez ditu itxaropenak betetzen. Soldatutako kontrolagailu bat eta pin konektore bat duen plaka bat ez zait interesatzen. Eta taula interesgarriagoak garestiak dira.
Garapen-plaka MILANDR LDM-HELPER-K1986BE1QI-FULL, Β© LDM Systems
Milander konpainiak prezioen politika eta marketin berezia ditu. Beraz, mikrozirkuitu batzuen doako laginak lor daitezke, baina pertsona juridikoentzat bakarrik dago eskuragarri eta bilaketa burokratiko batekin lotuta dago. Oro har, metal-zeramikazko kaxa bateko mikrozirkuituak urrezkoak dira zentzu literal eta figuratiboan. Adibidez, 1986BE1T kontrolagailu batek 14 eta 24 mila errublo balio du Moskun. 1645RU6U memoria estatikoko txipak 15000 errublotik aurrera balio du. Eta hau da produktu guztien prezioen eskaera. Ondorioz, gobernu-aginduak dituzten ikerketa-institutu espezializatuek ere dirua aurrezten dute eta prezio horietatik urruntzen dute. Erabilera zibilerako plastikozko kaxa bateko mikrozirkuituak nabarmen merkeagoak dira, baina ez daude hornitzaile ezagunengandik eskuragarri. Gainera, plastikozko kaxa bateko mikrozirkuituen kalitatea, iruditzen zait, "urrezkoak" baino okerragoa da. Adibidez, ezin nuen K1986BE1QI kontrolagailua exekutatu 128 MHz-n, flash latentzia-parametroa handitu gabe. Aldi berean, kontrolagailu honen tenperatura 40-50C-ra igo zen. Baina 1986BE1T ("urrea") kontrolagailua 128 MHz-n hasi zen ezarpen gehigarririk gabe eta hotza mantendu zen. Benetan ona da.
"Urrezko" mikrokontroladorea 1986BE1T, (c) Milander
Zortea izan nuen plastikozko kaxa batean mikrokontrolagailu bat LDM Systems-en txikizkako salmentan eros daitekeelako eta plaka-diagrama guztiak doan eskura daitezke. Txarra da webgunean kontrolagailuaren argazkian hau 4ko 2014. berrikuspena dela dioen marka bat ikus daitekeela, hau da. akatsekin. Denbora luzez pentsatu nuen erosi edo ez erosi. Hainbat urte horrela pasatu ziren...
Arazte-taula bat sortzeko ideia ez da inon desagertu. Pixkanaka, baldintza guztiak osatu eta dena taula batean nola jarri pentsatu nuen, trinkoa eta garestia ez izateko. Aldi berean, falta ziren osagaiak txinatarrei eskatu nizkion. Ez nuen presarik - dena egin nuen niretzat. Txinako hornitzaileak oso aldrebesak dira - gauza bera eskatu behar izan nuen leku ezberdinetatik behar nuen guztia lortzeko. Gainera, memoria txip batzuk erabili ziren, itxuraz hautsitako gailuetatik soldatuta. Hau itzuli zitzaidan geroago.
Milander K1986BE1QI (airea) mikrokontrolagailu bat erostea ez da lan erraza. Chip and Dip denda berean, "Eskatu beharreko elementuak" atalean, K1986BE92QI bakarrik aurkitu nuen 740 errublotan, baina ez zitzaidan egokitu. Aukera bakarra LDM-Systems-en berrikuspen berri bat erostea da 2000 errublotan. Beste inon ordezkorik aurkitu ezin nuenez, nuena erostea erabaki nuen. Nire sorpresa atseginerako, 2018ko abenduan fabrikatutako kontrolagailu berri bat saldu zidaten, 6+ berrikuspena (1820). Baina guneak oraindik argazki zahar bat dauka, eta idazteko unean kontrolagailua ez dago erabilgarri...
Mikrokontroladorea K1986BE1QI (aviazioa) ontzi teknologikoan, (c) egilearen argazkia
Nire arazketa-taularen ezaugarri tekniko nagusiak MDB1986 honako hau:
- arazte-programatzailea integratua, J-Link eta CMSIS-DAP-ekin bateragarria;
- memoria estatikoa 4Mbit (256k x 16, 10 ns);
- flash memoria txipa 64Mbit, Winbond 25Q64FVSIG;
- RS-232 interfaze-hartzailea RTS eta CTS lerroekin;
- Ethernet, USB, CAN interfazeak eta konektoreak;
- MAX7 7221 segmentuko pantaila kontrolatzailea;
- MKIO (MIL_STD_1553) eta ARINC429-ekin lan egiteko pin konektorea;
- fototransistorea Everlight PT17-21C;
- bost koloretako LED, berrezarri botoia eta erabiltzaile bi botoi;
- USB atakaren elikadura 5 voltiokoa da;
- Zirkuitu inprimatuaren neurriak 100 x 80, mm
STM-Discovery serieko plakak gustatu zaizkit, programatzaile-arazketa bat dutelako - ST-Link. Markako ST-Link-ek STMicroelectronics-eko kontrolagailuekin bakarrik funtzionatzen du, baina duela urte pare bat posible izan zen ST-Link-en firmwarea eguneratzea eta SEGGER J-Link OB (on-board) araztailea eskuratzea. Legez, arazte hori STMicroelectronics plakekin soilik erabiltzeko muga bat dago, baina, egia esan, potentziala ez da mugatua. Horrela, J-Link OB bat edukita, programatzaile-arazketa bat izan dezakezu arazketa-taulan. Kontuan izan dut LDM-Systems produktuek CP2102 (Usb2Uart) bihurgailua erabiltzen dutela, zeina soilik flash daitekeena.
STM32F103C8T6 mikrokontrolagailuak, errealak eta ez hain errealak, (c) Egilearen argazkia
Beraz, beharrezkoa zen jatorrizko STM32F103C8T6 erostea, jabedun firmwarea ez baita behar bezala funtzionatuko klonarekin. Tesi hau zalantzan jarri nuen eta Txinako CKS konpainiaren CS32F103C8T6 kontrolagailua probatzea erabaki nuen. Ez dut kexarik kontrolagailu berari buruz, baina ST-Link firmware jabedunak ez du funtzionatu bertan. J-Link-ek partzialki funtzionatu zuen - USB gailua detektatu zen, baina programatzaileak ez zituen bere funtzioak bete eta etengabe gogorarazi zuen "akatsa" zela.
Errore bat gertatu da jatorrizko ez den kontrolagailu batean arazketa exekutatzen ari zarenean
Ez nintzen horrekin konforme eta lehenik LED-a keinu egiteko firmwarea idatzi nuen, eta gero IDCODE eskaera inplementatu nuen JTAG protokoloa erabiliz. Discovery plakan neukan ST-Link programatzaileak eta ST-Link Utility programak arazorik gabe CS32F103C8T6 flash jarri zuten.Azkenean, nire plaka funtzionatzen ari zela sinetsita nengoen. Nire pozerako, helburuko K1986BE1QI (aviazioa) helburuko kontrolatzaileak alaitasunez eman zuen bere IDCODE TDO linearen bidez.
TDO seinale-lerro baten oszilograma, kodetutako IDCODE erantzunarekin, (c) Egilearen argazkia
Beraz, SWD ataka ondo etorri zen araztailea bera arazteko eta IDCODE egiaztatzeko
Aukera bat zegoen arazte batekin
J-Link STLink V2 integratutako araztearen funtzionamendu arrakastatsua
Etorkizuneko garapen-taularen funtsezko osagai guztiak eskuragarri zeudenean, Eagle CAD-era sartu nintzen eta elementuen liburutegian ez zeudela aurkitu nuen. Ez zegoen nora joan - neuk marraztu behar izan nituen. Aldi berean, memoriarako muntatzeko lekuak egin nituen, Etherneterako HanRun konektore bat eta erresistentzietarako eta kondentsadoreetarako fotogramak gehitu nituen. Proiektuaren fitxategia eta osagaien liburutegia aurki daitezke
MDB1986 garapen-plakaren diagrama eskematikoa
Plaka USB atakatik lortutako 5 voltioko DC iturri batek elikatzen du. Guztira bi USB mota-B ataka daude taulan. Bata programatzailearentzat da, bigarrena K1986BE1QI kontroladorearentzat. Taulak iturri hauetatik edo bietatik aldi berean funtziona dezake. Karga erregulazio errazena eta linea elektrikoaren babesa Schottky diodoak erabiliz ezartzen dira, D2 eta D3 zirkuituan (SS24). Era berean, eskeman F1 eta F2 fusibleak 500 mA-tan ikus ditzakezu. USB atakaren seinale-lerroak USBLC6-2SC6 diodo-multzo batek babesten ditu.
ST-Link arazte-programatzaile zirkuitua askorentzat ezaguna da; STM32-Discovery plaken eta beste iturri batzuen dokumentazioan aurki daiteke. ST-Link/J-Link-OB/DAP klonaren hasierako firmwarerako (aukerakoa), SWDIO (PA13), SWCLK (PA14), GND lerroak atera nituen. Jende askok firmwarerako UART erabiltzen du eta BOOT jumperak tiratzera behartuta daude. Baina SWD erosoagoa iruditzen zait, eta protokolo honek arazketa ahalbidetzen du.
Plakako ia osagai guztiak 3.3 voltioz elikatzen dira, AMS1117-3.3 tentsio-erregulagailutik datozenak. Interferentzia elektromagnetikoak eta korronte igoerak kentzeko, BLM31PG serieko kondentsadoreen eta txokeen LC iragazkiak erabiltzen dira.
Bereiz, aipatzekoa da MAX7 7221 segmentuko pantaila kontrolatzailea. Zehaztapenaren arabera, gomendatutako elikadura hornidura 4 eta 5.5 voltiokoa da, eta seinale maila altua (logikoa) gutxienez 3.5 V (0.7 x VCC), 5 V hornidurarekin. K1986BE1QI (aviazio) kontrolagailurako, unitate logiko baten irteera 2.8 eta 3.3V bitarteko tentsio bati dagokio. Jakina, seinale-mailen arteko desadostasuna dago eta horrek funtzionamendu normala oztopatu dezake. MAX7221 4V-tan elikatzea eta seinale-mailak 2.8V-ra murriztea erabaki nuen (0.7 x 4 = 2.8). Horretarako, D4 diodoa (RS1A edo FR103) seriean instalatzen da kontrolatzailearen potentzia zirkuituan. Tentsio-jaitsiera totala 0.9 V-koa da (Schottky diodoa 0.3 V eta diodoa 0.6 V) eta dena funtzionatzen du.
K1986BE1QI (aviazio) mikrokontrolagailuaren ataka gehienak 5V arteko seinaleekin bateragarriak dira. Hori dela eta, ez dago arazorik MCP2551 CAN transzeiver erabiltzeko, 5V-n ere funtzionatzen duena. MAX232 txipa RS-3232 transceptor gisa adierazten da diagraman, baina egia esan Texas Instruments-eko SN65C3232D erabili nuen, izan ere 3.3V-tik funtzionatzen du eta 1Mbit/s-ko abiadura eskaintzen du.
Plakak 4 kuartzozko erresonatzaile ditu - bat arazterako (8 MHz) eta hiru helburuko mikrokontrolagailurako K1986BE1QI (aviazioa) 32.768 kHz, 16 MHz, 25 MHz-ko balorazioekin. Beharrezkoak diren osagaiak dira, zeren RC osziladore integratuaren parametroak 6 eta 10 MHz arteko tarte zabalean daude. 25 MHz-ko maiztasuna behar da integratutako Ethernet kontrolagailuaren funtzionamendurako. Zerbaitegatik, Milandraren webguneak (akatsez agian) dio plastikozko kutxak ez duela Ethernetik. Baina zehaztapenetan eta gertaeretan oinarrituko gara.
Nire garapen-taula sortzeko pizgarri garrantzitsu bat kanpoko sistema-busaren EBC (kanpoko bus kontrolatzailea) lan egiteko aukera izan zen, funtsean ataka paraleloa dena. K1986BE1QI mikrokontrolagailuak (hegazkinak) kanpoko memoria txip eta gailu periferikoekin konektatu eta lan egiteko aukera ematen du, adibidez, ADCak, FPGAak, etab. Kanpoko sistema-busaren gaitasunak nahiko handiak dira - 8 biteko, 16 biteko eta 32 biteko RAM estatikoarekin, ROMarekin eta NAND Flashekin lan egin dezakezu. 32 biteko datuak irakurtzeko/idazteko, kontrolatzaileak automatikoki egin ditzake dagozkien 2 eragiketa 16 biteko txipentzat eta 8 eragiketa 4 biteko txipentzat. Jakina, 32 biteko I/O eragiketa bat azkarren osatuko da 32 biteko datu-bus batekin. Desabantailen artean, programak 32 biteko datuekin funtzionatzeko beharra dago, eta taulak 32 pista jarri beharko ditu.
RAM txip estatikoak, erabiliak (asmatu zein den akastuna)
Irtenbide orekatu bat 16 biteko memoria-txipak erabiltzea da. Integrated Silicon Solutions Inc. txipak stockean nituen. (ISSI IS61LV25616AL, 16 x 256k, 10 ns, 3.3V). Jakina, Milander konpainiak bere memoria estatikoko txip propioak ditu
Kanpoko autobusa eta StandAlone moduaK1986BE1QI mikrokontrolagailuak (hegazkinak) StandAlone modu berezia du, Ethernet eta MKIO kontrolagailuetara (MIL_STD_1553) kanpoko zuzeneko sarbidea izateko diseinatuta dagoena, kanpoko bus baten bidez, nukleoa berrezarri egoeran duela, hau da. ez erabiltzen. Modu hau erosoa da Ethernet eta/edo MKIO ez duten prozesadoreentzat eta FPGAentzat.
Konexio-eskema hau da:
- datu-busa MCU (D0-D15) => SRAM (I/O0-I/O15),
- helbide-busa MCU (A1-A18) => SRAM (A0-A17),
- kontrolatu MCU (nWR,nRD,PortC2) => SRAM (WE,OE,CE),
- SRAM (UB,LB) erresistentzia baten bidez konektatzen edo lurrera eramaten dira.
CE linea elikadura-iturrira erresistentzia baten bidez konektatzen da; MCU bytea (BE0-BE3) lagintzeko pinak ez dira erabiltzen. Spoiler-aren azpian, portuak eta kanpoko bus kontrolatzailea hasieratzeko kodea ematen dut.
Portuak eta EBC kontrolagailua hasieratzea (kanpoko bus kontrolatzailea)
void SRAM_Init (void)
{
EBC_InitTypeDef EBC_InitStruct = { 0 };
EBC_MemRegionInitTypeDef EBC_MemRegionInitStruct = { 0 };
PORT_InitTypeDef initStruct = { 0 };
RST_CLK_PCLKcmd (RST_CLK_PCLK_EBC, ENABLE);
PORT_StructInit (&initStruct);
//--------------------------------------------//
// DATA PA0..PA15 (D0..D15) //
//--------------------------------------------//
initStruct.PORT_MODE = PORT_MODE_DIGITAL;
initStruct.PORT_PD_SHM = PORT_PD_SHM_ON;
initStruct.PORT_SPEED = PORT_SPEED_FAST;
initStruct.PORT_FUNC = PORT_FUNC_MAIN;
initStruct.PORT_Pin = PORT_Pin_All;
PORT_Init (MDR_PORTA, &initStruct);
//--------------------------------------------//
// Address PF3-PF15 (A0..A12), A0 - not used. //
//--------------------------------------------//
initStruct.PORT_FUNC = PORT_FUNC_ALTER;
initStruct.PORT_Pin = PORT_Pin_4 | PORT_Pin_5 |
PORT_Pin_6 | PORT_Pin_7 |
PORT_Pin_8 | PORT_Pin_9 |
PORT_Pin_10 | PORT_Pin_11 |
PORT_Pin_12 | PORT_Pin_13 |
PORT_Pin_14 | PORT_Pin_15;
PORT_Init (MDR_PORTF, &initStruct);
//--------------------------------------------//
// Address PD3..PD0 (A13..A16) //
//--------------------------------------------//
initStruct.PORT_FUNC = PORT_FUNC_OVERRID;
initStruct.PORT_Pin = PORT_Pin_0 | PORT_Pin_1 |
PORT_Pin_2 | PORT_Pin_3;
PORT_Init (MDR_PORTD, &initStruct);
//--------------------------------------------//
// Address PE3, PE4 (A17, A18) //
//--------------------------------------------//
initStruct.PORT_FUNC = PORT_FUNC_ALTER;
initStruct.PORT_Pin = PORT_Pin_3 | PORT_Pin_4;
PORT_Init (MDR_PORTE, &initStruct);
//--------------------------------------------//
// Control PC0,PC1 (nWE,nOE) //
//--------------------------------------------//
initStruct.PORT_FUNC = PORT_FUNC_MAIN;
initStruct.PORT_Pin = PORT_Pin_0 | PORT_Pin_1;
PORT_Init (MDR_PORTC, &initStruct);
//--------------------------------------------//
// Control PC2 (nCE) //
//--------------------------------------------//
initStruct.PORT_PD = PORT_PD_DRIVER;
initStruct.PORT_OE = PORT_OE_OUT;
initStruct.PORT_FUNC = PORT_FUNC_PORT;
initStruct.PORT_Pin = MDB_SRAM_CE;
PORT_Init (MDR_PORTC, &initStruct);
//--------------------------------------------//
// Initialize EBC controler //
//--------------------------------------------//
EBC_DeInit();
EBC_StructInit(&EBC_InitStruct);
EBC_InitStruct.EBC_Mode = EBC_MODE_RAM;
EBC_InitStruct.EBC_WaitState = EBC_WAIT_STATE_3HCLK;
EBC_InitStruct.EBC_DataAlignment = EBC_EBC_DATA_ALIGNMENT_16;
EBC_Init(&EBC_InitStruct);
EBC_MemRegionStructInit(&EBC_MemRegionInitStruct);
EBC_MemRegionInitStruct.WS_Active = 2;
EBC_MemRegionInitStruct.WS_Setup = EBC_WS_SETUP_CYCLE_1HCLK;
EBC_MemRegionInitStruct.WS_Hold = EBC_WS_HOLD_CYCLE_1HCLK;
EBC_MemRegionInitStruct.Enable_Tune = ENABLE;
EBC_MemRegionInit (&EBC_MemRegionInitStruct, EBC_MEM_REGION_60000000);
EBC_MemRegionCMD(EBC_MEM_REGION_60000000, ENABLE);
// Turn ON RAM (nCE)
PORT_ResetBits (MDR_PORTC, MDB_SRAM_CE);
}
LQFP-144 paketeko mikrokontrolagailuak eta TSOP-44 paketeko memoriak pin elkartu asko dituzte eta leku asko hartzen dute zirkuitu inprimatuko plakan. Ekonomiaren arloan optimizazio arazoak konpontzen esperientzia izanda, begi bistakoa zitzaidan mikrozirkuitu hauek plakan jartzea beharrezkoa zela. Hainbat iturritan laudoriozko iritziak topatu ditut
Zirkuitu inprimatuko plaka baten elementu garrantzitsu bat serigrafia inprimatzea da. Garapen-plakak osagai elektronikoetarako etiketak ez ezik, konektore guztiak ere etiketatuta egon behar dira. Arbelaren atzealdean kontrolagailuen ataken funtzioekin taulak jarri nituen (nagusia, alternatiboa, gainidatzia, benetakoa). Txinan PCBWay bulego ezagunetik inprimatutako zirkuitu plakak ekoiztea agindu nuen. Ez dut goraipatuko kalitatea ona delako. Hobeto egin dezakete, tolerantzia estuagoekin, baina
MDB1986 zirkuitu inprimatuak egindako plakak, (c) Egilearen argazkia
Osagaiak "belaunetan" soldatu behar izan ditut 40 watt-ko soldadura batekin eta POS-61 soldadurarekin, gutxitan soldatzen nuelako, urtean 1-2 aldiz, eta soldadura-pasta lehortu egin zelako. Txinako CS32F103 kontrolagailua jatorrizko STM32F103ra aldatu behar izan nuen, eta, ondoren, memoria ere ordeztu behar izan nuen. Oro har, orain guztiz pozik nago emaitzarekin, nahiz eta oraindik ez dudan egiaztatu RS-232 eta CANen funtzionamendua.
MDB1986 arazketa-taula martxan - distira eta berotzen du, (c) egilearen argazkia
Milandraren webgunean nahikoa aurki dezakezu
Milandrari buruz pentsatuMikroelektronika Errusian garatzen ari da, eta Milander konpainiak protagonismo handia du prozesu horretan. Mikrokontrolagailu interesgarri berriak agertzen ari dira, adibidez, 1986BE81T eta Elektrosila SpaceWire eta MKIO interfazeekin (1986BE1eko berdinak eta, beharbada, arazo berdinekin), etab. Baina ikasle arruntek, irakasleek eta ingeniari zibilek ezin dituzte horrelako mikrozirkuiturik erosi. Horrek esan nahi du ingeniaritza komunitateak ezin izango dituela txip honekin akatsak eta arazoak azkar identifikatu. Iruditzen zait lehenik plastikozko kaxa batean mikrozirkuitu batzuk ekoitzi behar direla, interesdun guztiei banatu, eta espezialistek (latinezko homologazioa - onespena, aitorpena) onartu ondoren, metal-zeramikazko kaxa batean errebisio bat prestatu dezaketela. faktore ikaragarri guztietatik babestea. Espero dut etorkizun hurbilean DENOK pozik egongo garela erakusketetan iragarritako proiektu berriekin.
Garatu dudan arazketa-taula errepikatu, aldatu eta edonork erabil dezake hezkuntza-prozesuan. Lehenik eta behin, taula neuretzat egin nuen, baina oso ondo atera zitzaidan
K1986BE1QI (airea) oso kontrolagailu interesgarria da, unibertsitateetan ikasleei irakasteko erabil daitekeen interfaze bereziak dituena. Uste dut kontrolagailuan identifikatutako akatsak zuzendu eta ziurtapen probak gainditu ondoren, kontrolagailuak hitzaren zentzurik egiazkoenean hegan egingo duela!
Iturria: www.habr.com