Мазмуну:

IOCту колдонуу менен эки OOBoardду туташтыруу: 4 кадам
IOCту колдонуу менен эки OOBoardду туташтыруу: 4 кадам

Video: IOCту колдонуу менен эки OOBoardду туташтыруу: 4 кадам

Video: IOCту колдонуу менен эки OOBoardду туташтыруу: 4 кадам
Video: Айдоочулар эми техпаспорт, күбөлүгүн телефондон көрсөтсө болот 2024, Ноябрь
Anonim
I2Cди колдонуу менен эки OOBoardду бириктирүү
I2Cди колдонуу менен эки OOBoardду бириктирүү

Бул көрсөтмө I2Cди колдонуу менен эки OOBoardду кантип туташтырууну камтыйт.

1 -кадам: I2C Network Busга туташуу

I2C Network Busга туташуу
I2C Network Busга туташуу
I2C Network Busга туташуу
I2C Network Busга туташуу

OOBoardsте эки I2C автобусу, жергиликтүү автобус жана тармактык автобус бар.

OOPIC коду негизинен интерпретацияланган тил, башкача айтканда, "код" EEPROMдо сакталат жана реалдуу убакытта микропроцессор тарабынан окулат/чечмеленет. EEPROM микроконтроллер менен байланышуу үчүн LOCAL I2C автобусун колдонот. Эгерде сиз бул жергиликтүү автобусту осциллографта карасаңыз, тынымсыз чырылдашууну көрөсүз. OOBoards такталарында жергиликтүү автобус I2C туташтыргычы менен туташкан, бул биз каалагандай боло бербейт. NETWORK автобусу, адатта, башка түзмөктөр менен байланышуу үчүн колдонулган автобус болуп саналат, OOBoards бул автобустун туташтыргычы жок. Бул автобуска жетүү үчүн сиз микро контроллердин 42 жана 37 -пиндерине зымдарды ширетишиңиз керек (схемада N_SDA, N_SCL менен белгиленген).

2 -кадам: Pullup Resistors кошуу

SDA жана SCL туташуулары ар бир процессорго орнотулгандан кийин, эки такта иштей алат

SDAны SDAга, SCLди SCLге жана такталардын ортосунда жалпы жерге туташтыруучу зымды туташтыруу менен бири -бири менен байланышта болот. Сизге ар бир линияда тартылуучу резистор керек болот (мен 12к колдондум, бирок бул менин тегерегимде болгон нерсе). Белгилей кетчү нерсе, сизге эки резистордун жалпы саны үчүн бир сапта бир гана тартылуу резистору керек (4 эмес).

3 -кадам: Кулду программалоо

Эми физикалык байланыштар бар болгондуктан, кул микроконтроллерди программалашыңыз керек болот. Мен сизди баштоо үчүн төмөндөгү кодду коштум.

Dim OTDELinkDim LED катары Жаңы oDIO1Sub Негизги LED () жана биздин I2C дарегибизди 2ге коюңуз (эскертүү, бул биз кожоюн кодунда орнотулган алыстан жана апостресске дал келиши керек) ooPIC. Node = 2 & a LED LED. IOLine = 5 LED. Багыты. = cvOutput & aposnow, биздин DDELink объектибиздин чыгышын & aposthe LEDине байланыштырып, күйгүзүңүз … азыр автоматтык түрдө, LED SLAVE. Output. Link (LED) SLAVE. Operate = cvTrueEnd Sub

4 -кадам: Master программасын

Акырында, башкы микроконтроллерди программалаңыз. DDELinkтин. Location касиетин койгон саптарга жакшылап көңүл буруңуз: Бул туура коюлбаса, бул иштебейт!

Dim Master катары жаңы oDDELinkDim зымы Жаңы oWireDim hz1 катары Жаңы oBitSub Main () & 1 апталык таймерди биз жете ала турган жерге кичине байланыштырабыз & aposthis бит азыр секундасына бир жолу которулат. Input. Link (ooPIC. Hz1) зым. Шилтеме (hz1) желе. Operate = cvTrue & aposthis жергиликтүү микроконтроллерибиздин I2C дарегин орнотот жана I2C интерфейси aposthe орнотулганга чейин активдүү эмес ooPIC. Node = 1 & биз DDELink объектибизди орнотобуз, биздин киргизүү бит hz1 & aposnote Бизде Master. Input. Link (hz1) & aposthis - бул алыскы микроконтроллердин I2C дареги, кул кодун апосин деп айтуу менен, биз 2 дареги бар экенин айтабыз. Master. Node = 2 & aposugh… бул жагымсыз бөлүк, бул DDELink & aposobjectтин кул жана апосс мейкиндигиндеги "дареги". Бул санды түшүнүү үчүн & aposwe кул кодун ачып, чогултуусу керек, андан кийин View-> Compiled Codeго өтүү керек. & aposlook сыяктуу нерсеге & aposlook: & aposL *. Construct. Begin; Dim катары жаңы oDDELink & aposwhere * - бул каалаган сан, жана сиздин DDELink объектиңиздин аты & кул кодуңузду апосин. Төмөндөгү сап төмөнкүдөй бир нерсени окушу керек: & aposC0020: 041; Бул … Апрестин оң жагындагы & апостун номери: & apos - бул DDELink объектисинин кулу Master. Location = 41 & aposthis биз жөнөтө турган объектти билдирет маалыматтар (башкача айтканда, биздин. Input мулк & апосто кулдан. көчүрүү маалыматы = cvTrue Do & aposcheck, эгер биз Master. Transmitting = cvFalse Анда & бул маанини 1ге коё турган болсок, анда мастер кулга & апоснотко маани жөнөтөт, бул Master. Sync берүү аяктагандан кийин автоматтык түрдө 0гө кайтарылат. = 1 эгер LoopEnd Sub болсо бүтөт

Сунушталууда: