 |

|
|
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 12 20, 15:37. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Mikrovaldikliai » I2C bus
|
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
|
|
|
Puslapis 3 iš 3 Pereiti prie Atgal 1, 2, 3 |
|
 |
I2C bus |
Parašytas: 2006 09 22, 07:15 |
|
|
|
|
| Koki cipa tu nuskaityt nori? Jei savaitgali rasiu laiko permesiu datasheet. Gal kas uzklius uz akiu...... |
|
_________________ I GAVE UP DRINKING, SMOKING AND SEX!
it was the worse 15 minutes of my life! |
|
|
|
 |
 |
I2C bus |
Parašytas: 2006 09 25, 10:57 |
|
|
|
|
| BLASTER rašo: |
Nėra tas hardwarinis toks jau sudėtingas. Štai funkcija (Atmega8):
| Kodas: |
#define false 0
#define true 1
#define i2c TWDR
#define i2cConf TWCR
#define i2cStatus TWSR
#define i2cIntFlag 0x80
#define i2cStart 0x20
#define i2cStop 0x10
#define i2cEn 0x04
#define i2cStatusStart 0x08
#define i2cStatusSlaveACK 0x18
#define i2cStatusDataACK 0x28
// Bit Rate: 384,000 kHz
TWSR = 0x00;
TWBR = 0x08;
TWAR = 0x00;
unsigned char I2CWriteByte(unsigned char I2Caddress, unsigned char adressH, unsigned char adressL, unsigned char data){
unsigned char i = 0;
repeatAll:
i++;
if(i > 100) return false;
i2cConf = i2cIntFlag | i2cStart | i2cEn;
while (!(i2cConf & i2cIntFlag));
if ((i2cStatus & 0xF8) != i2cStatusStart) goto repeatAll;
i2c = I2Caddress;
i2cConf = i2cIntFlag | i2cEn;
while (!(i2cConf & i2cIntFlag));
if ((i2cStatus & 0xF8) != i2cStatusSlaveACK) goto repeatAll;
i2c = addressH;
i2cConf = i2cIntFlag | i2cEn;
while (!(i2cConf & i2cIntFlag));
if ((i2cStatus & 0xF8) != i2cStatusDataACK) goto repeatAll;
i2c = addressL;
i2cConf = i2cIntFlag | i2cEn;
while (!(i2cConf & i2cIntFlag));
if ((i2cStatus & 0xF8) != i2cStatusDataACK) goto repeatAll;
i2c = data;
i2cConf = i2cIntFlag | i2cEn;
while (!(i2cConf & i2cIntFlag));
if ((i2cStatus & 0xF8) != i2cStatusDataACK) goto repeatAll;
i2cConf = i2cIntFlag | i2cEn | i2cStop;
return true;
} |
Čia viskas, ko reikia.
Ši funkcija paima I2C čipo adresą, to čipo atminties adresą ir duomenis. Pamodifikavus galima pasirašyti paprogrames char duomenims ir burst mode'ui. |
gal gali imest pilna programos pavyzdi i chulio666@one.lt, bo prasiknisau visa savaitgali ir be teigiamu rezultatu..........  |
|
_________________ I GAVE UP DRINKING, SMOKING AND SEX!
it was the worse 15 minutes of my life! |
|
|
|
 |
 |
I2C bus |
Parašytas: 2006 09 25, 16:04 |
|
|
|
|
Nu vat, laikrodukas PCF8583 su I2C interfeisu jau tiksi LCD ekrane.
Per keleta dienu pats atkapsciau kaip su juo susisneketi per I2C.
Kaip ir sakiau, norint irasyti reikia:
"Start", slave address su paskutiniu bitu ="0" (viso 8bit), gaunam ACK, memory location 8bit, gauname ACK, duomenys (kuriuos norime irasyti) 8bit, gauname ACK, "Stop"
Nuskaityti:
"Start", slave address su paskutiniu bitu "0" (viso 8bit), gaunam ACK,
memory location 8bit, gaunam ACK, "Start" slave address su paskutiniu bitu =1, gaunam ACK, nuskaitome 8 bitus ("1" siunciamas kaip Gnd, "0" kaip Vdd, nesusipainiokite. Taip pat reikia butinai SDA pin nustatyti ivedimo rezima, nes jeigu bus nustatyta kaip out ir isejime pasiliks "1" - Vdd, tai uztrumpinama grandine (kai slave siuncia ACK ar duomenu "1", tai SDA sujungia su Gnd), nusiunciam ACK ir "Stop".
Tik prijungus maitinima ir kvarca prie laikrodzio PCF8583 galima gauti tikslu 1Hz staciakampi signala INT pin'e (7), kuri galima iskart nuskaityti su uC arba tiesiog prijungti LED ir nuosekliai 1kOhm i Vdd.
Jei kazkam reiktu ASM kodo, tai galeciau imesti. Viskas parasyta elementariomis instrukcijomis, ~150 eiluciu. |
|
|
|
|
|
 |
 |
I2C bus |
Parašytas: 2006 09 25, 20:24 |
|
|
|
|
| būk geras dzoni įmesk tą programą, labai labai ačiū. |
|
_________________ nepamirškit, klysti žmogiška
privatas - privatiems klausimams
arch linux  |
|
|
|
 |
I2C bus |
Parašytas: 2006 09 26, 07:56 |
|
|
|
|
| Parasyk savo e-mail'a. Nenoriu cia sutalpinti visu 150 eiluciu. |
|
|
|
|
|
 |
I2C bus |
Parašytas: 2006 09 26, 14:49 |
|
|
|
|
|
_________________ I GAVE UP DRINKING, SMOKING AND SEX!
it was the worse 15 minutes of my life! |
|
|
|
 |
I2C bus |
Parašytas: 2006 09 26, 15:30 |
|
|
|
|
| Dzonis rašo: |
| Parasyk savo e-mail'a. Nenoriu cia sutalpinti visu 150 eiluciu. |
mano e-paštas yra prie aprašymo, bet tai neesmė, jauleris@yahoo.com. ačiū dar kartą. |
|
_________________ nepamirškit, klysti žmogiška
privatas - privatiems klausimams
arch linux  |
|
|
|
 |
I2C bus |
Parašytas: 2006 09 27, 01:50 |
|
|
|
|
| Dzonis rašo: |
| Parasyk savo e-mail'a. Nenoriu cia sutalpinti visu 150 eiluciu. |
Tokiu atveju galima pasinaudoti pastebin.com |
|
_________________ Don't drink and drive, just smoke and fly! |
|
|
|
 |
I2C bus |
Parašytas: 2006 09 27, 10:21 |
|
|
|
|
|
 |
I2C bus |
Parašytas: 2006 09 28, 21:49 |
|
|
|
|
> Dzonis,
As laikroduka su PCF8583 siandien pakuriau per ~1val CodeVisionAVR yra visa gatava biblioteka, tai panaudojau pora funkciju, getTime, setTime ir viskas. Aisku idomu ir gerai viska paciam isiaiskint, bet man reikejo greitai tai nuejau lengviausiu keliu. Ziuresiu tik kaip tas laikrodukas tiksliai eis, reikia paderint kondensatoriu kazkaip, bet testavimas toks daug laiko uzims :/ |
|
|
|
|
|
 |
I2C bus |
Parašytas: 2006 09 29, 20:49 |
|
|
|
|
| Man tas laikrodukas kartais neuzsikuria, bet siek tiek statinio kruvio nuo pirsto ji atgaivina. Reiks kazka sugalvoti kaip viska uzdaryti korpuse. |
|
|
|
|
|
 |
I2C bus |
Parašytas: 2006 09 30, 09:12 |
|
|
|
|
| Dzonis rašo: |
| Man tas laikrodukas kartais neuzsikuria, bet siek tiek statinio kruvio nuo pirsto ji atgaivina. |
Kondensatorių apie 100pF užkabinti reiktų tarp OSC1 ir VCC. Padės.
Žinoma, paleidimas statinio krūvio pagalba irgi geras variantas  |
|
|
|
|
|
 |
I2C bus |
Parašytas: 2006 10 03, 23:30 |
|
|
|
|
Uzkabinau keramikini 100pF kondika tarp OSCI - Vdd (+5V) ir visai nebeuzsikure...
Ar i Vss (0V) reiktu? |
|
|
|
|
|
 |
I2C bus |
Parašytas: 2006 10 04, 00:36 |
|
|
|
|
tu visai isprotejai, 100pf ?
su tokiu viska uzgesinsi.
reikia du kondensatorius i korpusa priklausomai nuo daznumo.
parpastai 5-20pf kai daznumas nuo 5-20mhz
jei tai laikrodinis kvarcas tai manau po kokius 30pf abiejose kvarco pusese i korpusa.
bet tiksliau reiktu datasheete pasiziureti ar kokiose nors panasu kvarca naudojanciose shemose. |
|
|
|
|
|
 |
I2C bus |
Parašytas: 2006 10 04, 20:27 |
|
|
|
|
| pagal datasheeta ten vienas 5-25pF kondensatorius tarp OSCI ir Vdd. Toki dejau ir veike, nepastebejau kad kazkada neuzsikurtu |
|
|
|
|
|
|
 |
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 |
 |
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 |
 |
Must have farming mods
Farming simulator modhub,
Best farming simulator mods |
|

|
 |