Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2018:gsm-retransmitter

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
2018:gsm-retransmitter [2019/01/14 10:03]
Vladimír Šustek [Bezpečnostní prvky]
2018:gsm-retransmitter [2019/01/14 10:14] (aktuální)
Vladimír Šustek [Materiály a zdroje]
Řádek 24: Řádek 24:
 přijetí jako odezvu na prázdný AT command. Daná SMS musí být nejprve otevřena a její obsah zkrácen o hlavičku (data o odesílateli,​ čas odeslání, status SMS) a bezprostředně za textem ukončena, jinak nebude taková zpráva měřidlem správně vyhodnocena. Z důvodu limitované počtu SMS (24) je SMS následně smazána. Modul disponuje i interupt pinem, který v případě speciální akce změní stav, nicméně z preventivních důvodů není využit (zaseknutí - zamrznutí). přijetí jako odezvu na prázdný AT command. Daná SMS musí být nejprve otevřena a její obsah zkrácen o hlavičku (data o odesílateli,​ čas odeslání, status SMS) a bezprostředně za textem ukončena, jinak nebude taková zpráva měřidlem správně vyhodnocena. Z důvodu limitované počtu SMS (24) je SMS následně smazána. Modul disponuje i interupt pinem, který v případě speciální akce změní stav, nicméně z preventivních důvodů není využit (zaseknutí - zamrznutí).
  
-Pokud je modul hovorově vyzváněn, jako v předchozím případě, je odpovězeno na prázdný AT příkaz notifikací '​RING'​ časově podobně se opakující přerušovanému vyzváněcímu tónu u mobilního telefonu (myšleno ze strany volajícího). Z praktického hlediska je až 4. posloupná ​zpráva ​RING vyhodnocena jako žádost o kompletní reset - vzdálené resetování systému.+Pokud je modul hovorově vyzváněn, jako v předchozím případě, je odpovězeno na prázdný AT příkaz notifikací '​RING'​ časově podobně se opakující přerušovanému vyzváněcímu tónu u mobilního telefonu (myšleno ze strany volajícího). Z praktického hlediska je až 4. posloupná ​hláška ​RING vyhodnocena jako žádost o kompletní reset - vzdálené resetování systému.
  
 V případě přijatých dat UART1 spojujícím měřidlo a Re-Transmitter je vyvolána obsluha MMS. Obluha MMS svojí dobou trvání převyšuje periodu Watch Dog a tedy je resetován i v této rutině. MMS adresátem je recipient, jenž byl obsažen v SMS, která měření a tedy příjem dat na UARTu způsobila, nebo je MMS poslána na defaultní adresu. Při MMS obsluze není rozbalena případně přijatá SMS ani není reagováno na vyzvánění hovoru. Při odesílání MMS jsou jednotlivé příkazy nutné k odeslání akumulovány do jedné hodnoty, kde je zásádní GSM_MMS_SENT s hodnotou 1000 - výsledek rutiny musí být vyšší 1000.  V případě přijatých dat UART1 spojujícím měřidlo a Re-Transmitter je vyvolána obsluha MMS. Obluha MMS svojí dobou trvání převyšuje periodu Watch Dog a tedy je resetován i v této rutině. MMS adresátem je recipient, jenž byl obsažen v SMS, která měření a tedy příjem dat na UARTu způsobila, nebo je MMS poslána na defaultní adresu. Při MMS obsluze není rozbalena případně přijatá SMS ani není reagováno na vyzvánění hovoru. Při odesílání MMS jsou jednotlivé příkazy nutné k odeslání akumulovány do jedné hodnoty, kde je zásádní GSM_MMS_SENT s hodnotou 1000 - výsledek rutiny musí být vyšší 1000. 
Řádek 126: Řádek 126:
 === GSM MODULE STATE MACHINE, PROCESSING SECTION - SOLVE THE STATE === === GSM MODULE STATE MACHINE, PROCESSING SECTION - SOLVE THE STATE ===
  
-V defaultním případě (po resetu) začíná cyklus ve stavu GSM_OK, který vyšle prázdný AT příkaz. V případě příjmu SMS je sekvečně ​její čtení ​rozděleno podle stavů GSM_SMS_RCVD - vyšle příkaz pro přečtení SMS, jenž je bezprostředně následován stavem GSM_SMS_READ kdy je SMS zpráva ošetřena o hlavičku a zápatí, případně získán příjemce MMS a finální smazání zprávy. Po těchto třech úkonech získává měřidlo pomocí UART1 extrahovaný příkaz z SMS a měří.+V defaultním případě (po resetu) začíná cyklus ve stavu GSM_OK, který vyšle prázdný AT příkaz. V případě příjmu SMS je její čtení ​sekvečně ​ rozděleno podle stavů GSM_SMS_RCVD - vyšle příkaz pro přečtení SMS, jenž je bezprostředně následován stavem GSM_SMS_READ kdy je SMS zpráva ošetřena o hlavičku a zápatí, případně získán příjemce MMS a finální smazání zprávy. Po těchto třech úkonech získává měřidlo pomocí UART1 extrahovaný příkaz z SMS a měří.
  
 Stavy GSM_RING, GSM_NOCRR ošetřují případné volání na číslo jednotky, kde GSM_RING detekuje aktivní volání a GSM_NOCRR zavěšení hovoru. Pro opakování - nutno volat modul nejméně na zaznění 4. tónu pro vyvolání akce resetu. Rutina přiřazena k hodnotě GSM_RING v tomto případě nastaví flag rst_req na log. 1. Nakonec je zapnut 2 vteřinový timer (nedojde k jeho zapnutí pouze mezi stavy GSM_SMS_READ a GSM_SMS_DEL). Stavy GSM_RING, GSM_NOCRR ošetřují případné volání na číslo jednotky, kde GSM_RING detekuje aktivní volání a GSM_NOCRR zavěšení hovoru. Pro opakování - nutno volat modul nejméně na zaznění 4. tónu pro vyvolání akce resetu. Rutina přiřazena k hodnotě GSM_RING v tomto případě nastaví flag rst_req na log. 1. Nakonec je zapnut 2 vteřinový timer (nedojde k jeho zapnutí pouze mezi stavy GSM_SMS_READ a GSM_SMS_DEL).
Řádek 132: Řádek 132:
 === GSM MODULE RECEIVING SECTION - GET STATE === === GSM MODULE RECEIVING SECTION - GET STATE ===
  
-Funkcemi refresh_uart1(gsmod) a refresh_uart3(gsmod) jsou zkontrolovány a vyhodnoceny DMA buffery UART periferií, kde UART1 obsluhuje linku s naměřenými daty (výstup z měřidla), či UART3 neustálou komunikaci mezi GSM modulem a procesorem. ​+Funkcemi refresh_uart1() a refresh_uart3() jsou zkontrolovány a vyhodnoceny DMA buffery UART periferií, kde UART1 obsluhuje linku s naměřenými daty (výstup z měřidla), či UART3 neustálou komunikaci mezi GSM modulem a procesorem. ​
  
-V případě příjmu znaku '​\n'​ (uart3_received_flag) na UART3 sběrnici a vypršení časového úseku timeru tim_gsm_respnd() je vyhodnocena přijmutá odpověď na zaslaný AT command pomocí gsm_rec_respond2(),​ je vyresetován timer i Watch Dog a pomocná signalizační Green_LED nastavena na mód jednoho blinknutí za sekundu ONCE_FLASH (pracovní mód). LED může blikat i 2x za vteřinu (TWICE_FLASH) pokud modul neodpovídá a pokusu o restart UART3 gsm_missed_response() )+V případě příjmu znaku '​\n'​ (uart3_received_flag) na UART3 sběrnici a vypršení časového úseku timeru tim_gsm_respnd() je vyhodnocena přijmutá odpověď na zaslaný AT command pomocí gsm_rec_respond2(),​ je vyresetován timer i Watch Dog a pomocná signalizační Green_LED nastavena na mód jednoho blinknutí za sekundu ONCE_FLASH (pracovní mód). LED může blikat i 2x za vteřinu (TWICE_FLASH) pokud modul neodpovídá a při pokusu o restart UART3 gsm_missed_response() )
  
 Pokud vypršel časovač tim_gsm_respnd(),​ pomocí funkce gsm_missed_response() je při opakovaném vypršení času restartováno rozhraní UART3, přičemž je vždy nastaven cmd_val na GSM_OK, aby byl zaslán další prázdný AT command na začátku smyčky. Pokud se nepodaří navázat delší dobu, Watch Dog způsobí restart celého systému (zmíněných 26s). Pokud vypršel časovač tim_gsm_respnd(),​ pomocí funkce gsm_missed_response() je při opakovaném vypršení času restartováno rozhraní UART3, přičemž je vždy nastaven cmd_val na GSM_OK, aby byl zaslán další prázdný AT command na začátku smyčky. Pokud se nepodaří navázat delší dobu, Watch Dog způsobí restart celého systému (zmíněných 26s).
Řádek 145: Řádek 145:
   * dlouhé vyvolávání modulu (vzdálený reset uživatelem)   * dlouhé vyvolávání modulu (vzdálený reset uživatelem)
  
-Je využita CSMSIS funkce ARM NVIC_SystemReset,​ která způsobí reset ekvivalentní hardwarovému resetu pinu procesoru. Nutno podotknout, že procesor ovládá GPIO pin v módu otevřeného kolektoru jenž je připojen přímo na reset pin kontroléru měřidla - možnost tvrdého resetu měřidla.+Je využita CSMSIS funkce ARM NVIC_SystemReset(), která způsobí reset ekvivalentní hardwarovému resetu pinu procesoru. Nutno podotknout, že procesor ovládá GPIO pin v módu otevřeného kolektoru jenž je připojen přímo na reset pin kontroléru měřidla - možnost tvrdého resetu měřidla.
  
 =====Bezpečnostní prvky===== =====Bezpečnostní prvky=====
Řádek 153: Řádek 153:
 Pomocí dvou-vteřinového časovače tim_gsm_respnd() lze v přetrvávající neaktivitě restartovat UART3, stejně jako při jakékomkoliv detekovatelném problému UARTu - Využit HAL_UART_ErrorCallback(UART_HandleTypeDef *huart), jenž je schopen zaznamena například šum na RX terminálu, stejně jako zapnutí nového příjmu UART. Poznámka, při rádiové aktivitě modulu občas dochází k šumu na UART3 sběrnici (modul vysílá až 2 watty výkonu). Pomocí dvou-vteřinového časovače tim_gsm_respnd() lze v přetrvávající neaktivitě restartovat UART3, stejně jako při jakékomkoliv detekovatelném problému UARTu - Využit HAL_UART_ErrorCallback(UART_HandleTypeDef *huart), jenž je schopen zaznamena například šum na RX terminálu, stejně jako zapnutí nového příjmu UART. Poznámka, při rádiové aktivitě modulu občas dochází k šumu na UART3 sběrnici (modul vysílá až 2 watty výkonu).
  
-Vzdálené resetování je patrné voláním na modul - číslo není veřejné, pokud modul neodpovídá je sám WatchDogem ​zresetován.+Vzdálené resetování je patrné voláním na modul - číslo není veřejné, pokud modul neodpovídá je sám Watch Dogem zresetován.
  
 =====Detaily při implementaci==== =====Detaily při implementaci====
Řádek 204: Řádek 204:
 {{ :​2018:​gsm:​gsm_modul_schema.pdf |Schéma finálního přípravku (deska vpravo - sekce detaily implementace)}} {{ :​2018:​gsm:​gsm_modul_schema.pdf |Schéma finálního přípravku (deska vpravo - sekce detaily implementace)}}
  
- --- //​[[xsuste08@stud.feec.vutbr.cz|Vladimír Šustek]] 2019/​01/​10 ​12:31//+ --- //​[[xsuste08@stud.feec.vutbr.cz|Vladimír Šustek]] 2019/01/14 10:14//
2018/gsm-retransmitter.1547456590.txt.gz · Poslední úprava: 2019/01/14 10:03 autor: Vladimír Šustek