abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 06:00 | Zajímavý článek

    Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 162 (pdf).

    Ladislav Hagara | Komentářů: 0
    dnes 05:55 | IT novinky

    Sdružení CZ.NIC, správce české národní domény, zveřejnilo Domain Report za rok 2025 s klíčovými daty o vývoji domény .CZ. Na konci roku 2025 bylo v registru české národní domény celkem 1 515 860 s koncovkou .CZ. Průměrně bylo měsíčně zaregistrováno 16 222 domén, přičemž nejvíce registrací proběhlo v lednu (18 722) a nejméně pak v červnu (14 559). Podíl domén zabezpečených pomocí technologie DNSSEC se po několika letech stagnace výrazně

    … více »
    Ladislav Hagara | Komentářů: 0
    včera 18:33 | IT novinky

    Google představil telefon Pixel 10a. S funkci Satelitní SOS, která vás spojí se záchrannými složkami i v místech bez signálu Wi-Fi nebo mobilní sítě. Cena telefonu je od 13 290 Kč.

    Ladislav Hagara | Komentářů: 1
    včera 16:22 | Komunita

    Byl publikován přehled dění a novinek z vývoje Asahi Linuxu, tj. Linuxu pro Apple Silicon. Fedora 43 Asahi Remix s KDE Plasma už funguje na M3. Zatím ale bez GPU akcelerace. Vývojáře lze podpořit na Open Collective a GitHub Sponsors.

    Ladislav Hagara | Komentářů: 0
    včera 14:00 | IT novinky

    Red Hat představil nový nástroj Digital Sovereignty Readiness Assessment (GitHub), který organizacím umožní vyhodnotit jejich aktuální schopnosti v oblasti digitální suverenity a nastavit strategii pro nezávislé a bezpečné řízení IT prostředí.

    Ladislav Hagara | Komentářů: 0
    včera 12:22 | Zajímavý software

    BarraCUDA je neoficiální open-source CUDA kompilátor, ale pro grafické karty AMD (CUDA je proprietární technologie společnosti NVIDIA). BarraCUDA dokáže přeložit zdrojové *.cu soubory (prakticky C/C++) přímo do strojového kódu mikroarchitektury GFX11 a vytvořit tak ELF *.hsaco binární soubory, spustitelné na grafické kartě AMD. Zdrojový kód (převážně C99) je k dispozici na GitHubu, pod licencí Apache-2.0.

    NUKE GAZA! 🎆 | Komentářů: 1
    17.2. 17:00 | IT novinky

    Podvodné reklamy na sociálních internetových platformách, jako je Facebook, Instagram nebo X, vytvořily loni v Česku jejich provozovatelům příjmy 139 milionů eur, tedy zhruba 3,4 miliardy korun. Proti roku 2022 je to nárůst o 51 procent. Vyplývá to z analýzy Juniper Research pro společnost Revolut. Podle výzkumu je v Česku zhruba jedna ze sedmi zobrazených reklam podvodná. Je to o 14,5 procenta více, než je evropský průměr, kde je podvodná každá desátá reklama.

    Ladislav Hagara | Komentářů: 7
    17.2. 15:44 | Nová verze

    Desktopové prostředí KDE Plasma bylo vydáno ve verzi 6.6 (Mastodon). Přehled novinek i s videi a se snímky obrazovek v oficiálním oznámení. Podrobný přehled v seznamu změn.

    Ladislav Hagara | Komentářů: 0
    17.2. 03:22 | Nová verze

    Czkawka a Krokiet, grafické aplikace pro hledání duplicitních a zbytečných souborů, byly vydány ve verzi 11.0. Podrobný přehled novinek v příspěvku na Medium. Od verze 7.0 je vedle frontendu Czkawka postaveného nad frameworkem GTK 4 vyvíjen nový frontend Krokiet postavený nad frameworkem Slint. Frontend Czkawka je už pouze v udržovacím módu. Novinky jsou implementovány ve frontendu Krokiet.

    Ladislav Hagara | Komentářů: 27
    17.2. 02:00 | Zajímavý článek

    Jiří Eischmann na svém blogu publikoval článek Úvod do MeshCore: "Doteď mě radioamatérské vysílání úplně míjelo. Když jsem se ale dozvěděl, že existují komunity, které svépomocí budují bezdrátové sítě, které jsou nezávislé na Internetu a do značné míry taky elektrické síti a přes které můžete komunikovat s lidmi i na druhé straně republiky, zaujalo mě to. Když o tom přede mnou pořád básnili kolegové v práci, rozhodl jsem se, že to zkusím taky.

    … více »
    Ladislav Hagara | Komentářů: 4
    Které desktopové prostředí na Linuxu používáte?
     (18%)
     (6%)
     (0%)
     (11%)
     (27%)
     (3%)
     (4%)
     (2%)
     (12%)
     (27%)
    Celkem 904 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    Dotaz: C - chybné čtení id 1. sensoru

    28.5.2010 17:14 mcuProg
    C - chybné čtení id 1. sensoru
    Přečteno: 367×
    Mám naprogramovaný termostat. Blbne mi ale část kódu, která má za úkol ukládat do eeprom IDčka teplotních sensorů.
    uint8_t search_sensors(void) {
    	uint8_t i;
    	uint8_t id[OW_ROMCODE_SIZE];
    	uint8_t diff;
    	bool akva1, akva2, lednice, mistnost;
    	
    
    	while(1) {
    		//writestr("+4 NACITAM SENZORY");
    		//lfcr();
    
    		m_delay_ms(250);
    
    		nSensors = 0;
    		akva1_id = -1;
    		akva2_id = -1;
    		lednice_id = -1;
    		mistnost_id = -1;
    		for(uint8_t iN = 0; iN<MAXSENSORS; iN++) { // nemá vliv na chování
    			for(uint8_t iN2 = 0; iN2<OW_ROMCODE_SIZE; iN2++) {
    				gSensorIDs[iN][iN2] = 0;
    			}
    		}
    
    
    		for(diff = OW_SEARCH_FIRST; diff != OW_LAST_DEVICE && nSensors < MAXSENSORS; ) {
    			DS18X20_find_sensor( &diff, &id[0] );
    		
    			if( diff == OW_PRESENCE_ERR ) break;
    			if( diff == OW_DATA_ERR ) break;
    
    			akva1 = true;
    			akva2 = true;
    			lednice = true;
    			mistnost = true;
    
    			for (i=0;i<OW_ROMCODE_SIZE;i++) {
    				gSensorIDs[nSensors][i]=id[i];
    
    				if(akva1) {
    					eeprom_busy_wait();
    					if( gSensorIDs[nSensors][i] != eeprom_read_byte((uint8_t*)(EEPROM_AKVA1_SENSOR+i)) ) akva1 = false;
    				}
    
    				if(akva2) {
    					eeprom_busy_wait();
    					if( gSensorIDs[nSensors][i] != eeprom_read_byte((uint8_t*)(EEPROM_AKVA2_SENSOR+i)) ) akva2 = false;
    				}
    
    				if(lednice) {
    					eeprom_busy_wait();
    					if( gSensorIDs[nSensors][i] != eeprom_read_byte((uint8_t*)(EEPROM_LEDNICE_SENSOR+i)) ) lednice = false;
    				}
    
    				if(mistnost) {
    					eeprom_busy_wait();
    					if( gSensorIDs[nSensors][i] != eeprom_read_byte((uint8_t*)(EEPROM_MISTNOST_SENSOR+i)) ) mistnost = false;
    				}
    			}
    
    			if(akva1 && !akva2 && !lednice && !mistnost) {
    				akva1_id = nSensors;
    				leds_add(port_led_akva1);
    			}
    			if(!akva1 && akva2 && !lednice && !mistnost) {
    				akva2_id = nSensors;
    				leds_add(port_led_akva2);
    			}
    			if(!akva1 && !akva2 && lednice && !mistnost) {
    				lednice_id = nSensors;
    				leds_add(port_led_lednice);
    			}
    			if(!akva1 && !akva2 && !lednice && mistnost) {
    				mistnost_id = nSensors;
    			}		
    			nSensors++;
    		}
    	
    		if( nSensors ) return nSensors;
    
    		leds_search();
    
    		leds_blink(LED_BLINK_FAST_INTERVAL);
    
    		m_delay_s(1);
    	}
    }
    
    void vypsat_senzory() {
    	nSensors = search_sensors();
    
    	for ( int i=0; i<nSensors; i++ ) {
    		writestr("#");
    		writestr_integer((int) i);
    		if(i == akva1_id)
    			writestr(":AKVA1:");
    		if(i == akva2_id)
    			writestr(":AKVA2:");
    		if(i == lednice_id)
    			writestr(":LEDNICE:");
    		if(i == mistnost_id)
    			writestr(":MISTNOST:");
    		writestr(" ");
    		writetemp(getTemp(i));
    		lfcr();
    	}
    }
    
    void uloz_senzor( uint8_t *id, uint8_t kam ) {
    	for (int i=0; i<OW_ROMCODE_SIZE; i++) {
    		eeprom_busy_wait();
    		eeprom_write_byte((uint8_t*)(kam+i),id[i]);
    	}
    }
    
    void nastav_senzor(char cilselekt) {
    	uint8_t sensT = (uint8_t)(rx_buffer[0]-48);
    	writestr_integer((int) sensT); lfcr();
    	if ( sensT < nSensors ) {
    		if(cilselekt == '1')
    			uloz_senzor(&gSensorIDs[sensT][0], EEPROM_AKVA1_SENSOR);
    		else if(cilselekt == '2')
    			uloz_senzor(&gSensorIDs[sensT][0], EEPROM_AKVA2_SENSOR);
    		else if(cilselekt == 'l')
    			uloz_senzor(&gSensorIDs[sensT][0], EEPROM_LEDNICE_SENSOR);
    		else if(cilselekt == 'm')
    			uloz_senzor(&gSensorIDs[sensT][0], EEPROM_MISTNOST_SENSOR);
    		else errorWrite(1);
    		writestr("+1 OK");
    		lfcr();
    		nSensors = search_sensors();
    		vypsat_senzory();
    	}
    	else
    		errorWrite(1);
    }
    
    void eeprog_vstup_podprogram() {
    	if(citac_ee > 0) {
    		for (uint8_t i=RX_BUFFER_SIZE; i>0; i--) rx_buffer[i]=0;
    		rs232enter=0;
    		rs232ready=true;
    		while(1) {
    			if(rs232enter) {
    				rs232ready=false;
    				if(cmdtest('L','S',0))
    					vypsat_senzory();
    				else if(cmdtest('S','A',1))
    					nastav_senzor('1');
    				else if(cmdtest('S','B',1))
    					nastav_senzor('2');
    				else if(cmdtest('S','L',1))
    					nastav_senzor('l');
    				else if(cmdtest('S','M',1))
    					nastav_senzor('m');
    				else if(cmdtest('E','Q',0)) {
    					writestr("+1 OK"); lfcr();
    					break;
    				}
    				else
    					errorWrite(3);
    				for (uint8_t i=RX_BUFFER_SIZE; i>0; i--) rx_buffer[i]=0;
    				rs232enter=0;
    				rs232ready=true;
    			}
    		}
    	}
    	else
    		errorWrite(4);
    }
    
    
    Samotné search_sensors(void) funguje dobře, opravdu porovnává všechny bajty identifikace senzoru vs. uložená identifikace v eeprom. Problém nastává, pokud chci uložit nový senzor. Všechny se ukládají dobře, kromě 1.(senzor #0). Pokud se jednoduše snažím uložit senzor 0 jako cokoliv, tak je první bajt vždy 0x00. Takhle vypadá část eepromky: 00FBFA97020000A728D6F797020000B72820BA9702000072. Správně ale má být 28FBFA97020000A728D6F797020000B72820BA9702000072. Co mám špatně?

    Řešení dotazu:


    Odpovědi

    28.5.2010 21:29 mcuProg
    Rozbalit Rozbalit vše Re: C - chybné čtení id 1. sensoru
    Uz jsem to nasel, asi bych nemel jen tak bezhlave kopirovat :[ for (uint8_t i=RX_BUFFER_SIZE; i>0; i--) se dostane mimo pole
    30.5.2010 12:19 tom
    Rozbalit Rozbalit vše Re: C - chybné čtení id 1. sensoru
    Doporucuju cykly pres pole psat se sizeof jako napr. for (uint8_t i = sizeof id - 1; i>=0; i--)

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.