D7VK byl vydán ve verzi 1.2. Jedná se o fork DXVK implementující překlad volání Direct3D 5, 6 a 7 na Vulkan. DXVK zvládá Direct3D 8, 9, 10 a 11.
Byla vydána verze 12.0.0 knihovny libvirt (Wikipedie) zastřešující různé virtualizační technologie a vytvářející jednotné rozhraní pro správu virtuálních strojů. Současně byl ve verzi 12.0.0 vydán související modul pro Python libvirt-python. Přehled novinek v poznámkách k vydání.
CreepyLink.com je nový zkracovač URL adres, 'díky kterému budou vaše odkazy vypadat tak podezřele, jak je to jen možné'. Například odkaz na abclinuxu.cz tento zkracovač převádí do podoby 'https://netflix.web-safe.link/logger_8oIlgs_free_money.php'. Dle prohlášení autora je CreepyLink alternativou ke zkracovači ShadyURL (repozitář na githubu), který dnes již bohužel není v provozu.
Na blogu Raspberry Pi byla představena rozšiřující deska Raspberry Pi AI HAT+ 2 s akcelerátorem Hailo-10 a 8 GB RAM. Na rozdíl od předchozí Raspberry Pi AI HAT+ podporuje generativní AI. Cena desky je 130 dolarů.
Wikipedie slaví 25. výročí svého založení. Vznikla 15. ledna 2001 jako doplňkový projekt k dnes již neexistující encyklopedii Nupedia. Doména wikipedia.org byla zaregistrována 12. ledna 2001. Zítra proběhne v Praze Večer svobodné kultury, který pořádá spolek Wikimedia ČR.
Po více než dvou letech od vydání předchozí verze 2.12 byla vydána nová stabilní verze 2.14 systémového zavaděče GNU GRUB (GRand Unified Bootloader, Wikipedie). Přehled novinek v souboru NEWS a v aktualizované dokumentaci.
Google Chrome 144 byl prohlášen za stabilní. Nejnovější stabilní verze 144.0.7559.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 10 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře (YouTube).
Microsoft zveřejnil zdrojový kód XAML Studia a uvolnil ho pod MIT licencí. XAML Studio je nástroj ze světa Windows, určený pro tvorbu uživatelského rozhraní aplikací pomocí XAML (Extensible Application Markup Language). Stalo se tak zhruba po osmi letech od prvního prohlášení Microsoftu, že se tento kód chystá zveřejnit.
TimeCapsule, 'časová kapsle', je jazykový model trénovaný výhradně na datech z určitých míst a časových období, aby se tak napodobila autentická slovní zásoba, způsob vyjadřování a názory dané doby. Na Hugging face jsou k dispozici modely natrénované na historických textech dostupných v oblasti Londýna mezi lety 1800 až 1875.
Radicle byl vydán ve verzi 1.6.0 s kódovým jménem Amaryllis. Jedná se o distribuovanou alternativu k softwarům pro spolupráci jako např. GitLab.
Mám aplikaci v avr pro atmega16. Zatím zkouším přesně měřit otáčky. Měřím způsobem, že počítám čas mezi pulsy a pak kolik je pulsů do sekundy. Problém je, že zřejmě pokud zrovna atmega přijímá nějaká data přes sériovou linku, tak asi nemůže běžet přerušení pro měření otáček, které běží Xkrát za sekundu. Proto jsou výsledné hodnoty např. 550 +-30. Co s tím? Jak nastavit, aby přerušení pro měření otáček mohlo přerušit cokoliv jiného a tudíš nedocházelo ke zpožděním?
Nebo i v té obsluze seriového portu nejdříve počítat otáčky.
Teď tam mám krystal 14.7456 MHz, což je nejrychlejší co tam mohu dát aby se to dobře dělilo.
Tak v ostatních přerušeních problém asi nebude. Vypnul jsem je totiž a povolil jen to, kde se měří otáčky a ještě je povolené přerušení od sériového portu, ale vyrubal jsem odtamtud všechen kód. Co mám tedy špatně? Měřím nějak špatně otáčky? Vím, že bych měl měřit přes několik pulsů, ale zkouším odchylku v tom jednom a ta je +- 5 cyklů, což ve výsledku dává docela velikou odchylku v rychlosti. Zde jsou povolená přerušení:
ISR(TIMER2_OVF_vect) {
TCNT2=255; // 14.7456MHz/1024/1=14400 preruseni/sec
longac++;
if (longac>=2880) {
longac=0;
longacDOit=1;
}
if (longac10<288001) longac10++;
if (longac10==288000) {
//longac10=0;
longac10DOit=1;
OCR1A=0;
}
if (longac10==1) {
OCR1A=300;
}
pulsecounterL++;
if (bit_is_set(PIND, 6) && ! speedLcounted1) {
pulseL++;
speedLcounted3 = 0;
speedLcounted1 = 1;
}
if (bit_is_set(PIND, 7) && ! speedLcounted2) {
pulseL++;
speedLcounted4 = 0;
speedLcounted2 = 1;
}
if (bit_is_clear(PIND, 6) && ! speedLcounted3) {
pulseL++;
speedLcounted1 = 0;
speedLcounted3 = 1;
}
if (bit_is_clear(PIND, 7) && ! speedLcounted4) {
pulseL++;
speedLcounted2 = 0;
speedLcounted4 = 1;
}
if (pulseL>=1 || pulsecounterL>=14400) {
//finalSpeedL = (pulseL*(14400000/pulsecounterL))/1000;
finalSpeedL=pulsecounterL; // pro ladeni, zobrazi jen kolik cyklu mezi 2 pulsy
pulsecounterL = 0;
pulseL = 0;
}
if (speedLcounted1 && speedLcounted2) {
if (!speedLdirTest) speedLdir = 1; else speedLdir = 0;
}
if (speedLcounted1 && ! speedLcounted2) {
speedLdirTest=0;
}
if (! speedLcounted1 && speedLcounted2) {
speedLdirTest=1;
}
}
// preruseni po prichodu noveho znaku na USART
// novy byte zapise do pozice 0, ostatni posune o 1 vyse = FIFO fornta
// po prichodu \n nastavi priznak enteru - je zpracovan v main()
ISR(USART_RXC_vect) {
unsigned char status,data,i;
}
Zkusim zvysit frekvenci odecitani. Mohlo by pomoct.
ISR(INT0_vect) {
pin1set = bit_is_set(PIND, 2);
pulseL++;
// zde kód pro určení směru
}
Analogicky pro ISR(INT1_vect), v přerušení od časovače by sis jenom přečetl to, kolik pulsů se za daný interval přečetlo. Samozřejmě je nutné mít proměnné deklarované jako volatile tam, kde je to potřeba.
Tiskni
Sdílej: