Zdeněk Krejčí

Zdeněk Krejčí

Stránky na téma programování v C++
Program Osciloskop pro Linux
Dříve jsem napsal Osciloskop pro Windows,nebyl sice nějak extra povedený ale nechal se už použít.Pak díky mé nepořádnosti jsem přišel o zdrojové kódy. Nedávno jsem přešel na Linux konkrétně Ubuntu a se spokojenosti a užíváním tohoto skvělého systému, přišla i potřeba si napsat samozřejmě Osciloskop pro tento systém.
Takže tady je... Není ještě uplně scela hotový ale už na slušné úrovni a použitelný. Chybí ještě ocejchování a řízení amlitudy, na čemž se práve pracuje.
Tento osciloskop je navržený pro procesor ARM7 TDMI konrétně ADUC7026.
Zatím jsem se popravdě nerozhodl jestli tento procesor bude zastávat hlavní funkci. Protože i když 1MPS je už zajímavá rychlost AD převodu, tak když už se dělám s takovýmto software tak by to asi chtělo rovnou mýt možnost vzorkovat vyšší kmitočty... Nicméně pokud se tak stane tak interface zůstane v podstatě stejný.

Na obrázku v levo je starší vývojová verze se stylem Ubuntu 10 a v pravo je poslední tedy verze s vylepšenými funkcemi se stylem Ubuntu 9.04
Styl Ubuntu 10

Styl Ubuntu 10

Styl Ubuntu 9.0

Styl Ubuntu 9.0

Screenshot.png
Popis komunikace PC & mikrokontrolér
PC program, komunikuje bud po sériové lince, a nebo přes USB. Komunikační algoritmus vypadá asi následovně. Mikrokontrolér běží neustále v nekonečné smyčce, kde provádí blokující čtení UARTu. Pokud přijde znak, přejde na switch, který má dvě možné cesty. Bud OPTIONS, což je nastavení hodnota(251), nebo CONVERT (253). Pokud přečtě hodnotu jako 251, tak ji také vrátí, na což strana PC čeká a mikrokontrolér začne další znaky zapisovat v daném pořadí do OPTIONS. To znamená na příklad:
int Time Base
int Trigger
bool Trigger
jak toto zapíše, automaticky se vrátí na začátek nekonečné smyčky, kde znovu čeká na hodnotu.
Pokud PC potřebuje přenastavit nějaké nastavení, tak se toto může opakovat znovu.
Pokud ne, PC pošle hodnotu 253 takže CONVERT a mikrokontrolér začne se čtením AD převodníku a zapisováním hodnot do bufferu. Jakmile skončí, čeká opět na hodnotu (252) která znamená vyžádání těchto hodnot. Jak se tak stane, začne mikrokontrolér posílat hodnoty bez handshakingu, prostě jednu za druhou. Po té co skončí, se opět vrací do nekonečné smyčky.

Tady ukázka takového kódu pro mikrokontrolér ARM7.
Program není ještě dokončený co se týče ocejchování a pár drobných dodělávek ale již je plně funkční.
Name
Email
Comment
Or visit this link or this one