Programování GPS modulu NEO7-M

V rámci přípravy na stavbu čítače jsem chtěl ověřit, zda budu umět naprogramovat GPS modul, který chceme použít jako zdroj přesného kmitočtu pro časovou základnu. Princip získání kmitočtu popsal např OK1DXD. Já popíšu nastavení modulu NEO7-M a jeho komunikaci s procesorem řady ATmega.

Samozřejmě, mohl bych použít některou z volně dostupných knihoven, např. pro Arduino, ale v budoucnu budu chtít vlastní řešení s procesorem ATXmega, takže pár řádků nové funkce napíšu podle PDF dokumentu na stránkách společnosti U-Blox.

Modul komunikuje po sériové lince rychlostí 9600 baudů, je přenášeno 8 bitů, jeden stop bit, bez parity. Tak je potřeba nastavit UART procesoru, v mém případě ATmega162:

Modul jsem zapájel do univerzální desky (předtím sloužila k jiným pokusům, tak je na ní víc věcí, než je nutné)

Modul sám, na svém vývodu TX periodicky vysílá informace, které získává ze satelitů. Mě zajímá způsob, jak dostat na vývod modulu Timepulse požadovaný kmitočet, např. 1MHz. Vývod Timepulse je připojen na zelenou LED, která je připájena na modulu. Z ní je připájeným drátkem odebrán signál k dalšímu použití.

Zpráva, kterou je potřeba poslat na pin RX modulu, je popsána v kapitole CFG-TP5, souboru u-blox7.

Funkce, která nastaví kmitočet a střídu je zde:

Protože zprávu budu před odesláním potřebovat pro výpočet kontrolního součtu, připravím ji v poli dat. Podle specifikace u-blox7 je možno v jednotlivých proměnných zadat periodu, nebo kmitočet. Já nastavil řídící bity tak, abych mohl nastavovat kmitočet a střídu v procentech. Kmitočet je v Hz, uložen do 32-bitového čísla. Střída je v nějakých miliontinách procent uložena do 32-bitového čísla. Já tak přesné rozlišení nepotřebuji, proto jsem jednotky procent vynásobil číslem 42 949 672.

Nakonec se vypočítá kontrolní součet z celé zprávy, není zahrnuta hlavička. Jak jej vypočítat je popsáno v kapitole UBX Checksum souboru u-blox7 a pak je zpráva odeslána na UART.

No a tady je screenshot osciloskopu, který je připojen na pin Timepulse:

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *