 |

|
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 04 27, 17:45. 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
|
|
|
 |
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 |
 |
LEGO
Mänguköök,
mudelautod,
nukuvanker |
 |
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 |
|

|
 |