Společnost comma.ai po třech letech od vydání verze 0.9 vydala novou verzi 0.10 open source pokročilého asistenčního systému pro řidiče openpilot (Wikipedie). Zdrojové kódy jsou k dispozici na GitHubu.
Ubuntu nově pro testování nových verzí vydává měsíční snapshoty. Dnes vyšel 4. snapshot Ubuntu 25.10 (Questing Quokka).
Řada vestavěných počítačových desek a vývojových platforem NVIDIA Jetson se rozrostla o NVIDIA Jetson Thor. Ve srovnání se svým předchůdcem NVIDIA Jetson Orin nabízí 7,5krát vyšší výpočetní výkon umělé inteligence a 3,5krát vyšší energetickou účinnost. Softwarový stack NVIDIA JetPack 7 je založen na Ubuntu 24.04 LTS.
Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) spolu s NSA a dalšími americkými úřady upozorňuje (en) na čínského aktéra Salt Typhoon, který kompromituje sítě po celém světě.
Společnost Framework Computer představila (YouTube) nový výkonnější Framework Laptop 16. Rozhodnou se lze například pro procesor Ryzen AI 9 HX 370 a grafickou kartu NVIDIA GeForce RTX 5070.
Google oznamuje, že na „certifikovaných“ zařízeních s Androidem omezí instalaci aplikací (včetně „sideloadingu“) tak, že bude vyžadovat, aby aplikace byly podepsány centrálně registrovanými vývojáři s ověřenou identitou. Tato politika bude implementována během roku 2026 ve vybraných zemích (jihovýchodní Asie, Brazílie) a od roku 2027 celosvětově.
Byla vydána nová verze 21.1.0, tj. první stabilní verze z nové řady 21.1.x, překladačové infrastruktury LLVM (Wikipedie). Přehled novinek v poznámkách k vydání: LLVM, Clang, LLD, Extra Clang Tools a Libc++.
Alyssa Anne Rosenzweig v příspěvku na svém blogu oznámila, že opustila Asahi Linux a nastoupila do Intelu. Místo Apple M1 a M2 se bude věnovat architektuře Intel Xe-HPG.
EU chce (pořád) skenovat soukromé zprávy a fotografie. Návrh "Chat Control" by nařídil skenování všech soukromých digitálních komunikací, včetně šifrovaných zpráv a fotografií.
Byly publikovány fotografie a všechny videozáznamy z Python konference PyCon US 2025 proběhlé v květnu.
#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: passNevedeli 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: