Elektronika.lt
 2024 m. balandžio 19 d. Projektas | Reklama | Žinokite | Klausimai | Prisidėkite | Atsiliepimai | Kontaktai
Paieška portale
EN Facebook RSS

 Kas naujo  Katalogas  Parduotuvės  Forumas  Tinklaraščiai
 Pirmas puslapisSąrašas
 Forumas / + pokalbiai
 - Paieška forume
 - D.U.K. / Forumo taisyklės
 - Narių sąrašas
 - Registruotis
 - Prisijungti

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 2024 04 19, 11:31. Visos datos yra GMT + 2 valandos.
 Forumas » Mikrovaldikliai » I2C tarp atmega16
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 12
Pereiti prie 1, 2  Toliau
Pradėti naują temą  Atsakyti į pranešimą Rodyti ankstesnį pranešimą :: Rodyti kitą pranešimą 
 I2C tarp atmega16
PranešimasParašytas: 2007 04 24, 10:58 Pranešti apie taisyklių pažeidimą Atsakyti su citata
RUSH-
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Noriu sujungti du mikrokontrolerius I2C sasaja. Gal kas zino kokia biblioteka, o gal kas galetu mesteleti koki pavyzdeli. Buciau labai dekingas. Naudoju codevision. Pradziai noriu tik pasibandyti. Sakykim kad vienas issiustu duomenis o kitas priimtu ir uzdegtu dioda.
 I2C tarp atmega16
PranešimasParašytas: 2007 04 24, 11:00 Pranešti apie taisyklių pažeidimą Atsakyti su citata
circuit
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką Apsilankyti vartotojo tinklapyje
Siūlyčiau naudoti hardwarinį protokolą - nereiks sukti galvos dėl bitų, nereiks jokių bibliotekų. Viskas puikiai aprašyta datašyte....

O šiaip, jei atstumas nedidelis, gali naudoti SPI protokolą - žymiai paprastesnis, pakanka įrašyti skaičių į registrą ir kontroleris viskuo pasirūpina.
 I2C tarp atmega16
PranešimasParašytas: 2007 04 24, 12:30 Pranešti apie taisyklių pažeidimą Atsakyti su citata
RUSH-
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Pas mane atstumas bus didelis todel naudosiu I2C. As ir pats galvoju naudoti hardwarini protokola. Bet tiesiog nezinau kaip tai turi atrodyti programiskai codevision aplinkoje. Man su programavimu pokolkas dar sunku. O zubrinti sausa teorija kazkaip neidomu. Geriau susirandu gerai veikiancia programa, paziuriu kaip ji realiai veikia, o jau po to studijuoju kas ka daro.
 I2C tarp atmega16
PranešimasParašytas: 2007 04 24, 13:39 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Digix
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
codevision turi savo i2c biblioteka, skaityk helpa
 I2C tarp atmega16
PranešimasParašytas: 2007 04 25, 13:00 Pranešti apie taisyklių pažeidimą Atsakyti su citata
augyy
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
codevision ta biblioteka tai softwarinio I2C, ir kiek pamenu tik masteriui
 I2C tarp atmega16
PranešimasParašytas: 2007 04 25, 14:45 Pranešti apie taisyklių pažeidimą Atsakyti su citata
RUSH-
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Jo ten tik masteris. O kaip turi atrodyti slave? Gal galima ka nors pakeisti masterio programoje ir naudoti kaip slave?

Master pavyzdys:

asm
.equ __i2c_port=0x18
.equ __sda_bit=3
.equ __scl_bit=4
#endasm

#include <i2c.h>
#include <delay.h>

#define EEPROM_BUS_ADDRESS 0xa0

//read a byte from the EEPROM
unsigned char eeprom_read(unsigned char address) {
unsigned char data;
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address);
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS|1);
data=i2c_read(0);
i2c_stop();
return data;
}

// write a byte to the EEPROM
void eeprom_write(unsigned char address, unsigned char data) {
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(data);
i2c_start();
i2c_stop();
// 10ms delay to complete the write operation
delay_ms (10);
}

void main(void) {
unsigned char i;
/*initialize the I2c bus*/
i2c_init();
/* write the byte 55h at address AAh */
eeprom_write(0xaa, 0x55);
/* read the byte from address AAh */
i=eeprom_read(0xaa);
while (1); /* loop forever*/
}
 I2C tarp atmega16
PranešimasParašytas: 2007 04 25, 16:03 Pranešti apie taisyklių pažeidimą Atsakyti su citata
circuit
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką Apsilankyti vartotojo tinklapyje
Rašiau kažkada funkciją hardwariniam protokolui:
Kodas:
// Hardwarinis I2C
#define i2c                     TWDR
#define i2cEn                   0x04
#define i2cConf                 TWCR
#define i2cStatus               TWSR
#define i2cIntFlag              0x80
#define i2cReceiveACKEn         0x40
#define i2cStart                i2cIntFlag | i2cEn | 0x20
#define i2cStop                 i2cIntFlag | i2cEn | 0x10
#define i2cStatusStart          0x08 
#define i2cStatusRepStart       0x10
#define i2cStatusSlaveACK       0x18
#define i2cStatusSlaveRd        0x40
#define i2cStatusReceive        0x50
#define i2cStatusReceiveLast    0x58 
#define i2cStatusDataACK        0x28 
unsigned char I2Cbuffer[6];   

unsigned char I2CwritePage(unsigned char Adr, unsigned int adress, unsigned int Length, flash char *BufferStart1, char *BufferStart2, char where){
        unsigned char i = 0;
        unsigned int j; 
repeatAll: 
        if(i>0) i2cConf = i2cStop;
        i++;
        if(i > 100) return false;
        i2cConf = i2cStart;
        while (!(i2cConf & i2cIntFlag));
        if ((i2cStatus & 0xF8) != i2cStatusStart) goto repeatAll;
             
        i2c = Adr;
        i2cConf = i2cIntFlag | i2cEn;         
        while (!(i2cConf & i2cIntFlag));
        if ((i2cStatus & 0xF8) != i2cStatusSlaveACK) goto repeatAll;
       
        i2c = RetLowHightByteFromInt(adress,HightByte);
        i2cConf = i2cIntFlag | i2cEn;   
        while (!(i2cConf & i2cIntFlag));
        if ((i2cStatus & 0xF8) != i2cStatusDataACK) goto repeatAll;
       
        i2c = RetLowHightByteFromInt(adress,LowByte);
        i2cConf = i2cIntFlag | i2cEn;   
        while (!(i2cConf & i2cIntFlag));
        if ((i2cStatus & 0xF8) != i2cStatusDataACK) goto repeatAll;
         
        for (j = 0; j < Length; j++){
                if(where)
                        i2c = *(BufferStart1 + j);
                else
                        i2c = *(BufferStart2 + j);
                i2cConf = i2cIntFlag | i2cEn;   
                while (!(i2cConf & i2cIntFlag));
                if ((i2cStatus & 0xF8) != i2cStatusDataACK) goto repeatAll;
         }
         
        i2cConf = i2cStop;   
        i2cConf = 0;       
        return true;
}


Čia išrankiojau iš visos programos, tai gal dar trūksta kokių konstantų ar dar ko - manau panorėjęs išsiaiškinsi ir pritaikysi savo reikmėms.
 I2C tarp atmega16
PranešimasParašytas: 2007 04 27, 12:56 Pranešti apie taisyklių pažeidimą Atsakyti su citata
jedas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
Visu pirma jei atstumas didelis naudok ne i2c, o uart'a + rs485 transyveri

_________________
-----
That's what she said.
 I2C tarp atmega16
PranešimasParašytas: 2007 04 27, 13:06 Pranešti apie taisyklių pažeidimą Atsakyti su citata
RUSH-
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
matai pas mane pries vienos sasajos bus prijungta daug irenginiu ivairiais atstumais. Todel patogaiu naudoti I2C + P82B715 buferi
 I2C tarp atmega16
PranešimasParašytas: 2007 04 27, 13:15 Pranešti apie taisyklių pažeidimą Atsakyti su citata
jedas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
rs485 dabartiniai transyveriai leidia atstuma iki 1200metru, priklausomai nuo atstumo gali buti iki 256 irenginiu ant vienos linijos, greitis velgi priklauso bet maksimalus iki 40 mbps. Papasakok kokioj situacijoj tau sito nepakanka?

_________________
-----
That's what she said.
 I2C tarp atmega16
PranešimasParašytas: 2007 04 27, 19:37 Pranešti apie taisyklių pažeidimą Atsakyti su citata
JAULER
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką MSN Messenger
realiai bet koks interface leidžia padaryt bet kiek priimančių ųC, tiesiog padaryk adresavimo sistemą, t.y. kad kiekvienas ųC turi adresą, ir jei tai ne jo adresas, reiškia tada jis tiesiog nekreipia dėmesio į einančius duomenis, jei adresas tinka, tada jau kreipia dėmesį. Taip galima padaryt su bet kokiu interface.

_________________
nepamirškit, klysti žmogiška Wink
privatas - privatiems klausimams
arch linux Wink Smile
 I2C tarp atmega16
PranešimasParašytas: 2007 04 27, 20:13 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Digix
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
rs485 tai tik signalu standartas.
prie jo konverterio sekmingai galima pajungti ir i2c ir spi ir betka kita.
 I2C tarp atmega16
PranešimasParašytas: 2007 04 27, 22:08 Pranešti apie taisyklių pažeidimą Atsakyti su citata
jedas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
Na i2c atveju reiktu 4 transyveriu, spi 6, o uarto atveju tiktai 2. Beje ir kainas uzmeciau aki, minetasis i2c buferis kastuoja 22-50 lt lemonoj uzsakoma preke. rs485 5-15lt mazdaug.

_________________
-----
That's what she said.
 I2C tarp atmega16
PranešimasParašytas: 2007 04 30, 17:20 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Zaria_klp
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką Apsilankyti vartotojo tinklapyje
vat vos nepadariau kaip kad visi daro - kyla beda, ibega i foruma, ir paraso klausima. o as va biski akim permeciau ir jau zinau kad cia galiu paklaust:

keli prietaisai prie vieno uart'o imanoma? itariu kad taip, bet jungimo nelabai issivaizduoju, negi papras lygegreciai ir jungti? gal koki linka mestelkit jei klausima supratot (bo man kazko googlė nepadejo).
 I2C tarp atmega16
PranešimasParašytas: 2007 04 30, 17:46 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Digix
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
jei jungsi 1 master kiti slave tai tiesiog visus slave junk lygegreciai (su perdavimu yra bisi problemu, nes kai prietaisas neperduoda nieko jo tx isejima reikia isjungti.)

jei nori ka visi galetu kalbeti su visais tai su uart nieko gero nebus, nebent panaudosi MBUS varianta, kai tx ir rx i viena laida sujungti.

shema tokia kaip labai mobiliu telefonu kabelio
pvz tokia
http://www.panuworld.net/nuukiaworld/hardware/cables/basics.htm
http://www.mbarron.net/mbus/
zinoma jei jungi prie procesoriaus to max232 nebereikia
Pradėti naują temą  Atsakyti į pranešimą Pereiti prie 1, 2  Toliau
 
Forumo sistema: phpBB
 „Google“ paieška forume
 Kas naujesnio?
 Naujos temos forume

Global electronic components distributor – Allicdata Electronics

Electronic component supply – „Eurodis Electronics“

LOKMITA – įvairi matavimo, testavimo, analizės ir litavimo produkcija

Full feature custom PCB prototype service

GENERAL FINANCING BANKAS

Mokslo festivalis „Erdvėlaivis Žemė

LTV.LT - lietuviškų tinklalapių vitrina

„Konstanta 42“

Technologijos.lt

Buitinė technika ir elektronika internetu žemos kainos – Zuza.lt

www.esaugumas.lt – apsaugok savo kompiuterį!

PriedaiMobiliems.lt – telefonų priedai ir aksesuarai

„Deinavos baldai“ — šeimos baldai

FS 22 Tractors
Farming Simulator 19 Mods, FS 22 Maps, FS22 Mods
ETS2 Mods
ETS2 Trucks, ETS2 Bus, Euro Truck Simulator 2 Mods
FS22 Tractors
Farming Simulator 22 Mods, FS22 Maps, FS22 Trucks
VAT calculator
VAT number check, What is VAT, How much is VAT
Paskola internetu
Vartojimo paskola, paskola automobiliui, paskola būsto remontui
Thermal monocular
Thermal vision camera,
Night vision ar scope,
Night vision spotting scope
FS22 Mods
FS22 Harvesters, FS22 Tractors Mods, FS22 Maps Mods
FS22 Mods
FS22 Maps,
FS22 Harvesters,
FS22 Tractors
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija
Sims 4 Mods
Sims 4 CC Clothes,
Sims 4 Hair CC,
Sims 4 Skill Cheat
Optic sight
Binoculars for hunting elk,
Best compact binoculars,
Riflescope hunting
Reklama
‡ 1999– © Elektronika.lt | Autoriaus teisės | Privatumo politika | Atsakomybės ribojimas | Turinys | Reklama | Kontaktai LTV.LT - lietuviškų tinklalapių vitrina
Script hook v, Openiv, Menyoo
gta5mod.net
Farming Simulator 2019 Mods, FS22 Mods, FS22 Maps
farmingsimulator19mods.fr
Optical filters, UV optics, electro optical crystals
www.eksmaoptics.com
Reklamos paslaugos
SEO sprendimai

www.addad.lt
Elektroninių parduotuvių optimizavimas „Google“ paieškos sistemai
www.seospiders.lt
FS22 mods, Farming simulator 22 mods,
FS22 maps

fs22.com
Reklama


Reklama