Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - radioing

Stran: 1 2 3 [4]
46
Hardware / Re:Stabilita ESP8266
« kdy: 07. 02. 2020, 15:59:48 »
No, abych nezustal pri sve puvodni strohe odpovedi.

mhi: "Problem je, ze frekvence lita mezi 11.4 a 13.3 MHz ! Prijde mi to uplne desive, jako kdyby to resili pres nejaky interrupt, ktery ma silenou latenci. Neverim tomu, ze interni PLL jim takhle lita, to by prece ta wifi nemohla vubec fungovat ?! Tusite co je shnileho ve state cinskem?"

PWM generator na ESP32 se chova naprosto spravne.
Jitter vystupniho signalu je zpusoben tim, ze ackoliv je v periferii TIMER, jakozto zdroji hodinovych impulzu pro PWM periferii, pouzita frakcni synteza (10bitovy N registr a 8bitovy F registr), tak tato neni schopna generovat impulzy mimo rastr zdrojoveho hodinoveho signalu TIMERu (to umi az sofistikovane digitalni systemy zalozene na DLL apod., coz u periferie na ESP32 cekat nelze). Pri pozadavku na generovani 12MHz signalu z PWM periferie musi byt tato taktovana impulzy s opakovacim kmitoctem 24 MHz a strida vystupniho signalu nastavena na 1:1 (kazdy taktovaci impulz od timeru potom preklapi vystup PWM periferie mezi log. 0 a 1). Frakcni synteza TIMERu beziciho na 80 MHz je toho schopna docilit pouze tak, ze generuje nasledujici sekvenci taktovacich impulzu (v rastru 80MHz hodin):
...0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0..., tj. repetice pulzu se meni mezi 3 a 4 periodami 80MHz hodin, ale v prumeru je to 3,333.. periody, tj. 80 MHz/3.333... = 24 MHz.
Vystupem PWM periferie je potom tato posloupnost (opet v rastru 80MHz hodin):
...0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1...
Dostavame tedy signal, ktery ma nektere periody kratsi (6 taktu 80MHz hodin, tj. 75 ns -> 13.33... MHz) a nektere delsi (7 taktu 80MHz hodin, tj. 87,5 ns -> 11,428... MHz), a jelikoz pomer zastoupeni kratsi a delsi periody v generovanem signalu je 1 : 2, tak vysledna prumerna peroda je (1* 75 + 2 * 87,5) / 3 = 83,333... ns -> prumerny kmitocet 12 MHz.
Pokud byste chtel dosahnout stabilniho vystupu 12 MHz bez jitteru zpusobeneho frakcni syntezou, musite ji vyradit, tj. zajistit podminku, kterou jsem uvedl v predchozim prispevku:
zdrojovy hodinovy kmitocet TIMERU [MHz] / 12 = cele cislo.
Napr. pri pomeru 7 (zdrojovy kmitocet TIMERu = 84 MHz), bude TIMER generovat sekvenci pulzu:
...0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0...
a PWM signal pri stride 1:1 bude vypadat napr. takto
...0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1...
=> signal bude mit fixni periodu 7 hodinovych cyklu 84 MHz (tj. kmitocet 12 MHz), ale se stridou 3:4 (nebo 4:3).
Pri pozadavku na stridu 1:1 se podminka zprisnuje na
zdrojovy hodinovy kmitocet TIMERU [MHz] / (2*12) = cele cislo,
takze by to chtelo hodiny napr. 72 MHz.

47
Hardware / Re:Stabilita ESP8266
« kdy: 06. 02. 2020, 23:24:57 »
mhi: Jak chcete dosahnout generovani 12 MHz pri clocku mcu 80 MHz, kdyz 80/12 neni cele cislo? Pokud vim, tak toto je mimo moznosti hw timeru (ledc high speed mode).

48
Hardware / Re:Prohozená polarita, notebook
« kdy: 28. 01. 2020, 23:59:23 »
Opravitelne by to byt mohlo. Drtiva vetsina NB ma hned za napajecim DC jackem LC EMI filtr pred nimz/v nemz byva vclenena SMD pojistka (neco takovehoto https://cz.farnell.com/bussmann-by-eaton/tr-3216ff10-r/fuse-smd-10a-1206-fast-acting/dp/1717117 ). Pri trose stesti to mohla odnest jen ona. Pak casto nasleduje ochranna unidir TVS dioda a P-MOSFET(-y) jako spinac napajeni do battery management IC a DCDC menicu. Nekdy se s pojistkou stihne protavit i TVS a pokud je poradi MOSFET -> TVS, tak to muze odnest i ten MOSFET. Ale v pripade, ze vyrobce setril, tak jako vyse uvedena TVS zafunguje nektery z IC navesenych za MOSFETem a je vymalovano.

49
Vývoj / Re:Cvičení Bitových operátorů z knihy o jazyku C
« kdy: 07. 08. 2019, 22:46:16 »
Kterou ucebnici byste mi doporucil?
Po 29 letech programovani v K&R/C89/.../C11 C vim jedno naprosto jiste, a sice ze vam zadnou knihu doporucit nemohu. Tu knihu si totiz musite najit sam, nebot jeji volba zavisi na vasich dosavadnich znalostech, na tom, zda se ucite programovat, nebo se ucite jazyk, atd. A zacit hledat muzete treba zde:
https://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list
Pokud snad mohu nejak radit, vyvarujte se knih, ktere citelne trpi nekterymi z techto problemu:
1. Jsou stare (napr. K&R v jakekoliv verzi vydani). Nereflektuji aktualni zvyklosti a zpusob prace s jazykem.
2. Snazi se uvadet analogie s jinymi jazyky, pripadne primo predpokladaji, ze ctenar prechazi z nejakeho konkretniho jazyka (u nas napr. nevim proc oblibeny Herout a jeho obsese Pascalem - treba je to v poslednich vydanich uz vyskrtane, nevim).
3. Venuji se z hlediska jazyka naprosto nepodstatnym vecem (pul knihy se resi prace s retezci, printf/scanf/getc/putc, file I/O).
4. Knihy jsou nekonecne dlouhe a atakuji hranici 1000 stran. Tvari se encyklopedicky, ale pritom je nepomerne snazsi precist si tech par klicovych odstavcu primo v std. Cxx.
5. Knihy jsou napsany naprosto chaoticky (vetsinou vysledek prace sice jiste zdatneho programatora, ale mizerneho "beletristy").
6. Knihy se utapi v mnozstvi kodu v podobe resenych prikladu, ale kvalita kodu je sporna a spise to vypada, ze autor potreboval naplnit dohodnuty pocet normostran.
Jo a jeste jedna vec z osobni zkusenosti. Rychly posun vpred zaznamenate, pokud se stanete clenem nejakeho kvalitniho pgm. tymu. Ty znalosti a zkusenosti programatorsky starsich kolegu jsou k nezaplaceni.

50
Vývoj / Re:Cvičení Bitových operátorů z knihy o jazyku C
« kdy: 07. 08. 2019, 00:58:13 »
Ta inverze muze nad uint32_t vypadat treba takto:
Kód: [Vybrat]
    /* K&R Invert(x, p, n)
     * n = 0..32
     * p >= n - 1; p = 0 points to lsb
     */
    uint32_t x = ...
    x ^= (((uint64_t)1U << n) - 1U) << (p + 1U - n);
coz umoznuje pretypovani na unsigned int o vetsim ranku nez ma x (zde 2^64).

V souvislosti s tim me napadaji 2 veci:
1. Nejsem si zcela jist, ze K&R je dnes zrovna ta spravna literatura pro studium C, notabene pro zacatecnika.
2. Zrovna prace s posuny, mixovani unsigned/signed apod. je v C, pokud nemate nastudovano std. C99, C11,... peklo, nad nimz code reviewisti chrochtaji blahem. Nejde ani tak o algoritmicke vyjadreni problemu, jako o jeho spravny zapis v C, aby se predeslo neprijemnostem pramenicim z "integer promotions", "undefined behaviour" nebo "implementation dependent".
Schvalne si od boku zkuste tipnout, jak na vasem prekladaci dopadne toto:
a) if (-1 < 0x01U)  ...
b) a kdyz uz jsme u tech posuvu
    uint32_t n = 32U;
    uint32_t x = (((uint32_t)1U << n) - 1U);
    uint32_t y = ((1UL << n) - 1U);
    uint64_t z = ((1U << n) - 1U);
    uint32_t w = ((1U << 32U) - 1U);
Pokud vas vysledek neceho moc prekvapi, potom doporucuji kap. 6 std. C99/C11.

Stran: 1 2 3 [4]