Nejnovější X.Org X server 21.1.25 a Xwayland 24.1.14 řeší 12 bezpečnostních chyb.
Google Chrome 155 byl prohlášen za stabilní. Přináší podporu JPEG XL (.jxl). Opraveno bylo 247 bezpečnostních chyb.
Konference OpenAlt 2026 hledá přednášející. Přihlásit přednášky lze do neděle 11. října. Konference proběhne o víkendu 7. a 8. listopadu na půdě Fakulty informačních technologií VUT v Brně. Témata konference jsou: Otevřený a svobodný software, IoT a Hnutí tvůrců, Vzdělávání, Bezpečnost a soukromí, Otevřená společnost, komunity a data, OpenMobility a další.
Byla vydána nová verze 10.6 sady aplikací pro SSH komunikaci OpenSSH. Přináší řadu důležitých bezpečnostních oprav, vylepšení funkcí a oprav chyb. Povoluje hybridní postkvantový podpisový algoritmus ssh-mldsa44-ed25519.
Americká společnost Reflection AI světu představila Beam, open-weight model s 501 miliardami parametrů (z toho 23 miliard aktivních), určený především pro programování a práci autonomních agentů. Podle autorů jejich model nabízí výkon srovnatelný s většími modely při výrazně nižších nárocích na výpočetní výkon. Beam nyní ještě prochází závěrečným testováním, na stránkách Reflection AI se však lze zaregistrovat a získat předběžný přístup. Váhy modelu, dokumentace a nástroje pro vývojáře mají být zveřejněny v průběhu tohoto měsíce.
OpenCourant je komunitní fork OpenRadioss, tj. open source softwaru pro simulace havárií, nárazů a vysoce nelineárních dynamických dějů metodou konečných prvků. Společnost Siemens v loňském roce dokončila akvizici společnosti Altair Engineering, jež před čtyřmi lety uvolnila open source verzi OpenRadioss svého proprietárního softwaru Radioss. Minulý týden Siemens OpenRadioss pohřbil. Integroval jej do svého softwaru Simcenter, webovou stránku OpenRadioss přesměroval na Simcenter a repozitář OpenRadioss na GitHubu odstranil.
Pořadatelé devátého ročníku komunitního setkání správců nejen českých a slovenských sítí – CSNOG 2027, které se uskuteční 20. a 21. ledna, vyhlásili Call for Abstracts. Náměty na vystoupení mohou zájemci přihlašovat do 31. října na webu akce a vybírat mohou ze tří sekcí – správa sítí, legislativa a regulace a akademické projekty. Zveřejněny byly také Call of Partners určené sponzorům a partnerům setkání, kteří by například chtěli mít na
… více »Strata je open-source inferenční engine, který umožňuje lokálně provozovat rozsáhlý čínský model Qwen3.8-Flash-Next, který by jinak nejspíše vyžadoval serverovou infrastrukturu, na běžném herním počítači s alespoň 12 GB VRAM, 32 GB RAM a dostatkem místa na SSD. Nároky na paměť a rychlost generování se liší s použitou variantou modelu Qwen. Zdrojový kód je dostupný na GitHubu, pod licencí MIT.
Americký prezident Donald Trump oznámil vznik federální Jednotky pro superinteligenci (Super Intelligence Force), která má koordinovat postup vlády, technologických firem, náboženských organizací a dalších institucí v oblasti rychle se rozvíjející umělé inteligence (Trumpem oficiálně nazývanou superinteligencí). SIF, podřízená přímo Trumpovi, má pomoci Spojeným státům udržet v oblasti SI technologický náskok nad světem a
… více »Klient je e-mailový klient pro GNOME s nativní podporou Proton Mailu, PGP a spamfiltrem řízeným AI. Napsaný je v Go s GTK4 a libadwaita. Připojuje se přímo k Proton Mailu (bez Proton Bridge), ke Gmailu, k Seznam.cz a k libovolné schránce IMAP/SMTP. Každou novou zprávu nejdřív posoudí spamfiltr a teprve potom ji ukáže a ohlásí. Rozhraní je česky a anglicky.
#include (nepovolena sipka)TinyWireM.h(nepovolena sipka) // I2C Master lib for ATTinys which use USI
#define PICO_ADDR 0x41 //0x055 zakladni adresa pica
int led = 3;
void setup(){
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
TinyWireM.begin(); // initialize I2C lib
delay(2000);
}
void loop(){
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(1000);
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(1000);
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(2000);
Posli_jeden_byte();
Posli_text();
}
void Posli_jeden_byte(){
TinyWireM.beginTransmission(PICO_ADDR);
TinyWireM.send(0xAB);
TinyWireM.endTransmission();
}
void Posli_text(){
TinyWireM.beginTransmission(PICO_ADDR);
char myString[12] = "Nazdar!";
for(byte i = 0; i <= strlen(myString); i++)
{
TinyWireM.send(myString[i]);
}
TinyWireM.endTransmission();
}
A zde kod pro Pico jako slave:
from machine import mem32, Pin
class i2c_slave:
I2C0_BASE = 0x40044000
I2C1_BASE = 0x40048000
IO_BANK0_BASE = 0x40014000
mem_rw = 0x0000
mem_xor = 0x1000
mem_set = 0x2000
mem_clr = 0x3000
IC_CON = 0
IC_TAR = 4
IC_SAR = 8
IC_DATA_CMD = 0x10
IC_RX_TL = 0x38
IC_TX_TL = 0x3C
IC_CLR_INTR = 0x40
IC_ENABLE = 0x6c
IC_STATUS = 0x70
def write_reg(self, reg, data, method=0):
mem32[ self.i2c_base | method | reg] = data
def set_reg(self, reg, data):
self.write_reg(reg, data, method=self.mem_set)
def clr_reg(self, reg, data):
self.write_reg(reg, data, method=self.mem_clr)
def __init__(self, i2cID = 0, sda=0, scl=1, slaveAddress=0x41):
self.scl = scl
self.sda = sda
self.slaveAddress = slaveAddress
self.i2c_ID = i2cID
if self.i2c_ID == 0:
self.i2c_base = self.I2C0_BASE
else:
self.i2c_base = self.I2C1_BASE
# 1 Disable DW_apb_i2c
self.clr_reg(self.IC_ENABLE, 1)
# 2 set slave address
# clr bit 0 to 9
# set slave address
self.clr_reg(self.IC_SAR, 0x1ff)
self.set_reg(self.IC_SAR, self.slaveAddress &0x1ff)
# 3 write IC_CON 7 bit, enable in slave-only
self.clr_reg(self.IC_CON, 0b01001001)
# set SDA PIN
mem32[ self.IO_BANK0_BASE | self.mem_clr | ( 4 + 8 * self.sda) ] = 0x1f
mem32[ self.IO_BANK0_BASE | self.mem_set | ( 4 + 8 * self.sda) ] = 3
# set SLA PIN
mem32[ self.IO_BANK0_BASE | self.mem_clr | ( 4 + 8 * self.scl) ] = 0x1f
mem32[ self.IO_BANK0_BASE | self.mem_set | ( 4 + 8 * self.scl) ] = 3
# 4 enable i2c
self.set_reg(self.IC_ENABLE, 1)
def any(self):
# get IC_STATUS
status = mem32[ self.i2c_base | self.IC_STATUS]
# check RFNE receive fifio not empty
if (status & 8) :
return True
return False
def get(self):
while not self.any():
pass
return mem32[ self.i2c_base | self.IC_DATA_CMD] & 0xff
if __name__ == "__main__":
import utime
from machine import mem32
from i2cSlave import i2c_slave
s_i2c = i2c_slave(0,sda=0,scl=1,slaveAddress=0x41)
try:
while True:
print(s_i2c.get())
except KeyboardInterrupt:
pass
Nevedeli byste nekdo co s tim? Kdyztak predem diky za pripadne napady.
Řešení dotazu:
>>> %Run pico_analyzer_prubezny_sber.py inputPin0:|||||||.....||||||....||||||......||||||.......||||||.....||||||.....|||||||....|||||||.......|||||. inputPin1:....|||||||||..........||||||||..........|||||||||...........|||||||||||............||||||||||...... inputPin2:.......|||||||||||||||||||..................|||||||||||||||||||||....................||||||||||||||| inputPin3:........|||||||||||||||||||||||||||||||||||||....................................||||||||||||||||||| inputPin4:.....||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||...........................Generator impulzu pro t85:
#define PIN_1 0
#define PIN_2 1
#define PIN_3 2
#define PIN_4 3
#define PIN_5 4
unsigned long naposled_aktivni_pin_1 = micros();
unsigned long prodleva_pin_1 = 64;
byte stav_pin_1 = LOW;
unsigned long naposled_aktivni_pin_2 = micros();
unsigned long prodleva_pin_2 = 128;
byte stav_pin_2 = LOW;
unsigned long naposled_aktivni_pin_3 = micros();
unsigned long prodleva_pin_3 = 256;
byte stav_pin_3 = LOW;
unsigned long naposled_aktivni_pin_4 = micros();
unsigned long prodleva_pin_4 = 512;
byte stav_pin_4 = LOW;
unsigned long naposled_aktivni_pin_5 = micros();
unsigned long prodleva_pin_5 = 1024;
byte stav_pin_5 = LOW;
void setup() {
pinMode(PIN_1, OUTPUT);
pinMode(PIN_2, OUTPUT);
pinMode(PIN_3, OUTPUT);
pinMode(PIN_4, OUTPUT);
pinMode(PIN_5, OUTPUT);
}
void loop() {
unsigned long soucasny_cas = micros();
// Vystup 1
if (soucasny_cas - naposled_aktivni_pin_1 > prodleva_pin_1)
{
if (stav_pin_1 == LOW)
{
stav_pin_1 = HIGH;
}
else
{
stav_pin_1 = LOW;
}
digitalWrite(PIN_1, stav_pin_1);
naposled_aktivni_pin_1 = soucasny_cas;
}
// Vystup 2
if (soucasny_cas - naposled_aktivni_pin_2 > prodleva_pin_2)
{
if (stav_pin_2 == LOW)
{
stav_pin_2 = HIGH;
}
else
{
stav_pin_2 = LOW;
}
digitalWrite(PIN_2, stav_pin_2);
naposled_aktivni_pin_2 = soucasny_cas;
}
// Vystup 3
if (soucasny_cas - naposled_aktivni_pin_3 > prodleva_pin_3)
{
if (stav_pin_3 == LOW)
{
stav_pin_3 = HIGH;
}
else
{
stav_pin_3 = LOW;
}
digitalWrite(PIN_3, stav_pin_3);
naposled_aktivni_pin_3 = soucasny_cas;
}
// Vystup 4
if (soucasny_cas - naposled_aktivni_pin_4 > prodleva_pin_4)
{
if (stav_pin_4 == LOW)
{
stav_pin_4 = HIGH;
}
else
{
stav_pin_4 = LOW;
}
digitalWrite(PIN_4, stav_pin_4);
naposled_aktivni_pin_4 = soucasny_cas;
}
// Vystup 5
if (soucasny_cas - naposled_aktivni_pin_5 > prodleva_pin_5)
{
if (stav_pin_5 == LOW)
{
stav_pin_5 = HIGH;
}
else
{
stav_pin_5 = LOW;
}
digitalWrite(PIN_5, stav_pin_5);
naposled_aktivni_pin_5 = soucasny_cas;
}
}
Merici skript pro pico:
from machine import Pin
import time
#led = Pin(25, Pin.OUT) # setup pin 25 as an output, this is the onboard LED.
inputPin1 = Pin(11, Pin.IN, Pin.PULL_DOWN) # setup pin 0 as an input with a pull down resistor.
inputPin2 = Pin(12, Pin.IN, Pin.PULL_DOWN)
inputPin3 = Pin(13, Pin.IN, Pin.PULL_DOWN)
inputPin4 = Pin(14, Pin.IN, Pin.PULL_DOWN)
inputPin5 = Pin(15, Pin.IN, Pin.PULL_DOWN)
#Dstore = [[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0]]
Dstore = [[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]
#while True: # create a loop
for i in range(0, 100):
Dstore[0][i] = inputPin1.value() # Read the input pin 0
Dstore[1][i] = inputPin2.value() # Read the input pin 1
Dstore[2][i] = inputPin3.value() # Read the input pin 2
Dstore[3][i] = inputPin4.value() # Read the input pin 3
Dstore[4][i] = inputPin5.value() # Read the input pin 4
#time.sleep(1) #1Hz
#time.sleep_ms(1000) #1Hz
#time.sleep_us(1000000) #1Hz
time.sleep_us(10)
for i in range(0, 5): # loop to iterate through the channels
print("inputPin{}:".format(i), end='') # print the input pin label
for j in range(0, 100): # loop to iterate through the samples
if Dstore[i][j] == 0: # check to see if the sample is low
print(".", end='') # print _ if it is low
elif Dstore[i][j] == 1: # check to see if the sample is high
print("|", end='') # print - if it is high
print() # print a new line after each channel
#print() # print a line in between each group of inputs
#led.toggle() # toggle the LED so we know the code is running.
#time.sleep(1) # delay for 1 second.
Pokud ted spustim z t85 i2c master skript, mel bych na picu namerit alespon nejake vyzvy ke komunikaci. Pokud se mi podari skloubit na picu i2c slave s tim mericim skriptem, mohl bych monitorovat i2c sbernici mezi obema cipy. Zatim jsem mel trvalou 0 na SCK a trvalou 1 na SDA.
>>> %Run pico_analyzer_prubezny_sber.py inputPin0:|||||||||...|.|||||||||||||.....||||||||||||||.....|||||||||||||.....|||||||||||||.....||||||||||||| inputPin1:.................................................................................................... inputPin2:.......||.|..||..........|||.|.|............||....||..........|.|.|.|...........|.|.|.|...........|. inputPin3:.................................................................................................... inputPin4:....................................................................................................Vnitrni citac t85 nastaven na 8MHz, upraveny skript:
#include <TinyWireM.h> // I2C Master lib for ATTinys which use USI
#define PICO_ADDR 0x41 //0x055 zakladni adresa pica
//int led = 3;
void setup(){
//pinMode(led, OUTPUT);
//digitalWrite(led, LOW);
TinyWireM.begin(); // initialize I2C lib
delay(1000);
}
void loop(){
// digitalWrite(led, HIGH);
// delay(1000);
// digitalWrite(led, LOW);
// delay(1000);
// digitalWrite(led, HIGH);
// delay(1000);
// digitalWrite(led, LOW);
// delay(1000);
// digitalWrite(led, HIGH);
//delay(1000);
//digitalWrite(led, LOW);
//delay(1000);
Posli_jeden_byte();
//delay(1000);
//delay(.1); //milisekund
delayMicroseconds(128);
//Posli_text();
//delay(1000);
//delay(.2);
//delayMicroseconds(256);
}
void Posli_jeden_byte(){
TinyWireM.beginTransmission(PICO_ADDR);
TinyWireM.send(0xAB);
TinyWireM.endTransmission();
}
void Posli_text(){
TinyWireM.beginTransmission(PICO_ADDR);
char myString[12] = "Nazdar!";
for(byte i = 0; i <= strlen(myString); i++)
{
TinyWireM.send(myString[i]);
}
TinyWireM.endTransmission();
}
Predpokladejme ze knihovna TinyWireM vykazuje nejakou aktivitu (pod rozlisovaci schopnosti meho 'analyzeru'), jeste je treba nejak overit funkcnost slave skriptu pro pico.
>>> %Run i2cSlave.py Co je? Nazdar! I2C z T85: 78 I2C z T85: 97 I2C z T85: 122 I2C z T85: 100 I2C z T85: 97 I2C z T85: 114 I2C z T85: 33 I2C z T85: 0 I2C z T85: 171 I2C z T85: 78 I2C z T85: 97 I2C z T85: 122 I2C z T85: 100 I2C z T85: 97 I2C z T85: 114 I2C z T85: 33 I2C z T85: 0 I2C z T85: 171Stacilo zrusit
if __name__ == "__main__": ve slave skriptu na picu a prikazy pod tim pouzit primo. Ted uz vicemene zbyva jen poskladat z prijatych cisel poskladat puvodni text. Diky vsem za uzitecne tipy.
Tiskni
Sdílej: