|
|
  |
ATmega8. TWI + ADC., Возможна ли одновременная работа? |
|
|
|
Jan 17 2008, 06:13
|
Группа: Новичок
Сообщений: 3
Регистрация: 17-01-08
Пользователь №: 34 147

|
Допускаю, что тема встречалась, но не нашел. ATmega8 (выбрана, т. к. Tiny мало, Mega>8 много). Задача: измерить 2-мя каналами ADC и передать по TWI. Проблема: ADC4, ADC5 "сидят" на SDA, SDL (PC4, PC5). Вопрос: можно ли одновременно включить TWEN и ADEN, чем будут тогда являться выводы PC4, PC5 (есть ли приоритет)? Или обязательно идти по длинному пути: включить ADC, измерить - выключить ADC - включить TWI, передать - выключить TWI - и т. д.?
|
|
|
|
|
Jan 17 2008, 08:35
|
Участник

Группа: Новичок
Сообщений: 51
Регистрация: 19-06-07
Из: Республика Беларусь, г.Витебск
Пользователь №: 28 538

|
А как Вы собираетесь измерять напряжение при подключенном интерфейсе TWI (по линиям SCL и SDA должны стоять подтягивающие резисторы; в свою очередь, работающий TWI будет шунтировать источник измеряемого напряжения)? Можно, конечно, поставить цифровой переключатель, но зачем так все усложнять.
Проще использовать для измерения другие входы, например ADC2, ADC3.
|
|
|
|
|
Jan 17 2008, 10:13
|
Группа: Новичок
Сообщений: 3
Регистрация: 17-01-08
Пользователь №: 34 147

|
Цитата(Busel Roman @ Jan 17 2008, 18:35)  А как Вы собираетесь измерять напряжение при подключенном интерфейсе TWI (по линиям SCL и SDA должны стоять подтягивающие резисторы; в свою очередь, работающий TWI будет шунтировать источник измеряемого напряжения)? Можно, конечно, поставить цифровой переключатель, но зачем так все усложнять.
Проще использовать для измерения другие входы, например ADC2, ADC3. 1) Измерение идет на каналах ADC0 и ADC1. 2) Включается только полностью 6-канальный ADC, а затем выбирается мультиплексором 1 канал. Вопрос в том, можно ли использовать выводы невыбранных каналов как-то еще, или это внесет сбои в измерения.
|
|
|
|
|
Jan 17 2008, 10:14
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(SasaVitebsk @ Jan 17 2008, 10:55)  А если все каналы заняты, то сделать I2C программно на свободных ножках. Ребята, а человек не об этом спрашивает ведь. Обычная нога имеет две функции - собственно нога и какая-то периферия. Эти две ноги имеют три функции. Вниманте, вопрос - чем определяется функция ноги? Понятно, что можно мерить другими ногами, но человек спрашивает - Если он включит TWI, ноги PC4, PC5 переключатся в режим TWI. А если он включит АЦП и начнет мерить ADC0, не переключится ли при этом ADC6 тоже в аналоговый режим? для #VS - можете работать спокойно. Функция ноги определяется периферийным модулем, в данном случае TWI, а АЦП просто подключено параллельно. Т.е. вы можете, теоретически, при помощи АЦП снимать диаграмму работы TWI
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jan 17 2008, 10:24
|
Группа: Новичок
Сообщений: 3
Регистрация: 17-01-08
Пользователь №: 34 147

|
Цитата(SasaVitebsk @ Jan 17 2008, 18:55)  А если все каналы заняты, то сделать I2C программно на свободных ножках. Конечно, вариант, но если есть аппаратный Device, почему бы не использовать. Цитата(Сергей Борщ @ Jan 17 2008, 20:14)  Ребята, а человек не об этом спрашивает ведь. Обычная нога имеет две функции - собственно нога и какая-то периферия. Эти две ноги имеют три функции. Вниманте, вопрос - чем определяется функция ноги? Понятно, что можно мерить другими ногами, но человек спрашивает - Если он включит TWI, ноги PC4, PC5 переключатся в режим TWI. А если он включит АЦП и начнет мерить ADC0, не переключится ли при этом ADC6 тоже в аналоговый режим? для #VS - можете работать спокойно. Функция ноги определяется периферийным модулем, в данном случае TWI, а АЦП просто подключено параллельно. Т.е. вы можете, теоретически, при помощи АЦП снимать диаграмму работы TWI  В принципе, было такое подозрение относительно mega8 (раньше работал только с ADSP и PIC). Большое спасибо Вам и всем принявшим участие в обсуждении.
|
|
|
|
|
Jan 17 2008, 13:45
|
Участник

Группа: Новичок
Сообщений: 51
Регистрация: 19-06-07
Из: Республика Беларусь, г.Витебск
Пользователь №: 28 538

|
1) Вы не можете одновременно измерять напряжение по нескольких входам. 2) Вы не можете измерять напряжение на работающей шине TWI. Как только Вы устанавливаете бит TWEN, включается модуль TWI и берет на себя управление контактами ввода/вывода. 3) Остается длинный путь: "включить ADC, измерить - выключить ADC - включить TWI, передать - выключить TWI - и т. д."
|
|
|
|
|
Jan 17 2008, 14:13
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Busel Roman @ Jan 17 2008, 15:45)  Как только Вы устанавливаете бит TWEN, включается модуль TWI и берет на себя управление контактами ввода/вывода. Теперь покажите мне место в даташите, где сказано, что при этом вход мультиплексора АЦП отключается от ножки копуса? Когда устанете штудировать, посмотрите картинку 25 даташита. И описание к ней: Цитата AIO Analog Input/output This is the Analog Input/output to/from alternate functions. The signal is connected directly to the pad, and can be used bi-directionally.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jan 17 2008, 16:14
|
Участник

Группа: Новичок
Сообщений: 51
Регистрация: 19-06-07
Из: Республика Беларусь, г.Витебск
Пользователь №: 28 538

|
Цитата(Сергей Борщ @ Jan 17 2008, 16:13)  Теперь покажите мне место в даташите, где сказано, что при этом вход мультиплексора АЦП отключается от ножки копуса? Когда устанете штудировать, посмотрите картинку 25 даташита. И описание к ней: Руководствовался разделом "Alternate Functions of Port C": • SCL/ADC5 – Port C, Bit 5 SCL, Two-wire Serial Interface Clock: When the TWEN bit in TWCR is set (one) to enable the Two-wire Serial Interface, pin PC5 is disconnected from the port and becomes the Serial Clock I/O pin for the Two-wire Serial Interface. In this mode, there is a spike filter on the pin to suppress spikes shorter than 50 ns on the input signal, and the pin is driven by an open drain driver with slew-rate limitation. PC5 can also be used as ADC input Channel 5. Note that ADC input channel 5 uses digital power. • SDA/ADC4 – Port C, Bit 4 SDA, Two-wire Serial Interface Data: When the TWEN bit in TWCR is set (one) to enable the Two-wire Serial Interface, pin PC4 is disconnected from the port and becomes the Serial Data I/O pin for the Two-wire Serial Interface. In this mode, there is a spike filter on the pin to suppress spikes shorter than 50 ns on the input signal, and the pin is driven by an open drain driver with slew-rate limitation. PC4 can also be used as ADC input Channel 4. Note that ADC input channel 4 uses digital power.
|
|
|
|
|
Jan 17 2008, 16:26
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(Busel Roman @ Jan 17 2008, 16:45)  2) Вы не можете измерять напряжение на работающей шине TWI. Как только Вы устанавливаете бит TWEN, включается модуль TWI и берет на себя управление контактами ввода/вывода. 3) Остается длинный путь: "включить ADC, измерить - выключить ADC - включить TWI, передать - выключить TWI - и т. д." 3.)Ничего выключать не нужно, у меня в прогах работает и ADC и TWI и все одновременно, причем TWI на скорости 400KHz Если говорить о меге8, у нее в корпусе соик очень удобные ADC6,ADC7 каналы которые вобще не с чем не пересекаются. 2.) Сергей Борщ абсолютно прав, нет никаких проблем в снятии осцилограммы TWI через ADC, только правда ADC у AVR достаточно тормознутый, и рельно, это можно сделать только на скоростях TWI ~10KHz
|
|
|
|
|
Jan 17 2008, 18:20
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(singlskv @ Jan 17 2008, 19:26)  только правда ADC у AVR достаточно тормознутый, и рельно, это можно сделать только на скоростях TWI ~10KHz Можно поднять такт для АЦП и даже на 400КГц шине получится. Останется только 3-4 бита в результате, но для цифровой шины этого за глаза.
|
|
|
|
|
Jan 17 2008, 18:50
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(Qwertty @ Jan 17 2008, 21:20)  Можно поднять такт для АЦП и даже на 400КГц шине получится. Останется только 3-4 бита в результате, но для цифровой шины этого за глаза. ИМХО, на 400КГц я бы даже пробовать не стал... Вы видимо забыли учесть то что измерительный конденсатор будет подключен к измеряемому сигналу только 1,5 fADC цикла работы ADC из 13 циклов, в такой ситуации многое будет зависить от пулапов на шине TWI, конечно при пулапах порядка 1K может чего и получится снять, но я бы ограничил максимальную(теоритичекси распознаваемую) скорость порядка 100KHz... Хотя конечно определиться можно только проэкспериментировав...
|
|
|
|
|
Jan 20 2008, 03:46
|

Местный
  
Группа: Свой
Сообщений: 343
Регистрация: 24-01-07
Из: Новосибирск
Пользователь №: 24 714

|
Смею вмешаться Цитата(Сергей Борщ @ Jan 17 2008, 20:13)  AIO Analog Input/output This is the Analog Input/output to/from alternate functions. The signal is connected directly to the pad, and can be used bi-directionally. Цитата(Busel Roman @ Jan 17 2008, 22:14)  SCL, Two-wire Serial Interface Clock: When the TWEN bit in TWCR is set (one) to enable the Two-wire Serial Interface, pin PC5 is disconnected from the port and becomes the Serial Clock I/O pin for the Two-wire Serial Interface. По-моему, все четко и понятно - от порта отключается, но при этом к ноге остается подцепленным
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|