murmur 0 29 сентября, 2011 Опубликовано 29 сентября, 2011 · Жалоба В чем разница между TWI и i2c? Коллеги ни разу не сталкивалась ни с тем ни с этим. Хотела глянуть пример кода и залез в Project Wizard от CodeVision. Вкладка I2C дала такие строки в примере кода: #include <mega32.h> // I2C Bus functions #asm .equ __i2c_port=0x1B;PORTA .equ __sda_bit=0 .equ __scl_bit=1 #endasm #include <i2c.h> // Declare your global variables here void main(void) { // I2C Bus initialization i2c_init(); while (1) { // Place your code here }; } вкладка 2-wire(i2c) дала такой код: #include <mega32.h> void main(void) { // 2 Wire Bus initialization // Generate Acknowledge Pulse: Off // 2 Wire Bus Slave Address: 0h // General Call Recognition: Off // Bit Rate: 400,000 kHz TWSR=0x00; TWBR=0x0C; TWAR=0x00; TWCR=0x04; while (1) { // Place your code here }; } Обращает на себя внимание то, что в первом примере можно назначать пины для SDA и SCL. Это что - что-то типа программного i2C? Во втором примере пины не назначаются, то есть работать будут аппаратные SCL и SDA.. Я почему спрашиваю - лоханулась при покупке АЦП - купил два с одинаковыми адресами. В связи с чем хочу поинтересоваться, могу ли я все же их исполользовать, повесив их на разные линии, с одной общаяясь по i2с, с другой по 2-wire(i2c)? Или же купить АЦП с другим адресом? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 29 сентября, 2011 Опубликовано 29 сентября, 2011 · Жалоба Обращает на себя внимание то, что в первом примере можно назначать пины для SDA и SCL. Это что - что-то типа программного i2C? Очень на то похоже. Во втором примере пины не назначаются, то есть работать будут аппаратные SCL и SDA.. Именно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 29 сентября, 2011 Опубликовано 29 сентября, 2011 · Жалоба В чем разница между TWI и i2c?Принципиально - никакой. Какие хоть АЦП купили , может у них есть встроенное изменение адреса , или задействовать одну ножку проца , для поочередного включения АЦП Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
murmur 0 29 сентября, 2011 Опубликовано 29 сентября, 2011 · Жалоба ADS1100. Точнее ADS1100A0 Судя по даташиту адрес зашивается на фабрике. А все-таки что это за зверь такой - TWI, который вроде бы аппаратен, но позволят изменить назначение ножек? Можно ли эту способность исплользовать? Я уже однажды комбинировала аппаратный и программный SPI прокатывало, нельзя ли здесь такой трюк провернуть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 29 сентября, 2011 Опубликовано 29 сентября, 2011 · Жалоба ADS1100. Точнее ADS1100A0 Судя по даташиту адрес зашивается на фабрике. А все-таки что это за зверь такой - TWI, который вроде бы аппаратен, но позволят изменить назначение ножек? Можно ли эту способность исплользовать? Я уже однажды комбинировала аппаратный и программный SPI прокатывало, нельзя ли здесь такой трюк провернуть? Да это одно и тоже , как братья близнецы. Просто одна фирма , другой фирме платить за использование разработанной ей протокола не хочет , вот и обозвали TWI. Можете работать как аппаратно так и программно , как Вам захочется. Во многих современных MK полностью реализован аппаратный вариант этого протокола. Программно можно дёргать ножками , если его в чипе нет или надо несколько I2C ==(TWI) Да , управлять ими можно только по питанию или поменять одну из них на ADS1100A1 -ADS1100A7 у продавца или через мультиплексор самой шиной Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 41 29 сентября, 2011 Опубликовано 29 сентября, 2011 · Жалоба А все-таки что это за зверь такой - TWI I2C и TWI - это те же яйца, только вид с боку. Если мне склероз не изменяет, то I2C - это зарегистрированная торговая марка Филипса, и любой производитель, заявляющий, что у него на борту имеется I2C, обязан отстегивать филипсу некие отчисления за использование торговой марки. Поэтому прочие производители и обзываю двухпроводной интерфейс другими словами из трех букв :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
murmur 0 29 сентября, 2011 Опубликовано 29 сентября, 2011 · Жалоба ок, господа, допустим, я цепляю один ацп на SDA и SCL, другой на PORTA.0 и PORTA.1. Далее делаю так: #include <mega32.h> // I2C Bus functions #asm .equ __i2c_port=0x1B;PORTA .equ __sda_bit=0 .equ __scl_bit=1 #endasm #include <i2c.h> // Declare your global variables here void main(void) { // 2 Wire Bus initialization // Generate Acknowledge Pulse: Off // 2 Wire Bus Slave Address: 0h // General Call Recognition: Off // Bit Rate: 400,000 kHz TWSR=0x00; TWBR=0x0C; TWAR=0x00; TWCR=0x04; // I2C Bus initialization i2c_init(); while (1) { // Place your code here i2c_start(); i2c_write(0b10000000); i2c_read(1); i2c_write(0b00000000); i2c_read(1); i2c_write(0b00111111); i2c_read(1); i2c_stop(); }; } Ну и в теле главного цикла операции чтения TWI, пока еще не разобралась с ними. Будет работать? Напоминаю остальным, чтобы не отвлекаться от темы - есть два устройства с одинаковым адресом. Как их рулить одним микроконтроллером без конфликтов? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 29 сентября, 2011 Опубликовано 29 сентября, 2011 · Жалоба Разные адреса нужны, чтобы различать устройства, сидящие на одной физической шине. Вы делаете две физически разные шины - нет никакого конфликта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 29 сентября, 2011 Опубликовано 29 сентября, 2011 · Жалоба Я Вам выше написал , задействуйте только одну ножку порта , для переключения микросхем , чем ещё две + тупо сидеть в delays Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
murmur 0 29 сентября, 2011 Опубликовано 29 сентября, 2011 · Жалоба что конкретно вы подразумеваете под переключением микросхем? Как вы предлагаете это осуществить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 29 сентября, 2011 Опубликовано 29 сентября, 2011 · Жалоба что конкретно вы подразумеваете под переключением микросхем? Как вы предлагаете это осуществить? Это просто два полевика P и N проводимости (типа MOSFET ) / Истоки на питания - стоки на питание АЦП - затворы на порт MK. 0 - включает один выключает другой, 1 - наоборот . I2C подключены напрямую на оба АЦП. Ну о том , что этот же 0/1 использовать как флажок с какого ADC принимаете данные - и говорить нечего. 2-ой способ Подключения такие же только отключаете шину I2C , но транзисторов 4 или сборки ( например) типа FDS9933BZ и её антипод FDS9926A ( в открытом состоянии DS сотые ома). Для первого варианта тоже есть сборки , но только с разнополярными полевиками внутри. Только спросите и тут их Вам набросают ........( слово выражающее количество ещё не придумано в русском языке. Личная цензура запрещает употреблять известные слова при общении с противоположным полом ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
murmur 0 29 сентября, 2011 Опубликовано 29 сентября, 2011 · Жалоба у....может лучше посоветуете коммутатор аналогового сигнала? Я собираюсь этим АЦП оцифровывать аналоговое напряжение с выхода микросхемы AD595 - усилитель термопары. МОжет мне проще использовать 1 ацп, коммутируя его вход на 2 разных выхода AD595 ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 29 сентября, 2011 Опубликовано 29 сентября, 2011 · Жалоба у....может лучше посоветуете коммутатор аналогового сигнала? Я собираюсь этим АЦП оцифровывать аналоговое напряжение с выхода микросхемы AD595 - усилитель термопары. МОжет мне проще использовать 1 ацп, коммутируя его вход на 2 разных выхода AD595 ? у.... Сначала задача стояла несколько иначе . Схемку или блок схемку покажите , что в итоге Вы хотите , а там уже и прикидывать будем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
murmur 0 29 сентября, 2011 Опубликовано 29 сентября, 2011 · Жалоба AD595<------К-термопара | АНАЛОГОВЫЙ КОММУТАТОР---->ADS1100-->>ATMEGA8 | AD595<------К-термопара Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 29 сентября, 2011 Опубликовано 29 сентября, 2011 · Жалоба Ох , почитал я про этот усилитель , не та уж всё просто с ним и как поведёт он себя с коммутатором я не скажу. http://electronix.ru/forum/index.php?showtopic=44254 Думаю , что тему заметят и те кто с ним работал - подскажут Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться