Pls help me

L

Londona

Guest
Es lietoju MSP430F449 sazināties RTC (PCF8563) ar programmatūras I2C.Šeit es esmu sniedzot I2C kodē PIC picrocontroller.Pls vienā pārvērst mani izmantot manā mikro kontrolieris.Šeit es esmu piestiprināšanas cilpu raktuvju un ņemot vērā, vadu ķēdē.

Manā ķēde nav sprieguma avots ir savienots pie SDA, SCL līnijām.kodu,

Šis piemērs parāda, kā īstenot programmatūras I2C kapteinis, ieskaitot pulksteni strečings.Tas ir rakstīts C PIC procesoru, bet jāpiemēro visvairāk procesori ar nelielām izmaiņām to I / O pin definīcijas.Tā ir piemērota, lai kontrolētu visas mūsu I2C balstās robots moduļiem.Ņemot vērā to, SCL un SDA pozīcijas ir pieejamas drain veidu, mēs izmantojam tristate kontroles reģistrs kontrolēt produkciju, saglabājot izejas reģistrs zems.Ostas pins vēl joprojām būs nepieciešams lasīt, lai gan, lai viņi definē kā SCL_IN un SDA_IN.Šī definīcija un inicializēšanu, iespējams, ir viss, kas Jums
būs nepieciešams mainīt par citu procesoru.

# define SCL TRISB4 / / I2C autobusu
# define SDA TRISB1 / /
# define SCL_IN RB4 / /
# define SDA_IN RB1 / /

Lai inicializ ostām iestatītu izejas resisters uz 0 un tristate reģistriem, 1, kas atsp rezultāti un ļauj viņiem vilkšanai augstu ar rezistoriem.
SDA = SCL = 1;
SCL_IN = SDA_IN = 0;

Mēs izmantojam nelielu kavēšanos rutīnas starp SDA un SCL izmaiņas dot skaidru secība par I2C autobusu.Tas nav nekas vairāk kā subroutine sarunu un atpakaļ.
anulēts i2c_dly (spēkā neesošs)
(
)

Turpmāk 4 funkcijas nodrošina primitīvas sākt, bremžu, lasīt un rakstīt sekvences.Visi I2C darījumu var būvēt no tiem.
anulēts i2c_start (spēkā neesošs)
(
SDA = 1; / / i2c sākt bitu secība
i2c_dly ();
SCL = 1;
i2c_dly ();
SDA = 0;
i2c_dly ();
SCL = 0;
i2c_dly ();
)

anulēts i2c_stop (spēkā neesošs)
(
SDA = 0; / / i2c pieturas bitu secība
i2c_dly ();
SCL = 1;
i2c_dly ();
SDA = 1;
i2c_dly ();
)

neparakstīts CHAR i2c_rx (CHAR ack)
(
CHAR x, d = 0;
SDA = 1;
par (x = 0; x <8; x ) (
d <<= 1;
do (
SCL = 1;
)
while (SCL_IN == 0); / / Nogaida, SCL pulksteni strečings
i2c_dly ();
ja (SDA_IN) d | = 1;
SCL = 0;
)
if (ack) SDA = 0;
cits SDA = 1;
SCL = 1;
i2c_dly (); / / sūtīt (N) ACK bit
SCL = 0;
SDA = 1;
atgriezties D;
)

bit i2c_tx (neparakstīta CHAR d)
(
CHAR x;
statiskā bit b;
par (x = 8; x; x -) (
if (d & 0x80) SDA = 1;
cits SDA = 0;
SCL = 1;
d <<= 1;
SCL = 0;
)
SDA = 1;
SCL = 1;
i2c_dly ();
b = SDA_IN; / / iespējams ACK bit
SCL = 0;
atgriešanās b;
)

 
Rośnie w siłę grupa chińskich producentów smartfonów, którzy pod względem globalnej sprzedaży tych urządzeń plasują się tuż za Apple i Samsungiem. Czy zalew tanich smartfonów "made in China" zagraża gigantom?

Read more...
 

Welcome to EDABoard.com

Sponsor

Back
Top