Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių .
Pastebėjus nusižengimus, prašome pranešti .
Dabar yra 2025 05 12, 06:47. Visos datos yra GMT + 2 valandos.
Forumas » Mikrovaldikliai » I2C laiko diagrama
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
Pasirinkite forumą Pagrindinis forumas ---------------- Forumo informacija Pastabos ir pageidavimai Vykdomi projektai Žinantiems ir klausiantiems. Ar žinai, kad... Įvairūs Elektronikos technologijos ---------------- Elektronika žaliems Mokslai Schemų montažas, skaičiavimai, derinimas Principinės elektrinės schemos Analoginė elektronika Skaitmeninė elektronika Korpusai Prietaisai, įrankiai, medžiagos Mikrovaldikliai Atminties elementai Maitinimo šaltiniai Indukciniai elementai Kiti elektronikos komponentai Energetika ir elektrotechnika Buities elektronika ---------------- Garso aparatūra Garso stiprintuvai Lempinė technika Akustika Televizija, vaizdo aparatūra Optika, skaitmeninė fotografija Apsaugos ir valdymo sistemos Buitinė technika, apšvietimas Autoelektronika, automatika, robotai ---------------- Autoelektronika Automobilinė garso aparatūra Autotiuningas Autodiagnostika Automobilinės apsaugos sistemos Automatika, robotai, RC modeliai Ryšio technologijos ---------------- Radioelektronika Radioelektronika – siųstuvai Radioelektronika – imtuvai Telefonija, tinklai, ryšio elektronika GPS technologijos, navigacija, GIS sistemos Kompiuterinė ir programinė įranga ---------------- Informacijos kaupikliai Sisteminės plokštės, procesoriai Vaizdo plokštės, monitoriai, TV-tiuneriai Kompiuteriai, jų priedai, periferija PK spartinimas ir modifikavimas Programinė įranga Programavimas Skelbimai ir pareiškimai ---------------- Darbas, remontas, paslaugos, renginiai Siūlo, parduoda, dovanoja daiktus Ieško, perka daiktus Pareiškimai, padėkos, skundai
Visi pranešimai 1 dienos 7 dienų 2 savaičių 1 mėnesio 3 mėnesių 6 mėnesių 1 metų Iš pradžių senesni Iš pradžių naujesni
I2C laiko diagrama
Parašytas: 2013 08 13, 13:01
Gal kas nors galit padėti man išsiaiškinti I2C protokolo laiko diagrama. Vat, pateiksiu LM75 mikroschemos I2C laiko diagrama.
tai "start by master" aš valdiklyje vykdau tokią paprogramę
Kodas:
i2c_start(0x91); //0x91=10010001;
Tada Ack by LM75 ką čia man reikia daryti? tuo pačiu paklausiu ACK by master?
Pas manes tokios paprogramės yra
Kodas:
i2c_start(unsigned char address);
i2c_stop(void);
i2c_write( unsigned char data );
i2c_readAck(void);
i2c_readNak(void);
_________________ Diplomas tik etikete ant konservų dėžutes. O kas slepiasi dėžutėje neaišku.
I2C laiko diagrama
Parašytas: 2013 08 13, 13:21
Darai start su adresu, po to darai read su Ack, o antrą baitą darai read su Nak. Turėsi du baitus, iš kurių pirmąjį perstumsi per 8 bitus ir sudėjęs gausi 16 bitų reikšmę.
I2C laiko diagrama
Parašytas: 2013 08 13, 13:34
Kodas:
float readLM75(char addr){
i2c_start(0x91 | (addr & 0x07)<<1);
int temp = i2c_readAck()<<8;
temp |= i2c_readNak();
i2c_stop();
if(temp & 0x100) temp |= 0xFF00);
return temp/2;
}
jei ka, temp/2 keisk i temp*0.5
Paskutinį kartą redagavo AlgisL , 2013 08 13, 16:06. Redaguota 1 kartą
I2C laiko diagrama
Parašytas: 2013 08 13, 16:02
Ačiū, už paaiškinimą. Šį vakarą pabandysiu ant bandymu lentos pažaisti
_________________ Diplomas tik etikete ant konservų dėžutes. O kas slepiasi dėžutėje neaišku.
I2C laiko diagrama
Parašytas: 2013 08 14, 09:55
AlgisL rašo:
Kodas:
float readLM75(char addr){
i2c_start(0x91 | (addr & 0x07)<<1);
int temp = i2c_readAck()<<8;
temp |= i2c_readNak();
i2c_stop();
if(temp & 0x100) temp |= 0xFF00);
return temp/2;
}
jei ka, temp/2 keisk i temp*0.5
O dar geriau stumt į dešinę, kad net ir pats tūpiausias kompiliatorius padarytų tvarkingai
I2C laiko diagrama
Parašytas: 2013 08 14, 10:17
pazejau kita datacheeta, pilnesni, taigis rezultata grazina LEFT JUSTIFIED tad tikrai tinka poslinkis, kaip minejo socrates
jei rezultata grazintu RIGHT JUSTIFIED, reiktu kaip rasiau anksciau
Kodas:
float readLM75(char addr){
i2c_start(0x91 | (addr & 0x07)<<1);
int temp = i2c_readAck()<<8;
temp |= i2c_readNak();
i2c_stop();
return (temp>>7)*0.5;
}
Paskutinį kartą redagavo AlgisL , 2013 08 14, 17:46. Redaguota 2 kartus(ų)
I2C laiko diagrama
Parašytas: 2013 08 14, 13:41
na truputi susidūriau su sunkumais. Nuskaitau reikšmes, kaip ir sakėte. Tačiau pagal mane turėtu iš diagramų nuskaityti 8 bitus, bes man nuskaito 9 bitus. Todėl gaunasi, vat toks nesusipratimas
ir galutiniam variante gaunasi tūkstantines temperatūros
Iš valdikliaus per nuoseklu kanalą per ft232 siunčiu duomenis į kompą dvi tokias paprogrames
Kodas:
void USART_putstring(char *StringPtr)
{
while(*StringPtr != 0x00)
{
USART_send(*StringPtr);
StringPtr++;
}
USART_send(' ');
}
void USART_send( unsigned char data){
while(!( UCSRA & (1<<UDRE)) );
UDR = data;
}
Gal jos man knisą protą, bet ankščiau visą laiką naudojau jas kitiems reikalams ir neturėjau problemų.
_________________ Diplomas tik etikete ant konservų dėžutes. O kas slepiasi dėžutėje neaišku.
I2C laiko diagrama
Parašytas: 2013 08 16, 00:17
ar niekas negali atsakyti, kodėl yra parsiunčiama devyni bitai vietoje aštuonių bitų?
_________________ Diplomas tik etikete ant konservų dėžutes. O kas slepiasi dėžutėje neaišku.
I2C laiko diagrama
Parašytas: 2013 08 16, 00:58
pcwortex rašo:
ar niekas negali atsakyti, kodėl yra parsiunčiama devyni bitai vietoje aštuonių bitų?
koks kodas tuos bitus spausdina ?
I2C laiko diagrama
Parašytas: 2013 08 16, 01:31
AlgisL rašo:
pcwortex rašo:
ar niekas negali atsakyti, kodėl yra parsiunčiama devyni bitai vietoje aštuonių bitų?
koks kodas tuos bitus spausdina ?
Kodas:
i2c_start(0x91);
temp1=i2c_readAck()&0xFF;
temp=i2c_readNak()&0xFF;
i2c_stop();
Kodas:
itoa(temp1,duomenys,2);
USART_putstring(duomenys);
Kodas:
char duomenys[16];
_________________ Diplomas tik etikete ant konservų dėžutes. O kas slepiasi dėžutėje neaišku.
I2C laiko diagrama
Parašytas: 2013 08 16, 09:01
sakyk ka nori, bet po &0xFF rezultatas negali buti didesnis uz 0xFF, todel "1" 9-am bite kazkaip nelogiskai gaunas. kazkur cia nesueina, nes nei uCU nei kompiliatorius IMHO neturetu taip issidergti.
be to pas tave pvz yra:
100010100<<8 | 110100000 = 1010110100000
kas isvis nesamone, man gaunasi:
0b100010100<<8 | 0b110100000 = 0b10001010110100000
„Google“ paieška forume
Naujos temos forume
FS25 Tractors
Farming Simulator 25 Mods ,
FS25 Maps ,
FS25 Trucks
ETS2 Mods
ETS2 Trucks ,
ETS2 Bus ,
Euro Truck Simulator 2 Mods
FS22 Tractors
Farming Simulator 22 Mods ,
FS22 Maps ,
FS25 Mods
VAT calculator
VAT number check ,
What is VAT ,
How much is VAT
FS25 Mods
FS25 Harvesters ,
FS25 Tractors Mods ,
FS25 Maps Mods
Dantų protezavimas
All on 4 implantai ,
Endodontija mikroskopu ,
Dantų implantacija
FS25 Mods
FS25 Maps ,
FS25 Cheats ,
FS25 Install Mods
FS25 Mods
Farming Simulator 25 Mods ,
FS25 Maps
ATS Trailers
American Truck Simulator Mods ,
ATS Trucks ,
ATS Maps
Football Training Kit
Football Training Equipment ,
Football Skills ,
Football Training