roboforum.ru

Технический форум по робототехнике.

Аппаратный I2C slave на меге

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Re: Аппаратный I2C slave на меге

Сообщение Michael_K » 07 апр 2010, 01:25

1. Я бы все-таки попробовал поднять частоту проца, потому что там что-то непонятное, судя по этому:
ATmega88 datasheet писал(а):6.The actual low period generated by the ATmega48/88/168 2-wire Serial Interface is (1/fSCL - 2/fCK), thus fCK must be greater than 6 MHz for the low time requirement to be strictly met at fSCL = 100 kHz.
7.The actual low period generated by the ATmega48/88/168 2-wire Serial Interface is (1/fSCL - 2/fCK), thus the low time require-ment will not be strictly met for fSCL > 308 kHz when fCK = 8 MHz. Still, ATmega48/88/168 devices connected to the bus may communicate at full speed (400 kHz) with other ATmega48/88/168 devices, as well as any other device with a proper tLOW acceptance margin.


И этому:
AVRfreaks писал(а):Any AVR with a TWI module:
TWI formula error: This (1/Fscl-2/Fck) formula appears in many data sheets Electrical Characteristics section, Two-wire Serial Interface Characteristics in notes 6 and 7. The formula is supposed to be (1/2*Fscl-2/Fck). The Tlow time period calculations work correctly with the new formula.

For note 6:
ATMEL support wrote:
Fck=6 MHz gives 4.67uS
Fck=7 MHz gives 4.71uS
So the idea was that Fck needed to be higher than 6MHz (or close to 7MHz) to meet these requirements.

BTW, newer versions of some of the above data sheets have already been released and the above errors have still not been fixed. The errors were reported to ATMEL and acknowledged as data sheet errors, but have never been dealt with. I fully intend to remove the above data sheet error information when (if) the data sheets actually get fixed. The initial JTD program example error was first acknowledged by ATMEL on March 10, 2005, has been re-reported and is now over 3 years old and counting Shocked. Now brand new data sheets have copied this same bug again Confused. However, three problems reported in the Attiny24/44/84 data sheet were fixed in less than two weeks. I do not understand what is going wrong at ATMEL, but something very important is badly broken.

И не всегда понятно, в каких режимах какие тайминги применимы...

Кроме того есть разные странные упоминания в разных даташитах, которые _могут_ зависеть от чипа и ревизии:
Например отчет об исправлениях в ATmega32:
TWCR Write Operation Ignored when Immediately Repeated
In ATmega32 consecutive write operations to the TWCR Register work as expected, and there is no need to insert a NOP in between


TWI is Speed Limited in Slave Mode
The speed limit in Slave mode does not apply to ATmega32. In ATmega32, the CPU clock frequency in the slave must be at least 16 times higher than the SCL frequency, as described in the datasheet.

То есть видно, что какие-то проблемы были, раз их пришлось исправлять. В каких кристаллах и каких ревизиях
торчат уши, можно только гадать...

Можно еще почитать AVR316: SMbus Slave Using the TWI Module - там немножко "в сторону", но по сути то же самое.

Вообще, имхо, как реализован I2C в АВР-ках можно описать несколькими словами... и все непечатные.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Аппаратный I2C slave на меге

Сообщение Алексей » 07 апр 2010, 01:42

Michael_K писал(а):1. Я бы все-таки попробовал поднять частоту проца

8 мгц - куда уж выше. Проц - 8L
Алексей
 
Сообщения: 152
Зарегистрирован: 12 дек 2009, 23:44
Откуда: Киев
ФИО: Алексей Диомидов

Re: Аппаратный I2C slave на меге

Сообщение Michael_K » 07 апр 2010, 02:15

Сорри, мне показалось речь про мегагерц шла... :pardon:
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Аппаратный I2C slave на меге

Сообщение Алексей » 08 апр 2010, 10:03

Чайниковский вопрос: какие номиналы резисторов использовать, что бы через звуковуху сигналы на ногах посмотреть программным осциллографом? Поставил делитель 3К3 и 2К2. Подключил между питанием и землей. Все красиво вроде. В центре 1.9В. Перекинул с питания на ногу - напряжение на ноге упало с 2.5 до 0.25В.

Еще. В коде в первом посте пропущена строка (в процессе упрощения кода ее удалил, но потом быстро восстановил):
Код: Выделить всёРазвернуть
  TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN) | (1<<TWIE);
Алексей
 
Сообщения: 152
Зарегистрирован: 12 дек 2009, 23:44
Откуда: Киев
ФИО: Алексей Диомидов

Re: Аппаратный I2C slave на меге

Сообщение Алексей » 09 апр 2010, 22:53

Две рядом стоящие меги соединились. Прога слэйва не менялась. Похоже провода? Из-за дурацкого разъема NXT у меня получилось около 50см и 3 разъема по дороге. Завтра на радиорынке куплю RJ-12 разъем, откушу ему ухо :D и сделаю короткий провод.

PS: а номиналы на делитель никто так и не скажет? Не верится, как-то, что никто тут звуковую карту в качестве осциллографа не использует. :(
Алексей
 
Сообщения: 152
Зарегистрирован: 12 дек 2009, 23:44
Откуда: Киев
ФИО: Алексей Диомидов

Re: Аппаратный I2C slave на меге

Сообщение avr123.nm.ru » 09 апр 2010, 22:59

Не надо делитель - просто резисторы 30-60 ком последовательно. Если защита нужна то после резисторов по паре встресно параллелных 1n4148 включите.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Аппаратный I2C slave на меге

Сообщение Алексей » 10 апр 2010, 08:10

Спасибо. Сегодня попробую.
Алексей
 
Сообщения: 152
Зарегистрирован: 12 дек 2009, 23:44
Откуда: Киев
ФИО: Алексей Диомидов

Re: Аппаратный I2C slave на меге

Сообщение =DeaD= » 10 апр 2010, 08:16

А зачем на i2c делитель? в NXT вроде подтяжка к 3.3В?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Аппаратный I2C slave на меге

Сообщение Алексей » 10 апр 2010, 08:30

Хз. Я в электронике ни бум-бум. :pardon:
Просто во всех найденных описаниях программных осциллографов написано, что нужен делитель. Вот я его и пытался втулить. Теперь спецы сказали, что не нужен - не буду ставить. :) Главное звуковуху не спалить. Ее в ноуте не заменишь.
Алексей
 
Сообщения: 152
Зарегистрирован: 12 дек 2009, 23:44
Откуда: Киев
ФИО: Алексей Диомидов

Re: Аппаратный I2C slave на меге

Сообщение =DeaD= » 10 апр 2010, 09:24

Ой, блин, пропустил посты, вы уже про ввод сигнала в звуковуху :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Аппаратный I2C slave на меге

Сообщение Алексей » 10 апр 2010, 18:12

На коротком, тщательно обжатом кабеле сразу заработало. В общем правильно говорят: электроника - наука о контактах.
avr123.nm.ru писал(а):Не надо делитель - просто резисторы 30-60 ком последовательно. Если защита нужна то после резисторов по паре встречно параллельных 1n4148 включите.

Встречно-параллельно это как? От резистора ко входу в звуковуху (а) или к земле (б)?
osc.PNG
osc.PNG (3.3 КиБ) Просмотров: 1640
Алексей
 
Сообщения: 152
Зарегистрирован: 12 дек 2009, 23:44
Откуда: Киев
ФИО: Алексей Диомидов

Re: Аппаратный I2C slave на меге

Сообщение Romikgy » 10 апр 2010, 19:23

б
die Wahrheit ist irgendwo da draußen
Аватара пользователя
Romikgy
 
Сообщения: 750
Зарегистрирован: 15 ноя 2009, 13:37
Откуда: Porto Franco "Odessa"

Re: Аппаратный I2C slave на меге

Сообщение Scorpio » 13 апр 2010, 02:23

Алексей писал(а):На коротком, тщательно обжатом кабеле сразу заработало. [/attachment]

А без кварца интересно тоже работает?
Аватара пользователя
Scorpio
 
Сообщения: 2683
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: Аппаратный I2C slave на меге

Сообщение Алексей » 15 апр 2010, 22:49

Не знаю. МК перепрошиты под кварц. Какие установки фьюзов у Меги8 для работы без кварца?
Алексей
 
Сообщения: 152
Зарегистрирован: 12 дек 2009, 23:44
Откуда: Киев
ФИО: Алексей Диомидов

Пред.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12