Stránka: 1 z 1
| [ Príspevkov: 27 ] | |
Autor | Správa |
---|
Registrovaný: 26.02.07 Prihlásený: 24.04.16 Príspevky: 276 Témy: 81 | 81 |
mam IQRF sadu pomocou ktorjej dostavam vystup zo snimaca vo formate 12:50:59 RxD: "#2# #98# #118#"
cisla 98 a 119 by mali byt hum.high8 a hum.low8, ako z nich dostanem jedno cislo, napriklad dekadicke? (teda celu premennu hum)
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Ak som dobre pochopil, high8 je horných 8 bitov a low8 je dolných 8 bitov 16 bitového slova? Ak je to tak, vo väčšine jazykov to spravíš nejako takto: Kód: int16_t result; // 16 bitove cislo, v podstate to ale moze byt aj normalny 32bit int result = high8 << 8; // posuniem o 8 bitov dolava result = result | (0xff & low8); // vymaskujem 8 bitov (pre istotu) a binarne scitam s result
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 26.02.07 Prihlásený: 24.04.16 Príspevky: 276 Témy: 81 | 81 |
a ak mam premennu hum.high8 napriklad = 01101010 a prve dva bity chcem odstranit, znamena to hum.high & 00111111 ?
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Ak odstrániť znamená vynulovať, tak áno
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 26.02.07 Prihlásený: 24.04.16 Príspevky: 276 Témy: 81 | 81 |
no mam zo snimaca vystup ktory ma 8 bitov a vyznam pre mna prve dva nemaju, su to nejake status bity len, ci co, tak ich chcem dat prec
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Tak ich vynuluješ, to už je na tebe, čo s tým chceš
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 26.02.07 Prihlásený: 24.04.16 Príspevky: 276 Témy: 81 | 81 |
a este, ak mozes tak mi porad s tymto, mal by som vysledok teda celu premennu hum a moze to byt cislo max 100, tak ako z toho ziskat stovky, desiatky, jednotky a desatiny ?
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Tak ale toto už je matika hodná základnej školy, keď sme si s pani učiteľkou rozkladali číslo 123 na 1*100 + 2*10 + 3*1. Obyčajné delenie a modulo.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 26.02.07 Prihlásený: 24.04.16 Príspevky: 276 Témy: 81 | 81 |
no praveze som skusal nieco ako
desiatky = hum / 10; desatiny = hum % 10;
a neviem ci teda to delenie je bezozvysku alebo nie, lebo neviem ci sa mi to zmesti do buffera
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
ehm... desatiny? Snáď jednotky, však? A je to správne, nerozumiem teraz, o čo ti ide.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 26.02.07 Prihlásený: 24.04.16 Príspevky: 276 Témy: 81 | 81 |
jj, pomylil som sa.... no a ide mi o to, ze mi to nefunguje, tak ked je uz toto vsetko dobre, tak nechapem preco vysledky su celociselne, ziadne desatinne miesta, ci?
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Stále neviem, v akom jazyku to je, ale predpokladám C a že sú tie premenné celočíselné. Vtedy by to malo fungovať. Tak skús popísať viac a daj aj kus svojho kódu, čo ti nejde.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 26.02.07 Prihlásený: 24.04.16 Príspevky: 276 Témy: 81 | 81 |
takze, mam vlhkostny snimac Honeywell HIH6130 a funkciu pre PIC ktora vyzera nasledovne: Kód: void read_MCP9802() { i2c_start(); i2c_write(I2C_ADR<< 1); //HIH6130 address i2c_write(0); i2c_stop(); i2c_start(); i2c_write(I2C_ADR<< 1 | 1); //HIH6130 address + read hum.high8 = i2c_read(ACK) & 0x3F; // Store the result hum.low8 = i2c_read(NO_ACK); i2c_stop(); }
vystupny format udajov by mal byt: START A6 A5 A4 A3 A2 A1 A0 1 ACK S1 S0 B13 B12 B11 B10 B9 (data a s1 a s0 si myslim ze sa maju vymaskovat) ACK B8 B7 B6 B5 B4 B3 B2 B1 ACK NACK STOP na osciloskope to bolo myslim ze ok, takze problem je uz snad len v programe, no a dalej by sa vysledne udaje mali spracovat do podoby v percentach podla vzorca RH% = (humidity/2na14 - 2) * 100 a kod na to vyzera u mna nejako takto: Kód: bufferRF[0] = ' '; bufferRF[1] = hum / 10; bufferRF[1] += '0'; bufferRF[2] = ' '; bufferRF[3] = hum % 10; bufferRF[4] = ' '; DLEN = 5; PIN = 0;
|
|
Registrovaný: 26.02.07 Prihlásený: 24.04.16 Príspevky: 276 Témy: 81 | 81 |
takze, mam vlhkostny snimac Honeywell HIH6130 a funkciu pre PIC ktora vyzera nasledovne: Kód: void read_MCP9802() { i2c_start(); i2c_write(I2C_ADR<< 1); //HIH6130 address i2c_write(0); i2c_stop(); i2c_start(); i2c_write(I2C_ADR<< 1 | 1); //HIH6130 address + read hum.high8 = i2c_read(ACK) & 0x3F; // Store the result hum.low8 = i2c_read(NO_ACK); i2c_stop(); }
vystupny format udajov by mal byt: START A6 A5 A4 A3 A2 A1 A0 1 ACK S1 S0 B13 B12 B11 B10 B9 (data a s1 a s0 si myslim ze sa maju vymaskovat) ACK B8 B7 B6 B5 B4 B3 B2 B1 ACK NACK STOP na osciloskope to bolo myslim ze ok, takze problem je uz snad len v programe, no a dalej by sa vysledne udaje mali spracovat do podoby v percentach podla vzorca RH% = (humidity/2na14 - 2) * 100 a kod na to vyzera u mna nejako takto: Kód: clrwdt(); read_MCP9802(); bufferRF[0] = ' '; bufferRF[1] = hum / 10; bufferRF[1] += '0'; bufferRF[2] = ' '; bufferRF[3] = hum % 10; bufferRF[4] = ' '; DLEN = 5; PIN = 0;
viem ze vysledok este neni spravny v tych bufferoch ale myslim, ze vysledok by mal byt _desiatky0_jednotky_
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
A ten bufferRF je čo? Ten výstupný formát má byť presne aký a v čom? Majú tam byť naozaj ASCII hodnoty? A má to byť vôbec reťazez(pole znakov)? Nemal by byť zakončený nulovým bajtom? atď.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 26.02.07 Prihlásený: 24.04.16 Príspevky: 276 Témy: 81 | 81 |
noo v tom ci tam maju byt ASCII hodnoty alebo nie sa nevyznam, ale je mozne, ze ano, ale ked je to toto: Kód: bufferRF[0] = ' '; bufferRF[1] = hum / 10; bufferRF[1] += '0'; bufferRF[2] = ' '; bufferRF[3] = hum % 10; bufferRF[4] = ' '; DLEN = 5; PIN = 0;
tak myslim, ze aj to som skusal:) bufferRF[] je buffer pre radiovy prenos a vystupny format by mal byt z tej premennej hum v %, nieco ako 57,5%, alebo 57.5%
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Neviem vôbec, s čím robíš a veľmi sa mi to nechce hľadať Naštuduj poriadne dokumentáciu, ako to presne komunikuje. Musíš tomu posielať presne to, čo to chce. Keď tak daj ten kus dokumentácie sem.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 26.02.07 Prihlásený: 24.04.16 Príspevky: 276 Témy: 81 | 81 |
dokumentaciu som pozrel aj za doktorom v skole som bol, aj som to urobil ako mi poradil, aspon myslim a nic ale poslem ti kod co mi spracuva vystup z teplotneho snimaca, neviem ci ti to pomoze, aby si mi s tym pomohol a robim s takym bezdrotovim kitom, neviem ci sem mozem napisat nazov su to take moduly na tvorbu siete ku ktorym pripajam snimace cez I2C zbernicu Kód: bufferRF[3] = '.';
// See sensor datasheet for temperature coding if (temperature.high8 & 0x80) // Is it negative? { // Yes temperature = ~temperature; temperature++; bufferRF[0] = '-'; } else bufferRF[0] = ' '; // No
temperature >>= 4; tenths = temperature.low8 & 0x0F; // Save bits 0 - 3 (tenths) temperature >>= 4;
t = temperature.low8 / 10; bufferRF[1] = t + '0'; // Tens
t = temperature.low8 % 10; bufferRF[2] = t + '0'; // Units
tmp = tenths * 625; t = tmp / 1000; tmp %= 1000;
if ((tmp >= 500) && (t < 9)) // Rounding t++;
bufferRF[4] = t +'0'; // Tenths DLEN = 5; PIN = 0;
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Keď si ten bufferRF vypíšeš, je tam to, čo tam chceš mať? Lebo tie "Tenths" sa mi veľmi nepozdávajú, prečo to maskuješ 0x0F? Ale ako neviem, čo tam dostávaš a čo chceš. Dôležité je, čo máš nakonci v tom bufferRF. Ak je to tam správne, tak to správne príjmaš, no zle odosielaš.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 26.02.07 Prihlásený: 24.04.16 Príspevky: 276 Témy: 81 | 81 |
no hodnoty su myslim ze spravne, ked som si dal vypisat len to high8 a low8 co tam davam, tak by to mohlo byt to co chcem
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
A kam to chceš posielať? Či z toho chceš len spraviť reťazec a vypísať to? (to je ten bufferRF?)
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 26.02.07 Prihlásený: 24.04.16 Príspevky: 276 Témy: 81 | 81 |
treba mi naplnit ten bufferRF[] a potom ho odoslat radiom, to odoslanie mi ide, len mi neprichadzaju spravne hodnoty, tak predpokladam ze donho nedavam spravny format udajov, mam vlastne modul ktory je uzlom v sieti a cez ten buffer to odosiela do uzla ktory je cez USB spojeny s PC, na tych uzloch je 16F886, co by mal byt PIC
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Uf, tak tam je toho veľa. Na to asi budeš musieť prísť sám Vypíš/ulož si bufferRF, odošli to a porovnávaj.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 26.02.07 Prihlásený: 24.04.16 Príspevky: 276 Témy: 81 | 81 |
ok:D dik za snahu aj tak este ako mozes, ked to vies preratat, tak ak je high 98 a low 88(dekadicky), tak ake to je cislo?
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
98 v bin je 0110 0010 88 v bin je 0101 1000 0110 0010 0101 1000 je v dec 25176
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 26.02.07 Prihlásený: 24.04.16 Príspevky: 276 Témy: 81 | 81 | |
Registrovaný: 26.02.07 Prihlásený: 24.04.16 Príspevky: 276 Témy: 81 | 81 |
vyzera to ze to je teda dobre, mozno si to skusim hodit do PHP ten vysledok v tych high a low a tam to skusim spracovat, dik za pomoc este raz
|
|
Stránka: 1 z 1
| [ Príspevkov: 27 ] | |
|