Перейти к содержанию
    

ATmega8. TWI + ADC.

Допускаю, что тема встречалась, но не нашел.

ATmega8 (выбрана, т. к. Tiny мало, Mega>8 много).

Задача: измерить 2-мя каналами ADC и передать по TWI.

Проблема: ADC4, ADC5 "сидят" на SDA, SDL (PC4, PC5).

Вопрос: можно ли одновременно включить TWEN и ADEN, чем будут тогда являться выводы PC4, PC5 (есть ли приоритет)?

Или обязательно идти по длинному пути: включить ADC, измерить - выключить ADC - включить TWI, передать - выключить TWI - и т. д.?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как Вы собираетесь измерять напряжение при подключенном интерфейсе TWI (по линиям SCL и SDA должны стоять подтягивающие резисторы; в свою очередь, работающий TWI будет шунтировать источник измеряемого напряжения)? Можно, конечно, поставить цифровой переключатель, но зачем так все усложнять.

 

Проще использовать для измерения другие входы, например ADC2, ADC3.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проще использовать для измерения другие входы, например ADC2, ADC3.

А если все каналы заняты, то сделать I2C программно на свободных ножках.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как Вы собираетесь измерять напряжение при подключенном интерфейсе TWI (по линиям SCL и SDA должны стоять подтягивающие резисторы; в свою очередь, работающий TWI будет шунтировать источник измеряемого напряжения)? Можно, конечно, поставить цифровой переключатель, но зачем так все усложнять.

 

Проще использовать для измерения другие входы, например ADC2, ADC3.

1) Измерение идет на каналах ADC0 и ADC1.

2) Включается только полностью 6-канальный ADC, а затем выбирается мультиплексором 1 канал. Вопрос в том, можно ли использовать выводы невыбранных каналов как-то еще, или это внесет сбои в измерения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если все каналы заняты, то сделать I2C программно на свободных ножках.
Ребята, а человек не об этом спрашивает ведь.

Обычная нога имеет две функции - собственно нога и какая-то периферия. Эти две ноги имеют три функции. Вниманте, вопрос - чем определяется функция ноги? Понятно, что можно мерить другими ногами, но человек спрашивает - Если он включит TWI, ноги PC4, PC5 переключатся в режим TWI. А если он включит АЦП и начнет мерить ADC0, не переключится ли при этом ADC6 тоже в аналоговый режим?

 

для #VS - можете работать спокойно. Функция ноги определяется периферийным модулем, в данном случае TWI, а АЦП просто подключено параллельно. Т.е. вы можете, теоретически, при помощи АЦП снимать диаграмму работы TWI :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если все каналы заняты, то сделать I2C программно на свободных ножках.

Конечно, вариант, но если есть аппаратный Device, почему бы не использовать.

 

Ребята, а человек не об этом спрашивает ведь.

Обычная нога имеет две функции - собственно нога и какая-то периферия. Эти две ноги имеют три функции. Вниманте, вопрос - чем определяется функция ноги? Понятно, что можно мерить другими ногами, но человек спрашивает - Если он включит TWI, ноги PC4, PC5 переключатся в режим TWI. А если он включит АЦП и начнет мерить ADC0, не переключится ли при этом ADC6 тоже в аналоговый режим?

 

для #VS - можете работать спокойно. Функция ноги определяется периферийным модулем, в данном случае TWI, а АЦП просто подключено параллельно. Т.е. вы можете, теоретически, при помощи АЦП снимать диаграмму работы TWI :)

 

В принципе, было такое подозрение относительно mega8 (раньше работал только с ADSP и PIC).

Большое спасибо Вам и всем принявшим участие в обсуждении.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) Вы не можете одновременно измерять напряжение по нескольких входам.

2) Вы не можете измерять напряжение на работающей шине TWI. Как только Вы устанавливаете бит TWEN, включается модуль TWI и берет на себя управление контактами ввода/вывода.

3) Остается длинный путь: "включить ADC, измерить - выключить ADC - включить TWI, передать - выключить TWI - и т. д."

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как только Вы устанавливаете бит 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Теперь покажите мне место в даташите, где сказано, что при этом вход мультиплексора АЦП отключается от ножки копуса? Когда устанете штудировать, посмотрите картинку 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2) Вы не можете измерять напряжение на работающей шине TWI. Как только Вы устанавливаете бит TWEN, включается модуль TWI и берет на себя управление контактами ввода/вывода.

3) Остается длинный путь: "включить ADC, измерить - выключить ADC - включить TWI, передать - выключить TWI - и т. д."

3.)Ничего выключать не нужно, у меня в прогах работает и ADC и TWI и все одновременно, причем

TWI на скорости 400KHz

 

Если говорить о меге8, у нее в корпусе соик очень удобные ADC6,ADC7 каналы которые вобще

не с чем не пересекаются.

 

2.) Сергей Борщ абсолютно прав, нет никаких проблем в снятии осцилограммы TWI через ADC,

только правда ADC у AVR достаточно тормознутый, и рельно, это можно сделать только на

скоростях TWI ~10KHz

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

только правда ADC у AVR достаточно тормознутый, и рельно, это можно сделать только на

скоростях TWI ~10KHz

Можно поднять такт для АЦП и даже на 400КГц шине получится. Останется только 3-4 бита в результате, но для цифровой шины этого за глаза.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно поднять такт для АЦП и даже на 400КГц шине получится. Останется только 3-4 бита в результате, но для цифровой шины этого за глаза.
ИМХО, на 400КГц я бы даже пробовать не стал...

Вы видимо забыли учесть то что измерительный конденсатор будет подключен к измеряемому

сигналу только 1,5 fADC цикла работы ADC из 13 циклов, в такой ситуации многое будет зависить от

пулапов на шине TWI, конечно при пулапах порядка 1K может чего и получится снять,

но я бы ограничил максимальную(теоритичекси распознаваемую) скорость порядка 100KHz...

Хотя конечно определиться можно только проэкспериментировав...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ИМХО, на 400КГц я бы даже пробовать не стал...

Вы видимо забыли учесть то что измерительный конденсатор будет подключен к измеряемому

....

но я бы ограничил максимальную(теоритичекси распознаваемую) скорость порядка 100KHz...

Хотя конечно определиться можно только проэкспериментировав...

1kb не хватит на то чтобы снять хоть сколько-нибудь вразумительную диаграмму на таких частотах, и тем более что-то с ней сделать :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Смею вмешаться

 

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.

 

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.

 

По-моему, все четко и понятно - от порта отключается, но при этом к ноге остается подцепленным

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Недавно мучался с зависанием аппаратного TWI (I2C) на ATMega168. Обмен простейший с DS1307, зависал с разными статусами TWI.
Программа на прерываниях и событиях, циклов ожидания нигде нет, псевдопараллельная обработка...

Вместе с обменом по TWI работал ADC, который использовал Noise Reduction. Замер ADC начинался после инструкции sleep_cpu();
Автомат TWI зависал если во время обмена происходил замер ADC. Получается, что мастер усыпал во время обмена :)

Пришлось перед замером ADC проверять не ведется ли обмен по TWI, и если ведется то откладывать замер ADC.
После этого все нормализовалось.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...